[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Allow py-compile to ignore DESTDIR
From: |
Alexandre Duret-Lutz |
Subject: |
Re: Allow py-compile to ignore DESTDIR |
Date: |
Sun, 05 Dec 2004 17:12:19 +0100 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux) |
Thank you. I'm checking this in as follows on HEAD and branch-1-9.
2004-11-15 Toshio Kuratomi <address@hidden>
* lib/py-compile: Add --destdir switch to py-compile that takes a
path argument that is not compiled into the file when byte compiling.
* lib/am/python.am: Use the new py-compile arguments to not include
DESTDIR in the byte compiled files.
* tests/python12.test: Test that DESTDIR won't be byte compiled into
python files.
Index: THANKS
===================================================================
RCS file: /cvs/automake/automake/THANKS,v
retrieving revision 1.256.2.2
diff -u -r1.256.2.2 THANKS
--- THANKS 10 Oct 2004 17:04:01 -0000 1.256.2.2
+++ THANKS 5 Dec 2004 16:08:26 -0000
@@ -252,6 +252,7 @@
Tim Goodwin address@hidden
Tim Mooney address@hidden
Tim Van Holder address@hidden
+Toshio Kuratomi address@hidden
Tom Epperly address@hidden
Ulrich Drepper address@hidden
Ulrich Eckhardt address@hidden
Index: lib/py-compile
===================================================================
RCS file: /cvs/automake/automake/lib/py-compile,v
retrieving revision 1.5
diff -u -r1.5 py-compile
--- lib/py-compile 12 Jan 2004 22:56:48 -0000 1.5
+++ lib/py-compile 5 Dec 2004 16:08:26 -0000
@@ -1,7 +1,7 @@
#!/bin/sh
# py-compile - Compile a Python program
-scriptversion=2004-01-12.23
+scriptversion=2004-12-05.17
# Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
@@ -34,34 +34,54 @@
fi
basedir=
+destdir=
+files=
+while test $# -ne 0; do
+ case "$1" in
+ --basedir)
+ basedir=$2
+ if test -z "$basedir"; then
+ echo "$0: Missing argument to --basedir." 1>&2
+ exit 1
+ fi
+ shift
+ ;;
+ --destdir)
+ destdir=$2
+ if test -z "$destdir"; then
+ echo "$0: Missing argument to --destdir." 1>&2
+ exit 1
+ fi
+ shift
+ ;;
+ -h|--h*)
+ cat <<\EOF
+Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR]
FILES..."
+
+Byte compile some python scripts FILES. Use --destdir to specify any
+leading directory path to the FILES that you don't want to include in the
+byte compiled file. Specify --basedir for any additional path information you
+do want to be shown in the byte compiled file.
-case "$1" in
- --basedir)
- basedir=$2
- if test -z "$basedir"; then
- echo "$0: Missing argument to --basedir." 1>&2
- exit 1
- fi
- shift 2
- ;;
- -h|--h*)
- cat <<\EOF
-Usage: py-compile [--help] [--version] [--basedir DIR] FILES..."
-
-Byte compile some python scripts FILES. This should be performed
-after they have been moved to the final installation location
+Example:
+ py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
Report bugs to <address@hidden>.
EOF
- exit 0
- ;;
- -v|--v*)
- echo "py-compile $scriptversion"
- exit 0
- ;;
-esac
+ exit 0
+ ;;
+ -v|--v*)
+ echo "py-compile $scriptversion"
+ exit 0
+ ;;
+ *)
+ files="$files $1"
+ ;;
+ esac
+ shift
+done
-if [ $# = 0 ]; then
+if test -z "$files"; then
echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
exit 1
fi
@@ -69,38 +89,51 @@
# if basedir was given, then it should be prepended to filenames before
# byte compilation.
if [ -z "$basedir" ]; then
- trans="path = file"
+ pathtrans="path = file"
else
- trans="path = os.path.join('$basedir', file)"
+ pathtrans="path = os.path.join('$basedir', file)"
+fi
+
+# if destdir was given, then it needs to be prepended to the filename to
+# byte compile but not go into the compiled file.
+if [ -z "$destdir" ]; then
+ filetrans="filepath = path"
+else
+ filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
fi
$PYTHON -c "
import sys, os, string, py_compile
-files = '''$*'''
+files = '''$files'''
+
print 'Byte-compiling python modules...'
for file in string.split(files):
- $trans
- if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
+ $pathtrans
+ $filetrans
+ if not os.path.exists(filepath) or not (len(filepath) >= 3
+ and filepath[-3:] == '.py'):
continue
print file,
sys.stdout.flush()
- py_compile.compile(path)
+ py_compile.compile(filepath, filepath + 'c', path)
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 = '''$files'''
print 'Byte-compiling python modules (optimized versions) ...'
for file in string.split(files):
- $trans
- if not os.path.exists(path) or not (len(path) >= 3 and path[-3:] == '.py'):
+ $pathtrans
+ $filetrans
+ if not os.path.exists(filepath) or not (len(filepath) >= 3
+ and filepath[-3:] == '.py'):
continue
print file,
sys.stdout.flush()
- py_compile.compile(path)
+ py_compile.compile(filepath, filepath + 'o', path)
print" 2>/dev/null || :
# Local Variables:
Index: lib/am/python.am
===================================================================
RCS file: /cvs/automake/automake/lib/am/python.am,v
retrieving revision 1.23
diff -u -r1.23 python.am
--- lib/am/python.am 28 Jan 2004 20:50:43 -0000 1.23
+++ lib/am/python.am 5 Dec 2004 16:08:26 -0000
@@ -52,8 +52,13 @@
done; \
## Byte-compile must be done at install time, since file times are
## encoded in the actual files.
- test -z "$$dlist" || \
- PYTHON=$(PYTHON) $(py_compile) --basedir "$(DESTDIR)$(%NDIR%dir)"
$$dlist
+ if test -n "$$dlist"; then \
+ if test -z "$(DESTDIR)"; then \
+ PYTHON=$(PYTHON) $(py_compile) --basedir "$(%NDIR%dir)" $$dlist; \
+ else \
+ PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir
"$(%NDIR%dir)" $$dlist; \
+ fi; \
+ else :; fi
endif %?INSTALL%
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.565.2.6
diff -u -r1.565.2.6 Makefile.am
--- tests/Makefile.am 10 Nov 2004 20:12:44 -0000 1.565.2.6
+++ tests/Makefile.am 5 Dec 2004 16:08:26 -0000
@@ -417,6 +417,7 @@
python9.test \
python10.test \
python11.test \
+python12.test \
recurs.test \
recurs2.test \
remake.test \
Index: tests/Makefile.in
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.in,v
retrieving revision 1.733.2.14
diff -u -r1.733.2.14 Makefile.in
--- tests/Makefile.in 10 Nov 2004 20:12:44 -0000 1.733.2.14
+++ tests/Makefile.in 5 Dec 2004 16:08:26 -0000
@@ -536,6 +536,7 @@
python9.test \
python10.test \
python11.test \
+python12.test \
recurs.test \
recurs2.test \
remake.test \
Index: tests/python12.test
===================================================================
RCS file: tests/python12.test
diff -N tests/python12.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/python12.test 5 Dec 2004 16:08:26 -0000
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Ensure DESTDIR is not included in byte-compiled files.
+
+required=python
+. ./defs || exit 1
+
+set -e
+
+cat >>configure.in <<'EOF'
+AM_PATH_PYTHON
+AC_OUTPUT
+EOF
+
+cat >Makefile.am <<'END'
+mydir = $(datadir)/my
+my_PYTHON = my.py
+
+my.py:
+ echo 'def my(): return 1' >$@
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+rm -rf inst build
+mkdir inst
+instdir=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="/usr"
+DESTDIR=$instdir $MAKE -e install
+
+# Perfunctory test that the files were created
+test -f "$instdir/usr/share/my/my.py"
+test -f "$instdir/usr/share/my/my.pyc"
+test -f "$instdir/usr/share/my/my.pyo"
+
+# If DESTDIR has made it into the byte compiled files, fail the test
+$FGREP "$instdir" "$instdir/usr/share/my/my.pyo" \
+ "$instdir/usr/share/my/my.pyc" && exit 1
+
+:
--
Alexandre Duret-Lutz
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Allow py-compile to ignore DESTDIR,
Alexandre Duret-Lutz <=