diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 2d37c230..eb8df723 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -36,13 +36,15 @@ jobs: uses: actions/checkout@v2 - # Install the cosign tool except on PR + # Install the cosign tool (not used on PR, still installed) # https://github.com/sigstore/cosign-installer - name: Install cosign - if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@v1.4.1 + uses: sigstore/cosign-installer@main with: - cosign-release: 'v1.4.1' + cosign-release: 'v2.2.3' + + - name: Check cosign version + run: cosign version # Workaround: https://github.com/docker/build-push-action/issues/461 @@ -88,8 +90,11 @@ jobs: # https://github.com/sigstore/cosign - name: Sign the published Docker image if: ${{ github.event_name != 'pull_request' }} - env: - COSIGN_EXPERIMENTAL: "true" # This step uses the identity token to provision an ephemeral certificate # against the sigstore community Fulcio instance. - run: cosign sign ${{ steps.meta.outputs.tags }}@${{ steps.build-and-push.outputs.digest }} + run: cosign sign --yes ${TAGS} + env: + TAGS: ${{ steps.meta.outputs.tags }} + # should use @${{ steps.build-and-push.outputs.digest }} + # but that leads to "entity not found in registry" + COSIGN_EXPERIMENTAL: "true" diff --git a/Dockerfile b/Dockerfile index ec636e30..405f0ee9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:stable-slim as builder +FROM debian:bookworm-slim AS builder RUN apt-get update \ && apt-get install -y --no-install-recommends \ @@ -9,7 +9,7 @@ FROM debian:stable-slim as builder gawk \ git \ libsqlite3-dev \ - libssl1.1 \ + libssl3 \ libzip-dev \ make \ openssl \ @@ -30,10 +30,11 @@ ARG DYNSIZE=16384 && cd /opt/src/pgloader \ && make DYNSIZE=$DYNSIZE clones save -FROM debian:stable-slim +FROM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ + ca-certificates \ curl \ freetds-dev \ gawk \ @@ -42,6 +43,7 @@ FROM debian:stable-slim make \ sbcl \ unzip \ + && update-ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /opt/src/pgloader/build/bin/pgloader /usr/local/bin diff --git a/Dockerfile.ccl b/Dockerfile.ccl index ce43683b..e885151c 100644 --- a/Dockerfile.ccl +++ b/Dockerfile.ccl @@ -1,4 +1,4 @@ -FROM debian:stable-slim as builder +FROM debian:bookworm-slim as builder RUN apt-get update \ && apt-get install -y --no-install-recommends \ @@ -9,7 +9,7 @@ FROM debian:stable-slim as builder gawk \ git \ libsqlite3-dev \ - libssl1.1 \ + libssl3 \ libzip-dev \ make \ openssl \ @@ -33,7 +33,7 @@ ARG DYNSIZE=256 && cd /opt/src/pgloader \ && make CL=ccl DYNSIZE=$DYNSIZE clones save -FROM debian:stable-slim +FROM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ @@ -41,7 +41,7 @@ FROM debian:stable-slim freetds-dev \ gawk \ libsqlite3-dev \ - libssl1.1 \ + libssl3 \ libzip-dev \ make \ sbcl \ diff --git a/Makefile b/Makefile index c2892fbf..27ed8009 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # pgloader build tool APP_NAME = pgloader -VERSION = 3.6.9 +VERSION = 3.6.10 # use either sbcl or ccl CL = sbcl diff --git a/debian/changelog b/debian/changelog index 758ef6cf..ba93b101 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +pgloader (3.6.10-2) unstable; urgency=medium + + * Limit architectures to those that have sbcl available and working thread + support (notably, this excludes armel and armhf). + + -- Christoph Berg Fri, 22 Mar 2024 14:59:27 +0100 + +pgloader (3.6.10-1) unstable; urgency=medium + + * New upstream version. + * Bump ip4r dependencies to 16. (Closes: #1052837) + + -- Christoph Berg Thu, 02 Nov 2023 17:44:07 +0100 + pgloader (3.6.9-1) unstable; urgency=medium * New upstream version. diff --git a/debian/control b/debian/control index c779966e..3f7da2e7 100644 --- a/debian/control +++ b/debian/control @@ -51,7 +51,7 @@ Build-Depends: gawk, help2man, libsqlite3-dev, - postgresql-15-ip4r | postgresql-ip4r , + postgresql-16-ip4r | postgresql-ip4r , python3-sphinx, python3-sphinx-rtd-theme, sbcl (>= 1.1.13), @@ -62,7 +62,7 @@ Vcs-Git: https://github.com/dimitri/pgloader.git Vcs-Browser: https://github.com/dimitri/pgloader Package: pgloader -Architecture: any +Architecture: amd64 arm64 i386 ppc64el powerpc ppc64 Depends: freetds-dev, ${misc:Depends}, diff --git a/debian/rules b/debian/rules index 37f902e5..d2089c96 100755 --- a/debian/rules +++ b/debian/rules @@ -18,6 +18,8 @@ MAKEFILE_VERSION = $(shell awk '/^VERSION/ { print $$3 }' Makefile) DOC_VERSION = $(shell awk '/^release/ { print $$3 }' docs/conf.py | tr -d "'") SPECFILE_VERSION = $(shell awk '/^Version/ { print $$2 }' pgloader.spec) DEBIAN_VERSION = $(shell dpkg-parsechangelog -SVersion | cut -d- -f 1) +PGLOADER_MAJOR_VERSION = $(shell awk '/^.defparameter .major-version/ { print $$3 }' src/params.lisp | grep -Eo '[0-9.]+') +PGLOADER_MINOR_VERSION = $(shell awk '/^.defparameter .minor-version/ { print $$3 }' src/params.lisp | grep -Eo '[0-9.]+') # buildd provides a build environment where $HOME is not writable, but the # CL compilers here will need to fill-in a per-user cache @@ -30,6 +32,7 @@ override_dh_auto_clean: [ "$(MAKEFILE_VERSION)" = "$(DOC_VERSION)" ] # Makefile = docs/conf.py version [ "$(MAKEFILE_VERSION)" = "$(SPECFILE_VERSION)" ] # Makefile = pgloader.spec version [ "$(MAKEFILE_VERSION)" = "$(DEBIAN_VERSION)" ] # Makefile = debian/changelog version + [ "$(MAKEFILE_VERSION)" = "$(PGLOADER_MAJOR_VERSION).$(PGLOADER_MINOR_VERSION)" ] # Makefile = src/params.lisp version override_dh_auto_build-indep: # do nothing diff --git a/debian/tests/control b/debian/tests/control index cf1c8ce6..f8252d39 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -8,6 +8,6 @@ Restrictions: allow-stderr, needs-root Depends: pgloader, - postgresql-15-ip4r | postgresql-ip4r, + postgresql-16-ip4r | postgresql-ip4r, Tests: testsuite Restrictions: allow-stderr diff --git a/docs/conf.py b/docs/conf.py index f20f2b4f..36a9f5cb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,7 +28,7 @@ author = 'Dimitri Fontaine' version = '3.6' -release = '3.6.9' +release = '3.6.10' # -- General configuration ------------------------------------------------ diff --git a/docs/install.rst b/docs/install.rst index bb4ce1a7..4cd25618 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -61,7 +61,7 @@ __ http://www.quicklisp.org/beta/ When building from sources, you should always build from the current git HEAD as it's basically the only source that is managed in a way to ensure it -builds aginst current set of dependencies versions. +builds against current set of dependencies versions. The build system for pgloader uses a Makefile and the Quicklisp Common Lisp packages distribution system. diff --git a/pgloader.spec b/pgloader.spec index c620f65b..622de029 100644 --- a/pgloader.spec +++ b/pgloader.spec @@ -1,6 +1,6 @@ Summary: extract, transform and load data into PostgreSQL Name: pgloader -Version: 3.6.9 +Version: 3.6.10 Release: 22%{?dist} License: The PostgreSQL Licence Group: System Environment/Base diff --git a/src/params.lisp b/src/params.lisp index 4f8ddaab..eeaef9f6 100644 --- a/src/params.lisp +++ b/src/params.lisp @@ -44,7 +44,7 @@ "non-nil when this build is a release build.") (defparameter *major-version* "3.6") -(defparameter *minor-version* "7") +(defparameter *minor-version* "10") (defun git-hash () "Return the current abbreviated git hash of the development tree." diff --git a/src/parsers/command-db-uri.lisp b/src/parsers/command-db-uri.lisp index edb8190d..1421583f 100644 --- a/src/parsers/command-db-uri.lisp +++ b/src/parsers/command-db-uri.lisp @@ -44,9 +44,6 @@ ;; password looks like '(":" "password") (list :user username :password (cadr password))))) -(defun hexdigit-char-p (character) - (member character #. (quote (coerce "0123456789abcdefABCDEF" 'list)))) - (defrule ipv4-part (and (digit-char-p character) (? (digit-char-p character)) (? (digit-char-p character)))) @@ -55,13 +52,13 @@ (:lambda (ipv4) (list :ipv4 (text ipv4)))) -(defrule ipv6 (and #\[ (+ (or (digit-char-p character) ":")) #\]) +(defrule ipv6 (and #\[ (+ (or (hexdigit-char-p character) ":")) #\]) (:lambda (ipv6) (list :ipv6 (text ipv6)))) -;;; socket directory is unix only, so we can forbid ":" on the parsing +;; socket directory is unix only, so we can forbid ":" on the parsing (defun socket-directory-character-p (char) - (or (member char #.(quote (coerce "/.-_" 'list))) + (or (find char "/.-_") (alphanumericp char))) (defrule socket-directory (and "unix:" diff --git a/src/parsers/command-utils.lisp b/src/parsers/command-utils.lisp index 4ad3a633..a2639a97 100644 --- a/src/parsers/command-utils.lisp +++ b/src/parsers/command-utils.lisp @@ -65,3 +65,7 @@ (defrule comma-separator (and ignore-whitespace #\, ignore-whitespace) (:constant ",")) + +;; Predicates for use in rules can only be called with arity 1. +(defun hexdigit-char-p (character) + (digit-char-p character 16)) diff --git a/src/parsers/parse-pgpass.lisp b/src/parsers/parse-pgpass.lisp index 5f62aba2..84a6d37c 100644 --- a/src/parsers/parse-pgpass.lisp +++ b/src/parsers/parse-pgpass.lisp @@ -15,7 +15,7 @@ (:lambda (c) (second c))) (defrule pgpass-ipv6-hostname (and #\[ - (+ (or (digit-char-p character) ":")) + (+ (or (hexdigit-char-p character) ":")) #\]) (:lambda (ipv6) (text (second ipv6))))