Browse Source

postgres:14.1-alpine-3.20

John 1 year ago
parent
commit
f9aa9fdd91

+ 18 - 16
.github/workflows/postgres.yml

@@ -7,7 +7,7 @@ on:
   workflow_dispatch:
 
 env:
-  ALPINE_VER: 3.18
+  ALPINE_VER: 3.20
 
 jobs:
   job1:
@@ -15,24 +15,26 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
 
       - name: download postgres src
         run: |
           sudo apt-get update
           sudo apt-get install  git
           git clone https://github.com/docker-library/postgres.git
-          sed -i 's/coreutils/coreutils patch/g' postgres/14/alpine3.18/Dockerfile
-          sed -i 's/^ENV.*PG_VERSION.*/ENV PG_VERSION 14.1/g' postgres/14/alpine3.18/Dockerfile
-          sed -i 's/^ENV.*PG_SHA256.*/ENV PG_SHA256 4d3c101ea7ae38982f06bdc73758b53727fb6402ecd9382006fa5ecc7c2ca41f/g' postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < postgresql.git-99e4d24a9d77e7bb87e15b318e96dc36651a7da2.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/postgresql.git-99e4d24a9d77e7bb87e15b318e96dc36651a7da2.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < v1-0001-WIP-jit-LLVM-15-Minimal-changes.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/v1-0001-WIP-jit-LLVM-15-Minimal-changes.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < postgresql.git-0052fb489008a68d0f3e0445f52e1ab3166632a4.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/postgresql.git-0052fb489008a68d0f3e0445f52e1ab3166632a4.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < llvm14-support.patch; \\ '  postgres/14/alpine3.18/Dockerfile
-          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/llvm14-support.patch; \\ '  postgres/14/alpine3.18/Dockerfile
+          sed -i 's/coreutils/coreutils patch/g' postgres/14/alpine3.20/Dockerfile
+          sed -i 's/^ENV.*PG_VERSION.*/ENV PG_VERSION 14.1/g' postgres/14/alpine3.20/Dockerfile
+          sed -i 's/^ENV.*PG_SHA256.*/ENV PG_SHA256 4d3c101ea7ae38982f06bdc73758b53727fb6402ecd9382006fa5ecc7c2ca41f/g' postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < postgresql.git-99e4d24a9d77e7bb87e15b318e96dc36651a7da2.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/postgresql.git-99e4d24a9d77e7bb87e15b318e96dc36651a7da2.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < v1-0001-WIP-jit-LLVM-15-Minimal-changes.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/v1-0001-WIP-jit-LLVM-15-Minimal-changes.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < postgresql.git-0052fb489008a68d0f3e0445f52e1ab3166632a4.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/postgresql.git-0052fb489008a68d0f3e0445f52e1ab3166632a4.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < llvm14-support.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/llvm14-support.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ patch -p1 < 0001-Replace-uses-of-deprecated-Python-module-distutils.s.patch; \\ '  postgres/14/alpine3.20/Dockerfile
+          sed -i '/cd \/usr\/src\/postgresql; \\/a\\ \ \ \ wget https://raw.githubusercontent.com/gshang2017/docker/master/tt-rss-plugins/postgresql/patches/0001-Replace-uses-of-deprecated-Python-module-distutils.s.patch; \\ '  postgres/14/alpine3.20/Dockerfile
 
       - name: Set up QEMU
         id: qemu
@@ -54,10 +56,10 @@ jobs:
           password: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Build and push
-        uses: docker/build-push-action@v2
+        uses: docker/build-push-action@v3
         with:
-          context: ./postgres/14/alpine3.18
-          file: ./postgres/14/alpine3.18/Dockerfile
+          context: ./postgres/14/alpine3.20
+          file: ./postgres/14/alpine3.20/Dockerfile
           platforms: linux/amd64,linux/arm64,linux/arm/v7
           push: true
           tags: |

+ 195 - 0
tt-rss-plugins/postgresql/patches/0001-Replace-uses-of-deprecated-Python-module-distutils.s.patch

@@ -0,0 +1,195 @@
+From fcfd4f1702f0cef7d0f6564aff94c4a6258f24e6 Mon Sep 17 00:00:00 2001
+From: Peter Eisentraut <[email protected]>
+Date: Thu, 2 Dec 2021 08:08:44 +0100
+Subject: [PATCH] Replace uses of deprecated Python module distutils.sysconfig
+
+With Python 3.10, configure spits out warnings about the module
+distutils.sysconfig being deprecated and scheduled for removal in
+Python 3.12.  Change the uses in configure to use the module sysconfig
+instead.  The logic stays the same.
+
+Note that sysconfig exists since Python 2.7, so this moves the minimum
+required version up from Python 2.6.
+---
+ config/python.m4               | 28 ++++++++++++++--------------
+ configure                      | 30 +++++++++++++++---------------
+ doc/src/sgml/installation.sgml |  4 ++--
+ 3 files changed, 31 insertions(+), 31 deletions(-)
+
+diff --git a/config/python.m4 b/config/python.m4
+index d41aeb2876..8ca1eaa64b 100644
+--- a/config/python.m4
++++ b/config/python.m4
+@@ -37,28 +37,28 @@ python_majorversion=`echo "$python_fullversion" | sed '[s/^\([0-9]*\).*/\1/]'`
+ python_minorversion=`echo "$python_fullversion" | sed '[s/^[0-9]*\.\([0-9]*\).*/\1/]'`
+ python_version=`echo "$python_fullversion" | sed '[s/^\([0-9]*\.[0-9]*\).*/\1/]'`
+ # Reject unsupported Python versions as soon as practical.
+-if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 6; then
+-  AC_MSG_ERROR([Python version $python_version is too old (version 2.6 or later is required)])
++if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then
++  AC_MSG_ERROR([Python version $python_version is too old (version 2.7 or later is required)])
+ fi
+ 
+-AC_MSG_CHECKING([for Python distutils module])
+-if "${PYTHON}" -c 'import distutils' 2>&AS_MESSAGE_LOG_FD
++AC_MSG_CHECKING([for Python sysconfig module])
++if "${PYTHON}" -c 'import sysconfig' 2>&AS_MESSAGE_LOG_FD
+ then
+     AC_MSG_RESULT(yes)
+ else
+     AC_MSG_RESULT(no)
+-    AC_MSG_ERROR([distutils module not found])
++    AC_MSG_ERROR([sysconfig module not found])
+ fi
+ 
+ AC_MSG_CHECKING([Python configuration directory])
+-python_configdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"`
++python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"`
+ AC_MSG_RESULT([$python_configdir])
+ 
+ AC_MSG_CHECKING([Python include directories])
+ python_includespec=`${PYTHON} -c "
+-import distutils.sysconfig
+-a = '-I' + distutils.sysconfig.get_python_inc(False)
+-b = '-I' + distutils.sysconfig.get_python_inc(True)
++import sysconfig
++a = '-I' + sysconfig.get_path('include')
++b = '-I' + sysconfig.get_path('platinclude')
+ if a == b:
+     print(a)
+ else:
+@@ -96,8 +96,8 @@ AC_DEFUN([PGAC_CHECK_PYTHON_EMBED_SETUP],
+ [AC_REQUIRE([_PGAC_CHECK_PYTHON_DIRS])
+ AC_MSG_CHECKING([how to link an embedded Python application])
+ 
+-python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"`
+-python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"`
++python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"`
++python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"`
+ 
+ # If LDLIBRARY exists and has a shlib extension, use it verbatim.
+ ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'`
+@@ -109,11 +109,11 @@ else
+ 	# Otherwise, guess the base name of the shlib.
+ 	# LDVERSION was added in Python 3.2, before that use VERSION,
+ 	# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
+-	python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
++	python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"`
+ 	if test x"${python_ldversion}" != x""; then
+ 		ldlibrary="python${python_ldversion}"
+ 	else
+-		python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
++		python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"`
+ 		if test x"${python_version_var}" != x""; then
+ 			ldlibrary="python${python_version_var}"
+ 		else
+@@ -173,7 +173,7 @@ PL/Python.])
+ fi
+ python_libspec="-L${python_libdir} -l${ldlibrary}"
+ 
+-python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
++python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
+ 
+ AC_MSG_RESULT([${python_libspec} ${python_additional_libs}])
+ 
+diff --git a/configure b/configure
+index 5d72ee3fde..ac61ad8ad0 100755
+--- a/configure
++++ b/configure
+@@ -10345,34 +10345,34 @@ python_majorversion=`echo "$python_fullversion" | sed 's/^\([0-9]*\).*/\1/'`
+ python_minorversion=`echo "$python_fullversion" | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`
+ python_version=`echo "$python_fullversion" | sed 's/^\([0-9]*\.[0-9]*\).*/\1/'`
+ # Reject unsupported Python versions as soon as practical.
+-if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 6; then
+-  as_fn_error $? "Python version $python_version is too old (version 2.6 or later is required)" "$LINENO" 5
++if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then
++  as_fn_error $? "Python version $python_version is too old (version 2.7 or later is required)" "$LINENO" 5
+ fi
+ 
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python distutils module" >&5
+-$as_echo_n "checking for Python distutils module... " >&6; }
+-if "${PYTHON}" -c 'import distutils' 2>&5
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python sysconfig module" >&5
++$as_echo_n "checking for Python sysconfig module... " >&6; }
++if "${PYTHON}" -c 'import sysconfig' 2>&5
+ then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+-    as_fn_error $? "distutils module not found" "$LINENO" 5
++    as_fn_error $? "sysconfig module not found" "$LINENO" 5
+ fi
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python configuration directory" >&5
+ $as_echo_n "checking Python configuration directory... " >&6; }
+-python_configdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"`
++python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_configdir" >&5
+ $as_echo "$python_configdir" >&6; }
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python include directories" >&5
+ $as_echo_n "checking Python include directories... " >&6; }
+ python_includespec=`${PYTHON} -c "
+-import distutils.sysconfig
+-a = '-I' + distutils.sysconfig.get_python_inc(False)
+-b = '-I' + distutils.sysconfig.get_python_inc(True)
++import sysconfig
++a = '-I' + sysconfig.get_path('include')
++b = '-I' + sysconfig.get_path('platinclude')
+ if a == b:
+     print(a)
+ else:
+@@ -10388,8 +10388,8 @@ $as_echo "$python_includespec" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link an embedded Python application" >&5
+ $as_echo_n "checking how to link an embedded Python application... " >&6; }
+ 
+-python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"`
+-python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"`
++python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"`
++python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"`
+ 
+ # If LDLIBRARY exists and has a shlib extension, use it verbatim.
+ ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'`
+@@ -10401,11 +10401,11 @@ else
+ 	# Otherwise, guess the base name of the shlib.
+ 	# LDVERSION was added in Python 3.2, before that use VERSION,
+ 	# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
+-	python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
++	python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"`
+ 	if test x"${python_ldversion}" != x""; then
+ 		ldlibrary="python${python_ldversion}"
+ 	else
+-		python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
++		python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"`
+ 		if test x"${python_version_var}" != x""; then
+ 			ldlibrary="python${python_version_var}"
+ 		else
+@@ -10465,7 +10465,7 @@ PL/Python." "$LINENO" 5
+ fi
+ python_libspec="-L${python_libdir} -l${ldlibrary}"
+ 
+-python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
++python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${python_libspec} ${python_additional_libs}" >&5
+ $as_echo "${python_libspec} ${python_additional_libs}" >&6; }
+diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
+index d38f9bc916..a449719fd3 100644
+--- a/doc/src/sgml/installation.sgml
++++ b/doc/src/sgml/installation.sgml
+@@ -195,8 +195,8 @@ <title>Requirements</title>
+       To build the <application>PL/Python</application> server programming
+       language, you need a <productname>Python</productname>
+       installation with the header files and
+-      the <application>distutils</application> module.  The minimum
+-      required version is <productname>Python</productname> 2.6.
++      the <application>sysconfig</application> module.  The minimum
++      required version is <productname>Python</productname> 2.7.
+       <productname>Python 3</productname> is supported if it's
+       version 3.1 or later; but see
+       <xref linkend="plpython-python23"/>
+-- 
+2.34.1
+