changeset 52958:32c655372dab

packaging: fix docker rpms with python3 included
author Mathias De Mare <mathias.de_mare@nokia.com>
date Mon, 03 Feb 2025 16:28:30 +0100
parents 5b0b896b9d20
children ac2edac78243
files contrib/packaging/Makefile contrib/packaging/docker/rhel8 contrib/packaging/mercurial.spec
diffstat 3 files changed, 29 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/packaging/Makefile	Tue Feb 04 13:10:41 2025 +0100
+++ b/contrib/packaging/Makefile	Mon Feb 03 16:28:30 2025 +0100
@@ -19,7 +19,7 @@
   9
 
 # Build a Python for these RHEL (and derivatives) releases.
-RHEL_WITH_PYTHON_RELEASES :=
+RHEL_WITH_PYTHON_RELEASES := 8
 RHEL_WITH_NONVERSIONED_PYTHON :=
 RHEL_WITH_36_DOCUTILS := 7
 
--- a/contrib/packaging/docker/rhel8	Tue Feb 04 13:10:41 2025 +0100
+++ b/contrib/packaging/docker/rhel8	Mon Feb 03 16:28:30 2025 +0100
@@ -4,12 +4,19 @@
     useradd -u %UID% -g %GID% -s /bin/bash -d /build -m build
 
 RUN yum install -y \
+	bzip2-devel \
 	gcc \
 	gettext \
+	libffi-devel \
 	make \
+	ncurses-devel \
+	openssl-devel \
 	python3-devel \
 	python3-docutils \
-	rpm-build
+	readline-devel \
+	rpm-build \
+	sqlite-devel \
+	zlib-devel
 
 # For creating repo meta data
 RUN yum install -y createrepo
--- a/contrib/packaging/mercurial.spec	Tue Feb 04 13:10:41 2025 +0100
+++ b/contrib/packaging/mercurial.spec	Mon Feb 03 16:28:30 2025 +0100
@@ -6,7 +6,6 @@
 %global pythondocutils python3-docutils
 
 %if "%{?withpython}"
-
 %global pythonver %{withpython}
 %global pythonname Python-%{withpython}
 %global docutilsname docutils-0.21.2
@@ -17,7 +16,6 @@
 %global _python_bytecompile_errors_terminate_build 0
 
 %else
-
 %global pythonver %(%{pythonexe} -c 'import sys;print(".".join(map(str, sys.version_info[:2])))')
 
 %endif
@@ -66,27 +64,37 @@
 %if "%{?withpython}"
 
 PYPATH=$PWD/%{pythonname}
+PYTHON_FULLPATH=$PYPATH/python3
 cd $PYPATH
-./configure --prefix=%{hgpyprefix}
+./configure --prefix=%{hgpyprefix} --with-ensurepip=install
 make all %{?_smp_mflags}
+# add a symlink and only refer to python3 from here on
+ln -s python python3
+# remove python reference
+sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python3|' Lib/encodings/rot_13.py
+$PYTHON_FULLPATH -m ensurepip --default-pip
+$PYTHON_FULLPATH -m pip install setuptools setuptools-scm
 cd -
 
 cd %{docutilsname}
-LD_LIBRARY_PATH=$PYPATH $PYPATH/python setup.py build
+$PYTHON_FULLPATH -m pip install .
 cd -
 
 # verify Python environment
-LD_LIBRARY_PATH=$PYPATH PYTHONPATH=$PWD/%{docutilsname} $PYPATH/python -c 'import sys, zlib, bz2, ssl, curses, readline'
+LD_LIBRARY_PATH=$PYPATH PYTHONPATH=$PWD/%{docutilsname} $PYTHON_FULLPATH -c 'import sys, zlib, bz2, ssl, curses, readline'
+LD_LIBRARY_PATH=$PYPATH PYTHONPATH=$PWD/%{docutilsname} $PYTHON_FULLPATH -c "import ssl; print(ssl.HAS_TLSv1_2)"
 
 # set environment for make
 export PATH=$PYPATH:$PATH
 export LD_LIBRARY_PATH=$PYPATH
 export CFLAGS="-L $PYPATH"
 export PYTHONPATH=$PWD/%{docutilsname}
-
+%else
+PYTHON_FULLPATH=$(which python3)
 %endif
 
-make all PYTHON=%{pythonexe}
+make all PYTHON=$PYTHON_FULLPATH
+
 make -C contrib/chg
 
 sed -i -e '1s|#!/usr/bin/env python3$|#!/usr/bin/env %{pythonexe}|' contrib/hg-ssh
@@ -99,6 +107,7 @@
 %if "%{?withpython}"
 
 PYPATH=$PWD/%{pythonname}
+PYTHON_FULLPATH=$PYPATH/python3
 cd $PYPATH
 make install DESTDIR=$RPM_BUILD_ROOT
 # these .a are not necessary and they are readonly and strip fails - kill them!
@@ -106,17 +115,17 @@
 cd -
 
 cd %{docutilsname}
-LD_LIBRARY_PATH=$PYPATH $PYPATH/python setup.py install --root="$RPM_BUILD_ROOT"
+$PYTHON_FULLPATH -m pip install . --root="$RPM_BUILD_ROOT"
 cd -
 
-PATH=$PYPATH:$PATH LD_LIBRARY_PATH=$PYPATH make install PYTHON=%{pythonexe} DESTDIR=$RPM_BUILD_ROOT PREFIX=%{hgpyprefix} MANDIR=%{_mandir} PURE="--rust"
+PATH=$PYPATH:$PATH LD_LIBRARY_PATH=$PYPATH make install PYTHON=$PYTHON_FULLPATH DESTDIR=$RPM_BUILD_ROOT PREFIX=$RPM_BUILD_ROOT/%{hgpyprefix} MANDIR=%{_mandir} PURE="--rust"
 mkdir -p $RPM_BUILD_ROOT%{_bindir}
 ( cd $RPM_BUILD_ROOT%{_bindir}/ && ln -s ../..%{hgpyprefix}/bin/hg . )
 ( cd $RPM_BUILD_ROOT%{_bindir}/ && ln -s ../..%{hgpyprefix}/bin/python2.? %{pythonhg} )
 
 %else
-
-make install PYTHON=%{pythonexe} DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} MANDIR=%{_mandir} PURE="--rust"
+PYTHON_FULLPATH=$(which python3)
+make install PYTHON=$PYTHON_FULLPATH DESTDIR=$RPM_BUILD_ROOT PREFIX=$RPM_BUILD_ROOT/%{_prefix} MANDIR=%{_mandir} PURE="--rust"
 
 %endif
 
@@ -138,12 +147,6 @@
 %doc CONTRIBUTORS COPYING doc/README doc/hg*.txt doc/hg*.html *.cgi contrib/*.fcgi contrib/*.wsgi
 %doc %attr(644,root,root) %{_mandir}/man?/hg*
 %doc %attr(644,root,root) contrib/*.svg
-%dir %{_datadir}/bash-completion/
-%dir %{_datadir}/bash-completion/completions
-%{_datadir}/bash-completion/completions/hg
-%dir %{_datadir}/zsh/
-%dir %{_datadir}/zsh/site-functions/
-%{_datadir}/zsh/site-functions/_hg
 %dir %{_datadir}/emacs/site-lisp/
 %{_datadir}/emacs/site-lisp/mercurial.el
 %{_datadir}/emacs/site-lisp/mq.el