summaryrefslogtreecommitdiff
path: root/still-in-use-of-python-scripts-from-old-version.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-09-18 07:05:42 +0000
committerCoprDistGit <infra@openeuler.org>2024-09-18 07:05:42 +0000
commit4ad1d692311b38472d44f5deb9c32634b334ed4d (patch)
tree3e004676c8e07b495fdeda7291033d0fde73d783 /still-in-use-of-python-scripts-from-old-version.patch
parente248808867f90830a43b5ca5d192bef9dd2edec2 (diff)
automatic import of rpm
Diffstat (limited to 'still-in-use-of-python-scripts-from-old-version.patch')
-rw-r--r--still-in-use-of-python-scripts-from-old-version.patch210
1 files changed, 210 insertions, 0 deletions
diff --git a/still-in-use-of-python-scripts-from-old-version.patch b/still-in-use-of-python-scripts-from-old-version.patch
new file mode 100644
index 0000000..50fdb6f
--- /dev/null
+++ b/still-in-use-of-python-scripts-from-old-version.patch
@@ -0,0 +1,210 @@
+From 4ec83c32024a8faf0a66a4275acbcd15751ee303 Mon Sep 17 00:00:00 2001
+From: renhongxun <renhongxun@huawei.com>
+Date: Wed, 29 Dec 2021 16:37:45 +0800
+Subject: [PATCH] still in use of python scripts from old version
+
+---
+ platform.in | 3 ++
+ scripts/Makefile.am | 8 +--
+ scripts/brp-python-bytecompile | 112 +++++++++++++++++++++++++++++++++++++++++
+ scripts/brp-python-hardlink | 25 +++++++++
+ 4 files changed, 144 insertions(+), 4 deletions(-)
+ create mode 100644 scripts/brp-python-bytecompile
+ create mode 100755 scripts/brp-python-hardlink
+
+diff --git a/platform.in b/platform.in
+index 71496b8..748186e 100644
+--- a/platform.in
++++ b/platform.in
+@@ -82,10 +82,13 @@
+ #
+
+ %__arch_install_post @ARCH_INSTALL_POST@
++%_python_bytecompile_errors_terminate_build 0
++%_python_bytecompile_extra 1
+
+ # Standard brp-macro naming:
+ # convert all '-' in basename to '_', add two leading underscores.
+ %__brp_compress %{_rpmconfigdir}/brp-compress %{?_prefix}
++%__brp_python_bytecompile %{_rpmconfigdir}/brp-python-bytecompile "" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
+ %__brp_strip %{_rpmconfigdir}/brp-strip %{__strip}
+ %__brp_strip_comment_note %{_rpmconfigdir}/brp-strip-comment-note %{__strip} %{__objdump}
+ %__brp_strip_static_archive %{_rpmconfigdir}/brp-strip-static-archive %{__strip}
+diff --git a/scripts/Makefile.am b/scripts/Makefile.am
+index 4aed76b..5a1c494 100644
+--- a/scripts/Makefile.am
++++ b/scripts/Makefile.am
+@@ -6,8 +6,8 @@ AM_CFLAGS = @RPMCFLAGS@
+ CLEANFILES =
+
+ EXTRA_DIST = \
+- brp-compress \
+- brp-strip brp-strip-comment-note \
++ brp-compress brp-python-bytecompile \
++ brp-strip brp-strip-comment-note brp-python-hardlink \
+ brp-strip-static-archive brp-elfperms \
+ brp-remove-la-files \
+ check-files check-prereqs \
+@@ -23,8 +23,8 @@ EXTRA_DIST = \
+ fontconfig.prov script.req
+
+ rpmconfig_SCRIPTS = \
+- brp-compress \
+- brp-strip brp-strip-comment-note \
++ brp-compress brp-python-bytecompile \
++ brp-strip brp-strip-comment-note brp-python-hardlink \
+ brp-strip-static-archive brp-elfperms \
+ brp-remove-la-files \
+ check-files check-prereqs \
+diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile
+new file mode 100644
+index 0000000..d9c4832
+--- /dev/null
++++ b/scripts/brp-python-bytecompile
+@@ -0,0 +1,112 @@
++#!/bin/bash
++errors_terminate=$2
++extra=$3
++
++# If using normal root, avoid changing anything.
++if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
++ exit 0
++fi
++
++# Figure out how deep we need to descend. We could pick an insanely high
++# number and hope it's enough, but somewhere, somebody's sure to run into it.
++depth=`(find "$RPM_BUILD_ROOT" -type f -name "*.py" -print0 ; echo /) | \
++ xargs -0 -n 1 dirname | sed 's,[^/],,g' | sort -u | tail -n 1 | wc -c`
++if [ -z "$depth" ] || [ "$depth" -le "1" ]; then
++ exit 0
++fi
++
++function python_bytecompile()
++{
++ local options=$1
++ local python_binary=$2
++ local exclude=$3
++ local python_libdir=$4
++ local depth=$5
++ local real_libdir=$6
++
++cat << EOF | $python_binary $options
++import compileall, sys, os, re
++
++python_libdir = "$python_libdir"
++depth = $depth
++real_libdir = "$real_libdir"
++build_root = "$RPM_BUILD_ROOT"
++exclude = r"$exclude"
++
++class Filter:
++ def search(self, path):
++ ret = not os.path.realpath(path).startswith(build_root)
++ if exclude:
++ ret = ret or re.search(exclude, path)
++ return ret
++
++sys.exit(not compileall.compile_dir(python_libdir, depth, real_libdir, force=1, rx=Filter(), quiet=1))
++EOF
++}
++
++# .pyc/.pyo files embed a "magic" value, identifying the ABI version of Python
++# bytecode that they are for.
++#
++# The files below RPM_BUILD_ROOT could be targeting multiple versions of
++# python (e.g. a single build that emits several subpackages e.g. a
++# python26-foo subpackage, a python31-foo subpackage etc)
++#
++# Support this by assuming that below each /usr/lib/python$VERSION/, all
++# .pyc/.pyo files are to be compiled for /usr/bin/python$VERSION.
++#
++# For example, below /usr/lib/python2.6/, we're targeting /usr/bin/python2.6
++# and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1
++
++shopt -s nullglob
++for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/python[0-9]\.([0-9]$|[0-9]{2}$)"`;
++do
++ python_binary=/usr/bin/$(basename $python_libdir)
++ real_libdir=${python_libdir/$RPM_BUILD_ROOT/}
++ echo "Bytecompiling .py files below $python_libdir using $python_binary"
++
++ # Generate normal (.pyc) byte-compiled files.
++ python_bytecompile "" "$python_binary" "" "$python_libdir" "$depth" "$real_libdir"
++ if [ $? -ne 0 ] && [ 0$errors_terminate -ne 0 ]; then
++ # One or more of the files had a syntax error
++ exit 1
++ fi
++
++ # Generate optimized (.pyo) byte-compiled files.
++ python_bytecompile "-O" "$python_binary" "" "$python_libdir" "$depth" "$real_libdir"
++ if [ $? -ne 0 ] && [ 0$errors_terminate -ne 0 ]; then
++ # One or more of the files had a syntax error
++ exit 1
++ fi
++done
++
++
++# Handle other locations in the filesystem using the default python implementation
++# if extra is set to 0, don't do this
++if [ 0$extra -eq 0 ]; then
++ exit 0
++fi
++
++# If we don't have a default python interpreter, we cannot proceed
++default_python=${1:-/usr/bin/python}
++if [ ! -x "$default_python" ]; then
++ exit 0
++fi
++
++# Figure out if there are files to be bytecompiled with the default_python at all
++# this prevents unnecessary default_python invocation
++find "$RPM_BUILD_ROOT" -type f -name "*.py" | grep -Ev "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" || exit 0
++
++# Generate normal (.pyc) byte-compiled files.
++python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
++if [ $? -ne 0 ] && [ 0$errors_terminate -ne 0 ]; then
++ # One or more of the files had a syntax error
++ exit 1
++fi
++
++# Generate optimized (.pyo) byte-compiled files.
++python_bytecompile "-O" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
++if [ $? -ne 0 ] && [ 0$errors_terminate -ne 0 ]; then
++ # One or more of the files had a syntax error
++ exit 1
++fi
++exit 0
+diff --git a/scripts/brp-python-hardlink b/scripts/brp-python-hardlink
+new file mode 100755
+index 0000000..5fd1b43
+--- /dev/null
++++ b/scripts/brp-python-hardlink
+@@ -0,0 +1,25 @@
++#!/bin/sh
++
++# If using normal root, avoid changing anything.
++if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
++ exit 0
++fi
++
++hardlink_if_same() {
++ if cmp -s "$1" "$2" ; then
++ ln -f "$1" "$2"
++ return 0
++ fi
++ return 1
++}
++
++# Hardlink identical *.pyc, *.pyo, and *.opt-[12].pyc.
++# Originally from PLD's rpm-build-macros
++find "$RPM_BUILD_ROOT" -type f -name "*.pyc" -not -name "*.opt-[12].pyc" | while read pyc ; do
++ hardlink_if_same "$pyc" "${pyc%c}o"
++ o1pyc="${pyc%pyc}opt-1.pyc"
++ hardlink_if_same "$pyc" "$o1pyc"
++ o2pyc="${pyc%pyc}opt-2.pyc"
++ hardlink_if_same "$pyc" "$o2pyc" || hardlink_if_same "$o1pyc" "$o2pyc"
++done
++exit 0
+--
+1.8.3.1
+