This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via 11d341264a8e051f6970dbe1dbe956bb56e84987 (commit) from 6dfd93bea272e1ed5e917ad9f40406402e1e3f8f (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 11d341264a8e051f6970dbe1dbe956bb56e84987 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Oct 3 00:53:34 2012 +0200
pakfire: Import latest upstream patches.
Fixes the scriptlet execution bug and byte-compiles python files.
-----------------------------------------------------------------------
Summary of changes: pakfire/pakfire.nm | 2 +- pakfire/patches/0005-Fix-caching-scriptlets.patch | 40 +++++ ...-python-Byte-compile-all-files-in-sitelib.patch | 167 ++++++++++++++++++++ 3 files changed, 208 insertions(+), 1 deletions(-) create mode 100644 pakfire/patches/0005-Fix-caching-scriptlets.patch create mode 100644 pakfire/patches/0006-python-Byte-compile-all-files-in-sitelib.patch
Difference in files: diff --git a/pakfire/pakfire.nm b/pakfire/pakfire.nm index 2c679f9..d862b32 100644 --- a/pakfire/pakfire.nm +++ b/pakfire/pakfire.nm @@ -5,7 +5,7 @@
name = pakfire version = 0.9.23 -release = 2 +release = 3
maintainer = Michael Tremer michael.tremer@ipfire.org groups = System/Packaging diff --git a/pakfire/patches/0005-Fix-caching-scriptlets.patch b/pakfire/patches/0005-Fix-caching-scriptlets.patch new file mode 100644 index 0000000..3a60306 --- /dev/null +++ b/pakfire/patches/0005-Fix-caching-scriptlets.patch @@ -0,0 +1,40 @@ +From bd629777539347ab8da89616d6cd724c44c04f5c Mon Sep 17 00:00:00 2001 +From: Michael Tremer michael.tremer@ipfire.org +Date: Tue, 2 Oct 2012 23:11:56 +0200 +Subject: [PATCH 5/6] Fix caching scriptlets. + +Fixes #10117. + +Scriptlets have not been executed when the package has +not been available (i.e. had to be downloaded). +--- + python/pakfire/actions.py | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/python/pakfire/actions.py b/python/pakfire/actions.py +index 9fda261..b8d0fb3 100644 +--- a/python/pakfire/actions.py ++++ b/python/pakfire/actions.py +@@ -140,8 +140,17 @@ class ActionScript(Action): + script_action = None + + def init(self): +- # Load the scriplet. +- self.scriptlet = self.pkg.get_scriptlet(self.script_action) ++ self._scriptlet = None ++ ++ @property ++ def scriptlet(self): ++ """ ++ Load the scriplet. ++ """ ++ if self._scriptlet is None: ++ self._scriptlet = self.pkg.get_scriptlet(self.script_action) ++ ++ return self._scriptlet + + def get_lang(self): + if not self.scriptlet: +-- +1.7.11.4 + diff --git a/pakfire/patches/0006-python-Byte-compile-all-files-in-sitelib.patch b/pakfire/patches/0006-python-Byte-compile-all-files-in-sitelib.patch new file mode 100644 index 0000000..070aa47 --- /dev/null +++ b/pakfire/patches/0006-python-Byte-compile-all-files-in-sitelib.patch @@ -0,0 +1,167 @@ +From e9e430d4fd5b09327f57651726ffac1b7874ae01 Mon Sep 17 00:00:00 2001 +From: Michael Tremer michael.tremer@ipfire.org +Date: Wed, 3 Oct 2012 00:45:11 +0200 +Subject: [PATCH 6/6] python: Byte-compile all files in sitelib. + +For files which are located elsewhere, it is required +to call: + python_bytecompile <path1> <path2>... (Python 2) +or + python3_bytecompile <path1> <path2>... (Python 3) +--- + macros/build.macro | 12 ++++++- + macros/python.macro | 3 ++ + tools/py-compile | 90 +++++++++++++++++++++++++++++------------------------ + 3 files changed, 64 insertions(+), 41 deletions(-) + +diff --git a/macros/build.macro b/macros/build.macro +index 6987068..4e4d830 100644 +--- a/macros/build.macro ++++ b/macros/build.macro +@@ -46,7 +46,17 @@ def MACRO_INSTALL_LOGROTATE_FILES + end + + def MACRO_PYTHON_COMPILE +- # XXX TODO ++ if [ -x "%{python3}" ]; then ++ %{python3_bytecompile} \ ++ %{BUILDROOT}%{python3_sitearch} \ ++ %{BUILDROOT}%{python3_sitelib} ++ fi ++ ++ if [ -x "%{python}" ]; then ++ %{python_bytecompile} \ ++ %{BUILDROOT}%{python_sitearch} \ ++ %{BUILDROOT}%{python_sitelib} ++ fi + end + + MACRO_PERL_CLEANUP +diff --git a/macros/python.macro b/macros/python.macro +index 1b417f2..15c1209 100644 +--- a/macros/python.macro ++++ b/macros/python.macro +@@ -1,7 +1,9 @@ + # A bunch of predefined things for Python. ++python_bytecompile_script = /usr/lib/pakfire/py-compile + + # Python 3 constants. + python3 = /usr/bin/python3 ++python3_bytecompile = %{python_bytecompile_script} --python=%{python3} + + python3_sitearch = %(%{python3} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") + python3_sitelib = %(%{python3} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") +@@ -9,6 +11,7 @@ python3_version = %(%{python3} -c "import sys; sys.stdout.write(sys.version[:3] + + # Python 2 constants. + python = /usr/bin/python2 ++python_bytecompile = %{python_bytecompile_script} --python=%{python} + + python_sitearch = %(%{python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)") + python_sitelib = %(%{python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()") +diff --git a/tools/py-compile b/tools/py-compile +index 66c33ed..5ccd8f9 100755 +--- a/tools/py-compile ++++ b/tools/py-compile +@@ -1,48 +1,58 @@ + #!/bin/sh + +-PYTHON=$(which python 2>/dev/null) ++python_interpreter="python" ++paths="" ++ ++while [ $# -gt 0 ]; do ++ case "${1}" in ++ --python=*) ++ python_interpreter=${1#--python=} ++ ;; ++ *) ++ paths="${paths} ${1}" ++ ;; ++ esac ++ shift ++done + +-if [ -z "${PYTHON}" ]; then +- # Python is not present. Fail silently. +- exit 0 ++if [ -z "${paths}" ]; then ++ echo >&2 "No path specified!" ++ exit 1 + fi + +-files="" +-for i in $*; do +- if [ -e ${i}c ] && [ -e ${i}o ]; then +- continue # all files we want are already there +- fi +- files="$files $i" +-done ++if [ "${python_interpreter:0:1}" != "/" ]; then ++ python_interpreter=$(which ${python_interpreter} 2>/dev/null) ++fi + +-if [ -z "${files}" ]; then +- # No files need to be proceeded. +- exit 0 ++if [ ! -x "${python_interpreter}" ]; then ++ echo >&2 "Python interpreter is not executable: ${python_interpreter}" ++ exit 1 + fi + +-$PYTHON -c " +-import sys, os, string, py_compile +- +-files = '''$files''' +-print 'Byte-compiling python modules...' +-for file in string.split(files): +- if not os.path.exists(file) or not (len(file) >= 3 and file[-3:] == '.py'): +- continue +- print file, +- sys.stdout.flush() +- py_compile.compile(file) +-print" || exit $? +- +-# this will fail for python < 1.5, but that doesn't matter ... +-$PYTHON -O -c " +-import sys, os, string, py_compile +- +-files = '''$files''' +-print 'Byte-compiling python modules (optimised versions) ...' +-for file in string.split(files): +- if not os.path.exists(file) or not (len(file) >= 3 and file[-3:] == '.py'): +- continue +- print file, +- sys.stdout.flush() +- py_compile.compile(file) +-print" 2>/dev/null || : ++tempfile=$(mktemp) ++trap "rm -f ${tempfile}" EXIT ++ ++cat > ${tempfile} <<EOF ++import py_compile ++import sys ++ ++for file in sys.argv[1:]: ++ py_compile.compile(file, doraise=0) ++EOF ++ ++filelist=$(find ${paths} -type f -a -name "*.py") ++ ++# Compile with optimization. ++${python_interpreter} -O ${tempfile} ${filelist} ++ ++# Compile without optimization. ++${python_interpreter} ${tempfile} ${filelist} ++ ++# Hardlink identical files. ++for pyc in $(find ${paths} -type f -a -name "*.pyc"); do ++ pyo="${pyc/.pyc/.pyo}" ++ ++ if cmp -s "${pyc}" "${pyo}"; then ++ ln -f "${pyc}" "${pyo}" ++ fi ++done +-- +1.7.11.4 +
hooks/post-receive -- IPFire 3.x development tree