mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-18 03:23:37 +08:00
The installation metadata has been refactored: - The installation metadata store now takes Datums of any type as input and output - Move metadata functions from uuid.c -> metadata.c - Make metadata functions return native types rather than text, including for tests Telemetry tests for ssl and nossl have been combined. Note that PG 9.6 does not have pg_backend_random() that gives us a secure random numbers for UUIDs that we send in telemetry. Therefore, we fall back to the generating the UUID from the timestamp if we are on PG 9.6. This change also fixes a number of test issues. For instance, in the telemetry test the escape char `E` was passed on as part of the response string when set as a variable with `\set`. This was not detected before because the response parser didn't parse the start of the response properly. A number of fixes have been made to the formatting of log messages for telemetry to conform to the PostgreSQL standard as well as being consistent with other messages. Numerous build issues on Windows have been resolved. There is also new functionality to get OS version info on Windows (for telemetry), including a SQL function get_os_info() to retrieve this information. The net library will now allow connecting to a servicename, e.g., http or https. A port is resolved from this service name via getaddrinfo(). An explicit port can still be given, and it that case it will not resolve the service name. Databases the are updated to the new version of the extension will have an install_timestamp in their installation metadata that does not reflect the actual original install date of the extension. To be able to distinguish these updated installations from those that are freshly installed, we add a bogus "epoch" install_timestamp in the update script. Parsing of the version string in the telemetry response has been refactored to be more amenable to testing. Tests have been added.
44 lines
2.3 KiB
Bash
Executable File
44 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script builds a development TimescaleDB image from the
|
|
# currently checked out source on the host.
|
|
#
|
|
SCRIPT_DIR=$(dirname $0)
|
|
BASE_DIR=${PWD}/${SCRIPT_DIR}/..
|
|
PG_VERSION=${PG_VERSION:-10.0}
|
|
PG_IMAGE_TAG=${PG_IMAGE_TAG:-${PG_VERSION}-alpine}
|
|
BUILD_CONTAINER_NAME=${BUILD_CONTAINER_NAME:-pgbuild}
|
|
BUILD_IMAGE_NAME=${BUILD_IMAGE_NAME:-$USER/pgbuild}
|
|
IMAGE_NAME=${IMAGE_NAME:-$USER/timescaledb}
|
|
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD ${BASE_DIR} | awk '{print $1; exit}' | sed -e "s|/|_|g")
|
|
TAG_NAME=${TAG_NAME:-$GIT_BRANCH}
|
|
|
|
# Clean previous containers
|
|
docker rm -f $(docker ps -a -q -f name=${BUILD_CONTAINER_NAME} 2>/dev/null) 2>/dev/null
|
|
|
|
if docker image ls -f "reference=${BUILD_IMAGE_NAME}:${PG_IMAGE_TAG}" | grep "$BUILD_IMAGE_NAME" 2>/dev/null; then
|
|
echo "Using existing build image ${BUILD_IMAGE_NAME}:${PG_IMAGE_TAG}"
|
|
docker run -d --name ${BUILD_CONTAINER_NAME} -v ${BASE_DIR}:/src ${BUILD_IMAGE_NAME}:${PG_IMAGE_TAG}
|
|
else
|
|
echo "Creating new build image ${BUILD_IMAGE_NAME}:${PG_IMAGE_TAG}"
|
|
# Run a Postgres container
|
|
docker run -d --name ${BUILD_CONTAINER_NAME} -v ${BASE_DIR}:/src postgres:${PG_IMAGE_TAG}
|
|
|
|
# Install build dependencies
|
|
docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "apk add --no-cache --virtual .build-deps gdb git coreutils dpkg-dev gcc libc-dev make cmake util-linux-dev diffutils openssl-dev && mkdir -p /build/debug"
|
|
|
|
docker commit -a $USER -m "TimescaleDB build base image version $PG_IMAGE_TAG" ${BUILD_CONTAINER_NAME} ${BUILD_IMAGE_NAME}:${PG_IMAGE_TAG}
|
|
fi
|
|
|
|
# Build and install the extension with debug symbols and assertions
|
|
docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "cp -a /src/{src,sql,test,scripts,version.config,CMakeLists.txt,timescaledb.control.in} /build/ && cd build/debug && cmake -DCMAKE_BUILD_TYPE=Debug .. && make && make install && echo \"shared_preload_libraries = 'timescaledb'\" >> /usr/local/share/postgresql/postgresql.conf.sample && cd / && rm -rf /build"
|
|
|
|
docker commit -a $USER -m "TimescaleDB development image" ${BUILD_CONTAINER_NAME} ${IMAGE_NAME}:${TAG_NAME}
|
|
|
|
# Clean build containers
|
|
docker rm -f ${BUILD_CONTAINER_NAME}
|
|
|
|
echo
|
|
echo "Built image ${IMAGE_NAME}:${TAG_NAME}"
|
|
echo "Run 'docker run -d --name some-timescaledb -p 5432:5432 ${IMAGE_NAME}:${TAG_NAME}' to launch"
|