]> sourceware.org Git - automake.git/commitdiff
* lib/py-compile: Add --destdir switch to py-compile that takes a
authorAlexandre Duret-Lutz <adl@gnu.org>
Sun, 5 Dec 2004 16:12:29 +0000 (16:12 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Sun, 5 Dec 2004 16:12:29 +0000 (16:12 +0000)
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.

ChangeLog
THANKS
lib/am/python.am
lib/py-compile
tests/Makefile.am
tests/Makefile.in
tests/python12.test [new file with mode: 0755]

index ae8d55003dbe82ba53ae6dba9af0530edb222185..dada358e266de9d2a5397c0e4c3aefecefa9f100 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-11-15  Toshio Kuratomi  <toshio@tiki-lounge.com>
+
+       * 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.
+
 2004-12-05  Alexandre Duret-Lutz  <adl@gnu.org>
 
        * doc/automake.texi (Clean): Typo.
diff --git a/THANKS b/THANKS
index 0302ad2df51ba11ea688141df3ac30b469520531..d169c872b984aef3e274b64ebe956eadb39d0b80 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -253,6 +253,7 @@ Thomas Tanner               tanner@ffii.org
 Tim Goodwin            tjg@star.le.ac.uk
 Tim Mooney             mooney@dogbert.cc.ndsu.NoDak.edu
 Tim Van Holder         tim.van.holder@pandora.be
+Toshio Kuratomi                toshio@tiki-lounge.com
 Tom Epperly            tepperly@llnl.gov
 Ulrich Drepper         drepper@gnu.ai.mit.edu
 Ulrich Eckhardt                eckhardt@satorlaser.com
index 6a7ae4cab8bf3f658adcbfb306290da2b0f88acb..826dd15fb218f8fb950a37775b4a13e80cee5370 100644 (file)
@@ -52,8 +52,13 @@ install-%DIR%PYTHON: $(%DIR%_PYTHON)
        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 f5d4fdc5888e9acb6a69a1cfa7f2cec9987c6fed..f6bba63f4611ac78cf101b156d87b275696ac0c9 100755 (executable)
@@ -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 @@ if [ -z "$PYTHON" ]; then
 fi
 
 basedir=
-
-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
+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.
+
+Example:
+  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
-    exit 0
-    ;;
-  -v|--v*)
-    echo "py-compile $scriptversion"
-    exit 0
-    ;;
-esac
-
-if [ $# = 0 ]; then
+      exit 0
+      ;;
+    -v|--v*)
+      echo "py-compile $scriptversion"
+      exit 0
+      ;;
+    *)
+      files="$files $1"
+      ;;
+  esac
+  shift
+done
+
+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 @@ fi
 # 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 3efb44e8bf3518b51ca40546a17a720b3a4eb7b7..62adf63024cdb5545496721681494ebf8f1603a0 100644 (file)
@@ -419,6 +419,7 @@ python8.test \
 python9.test \
 python10.test \
 python11.test \
+python12.test \
 recurs.test \
 recurs2.test \
 remake.test \
index f53831506d6563956506159f48b16cfb4aba7b0d..11bfe1f8c2a6c8682ca9d9dc06a707c8aa805bd0 100644 (file)
@@ -538,6 +538,7 @@ python8.test \
 python9.test \
 python10.test \
 python11.test \
+python12.test \
 recurs.test \
 recurs2.test \
 remake.test \
diff --git a/tests/python12.test b/tests/python12.test
new file mode 100755 (executable)
index 0000000..84f71ca
--- /dev/null
@@ -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
+
+:
This page took 0.037912 seconds and 5 git commands to generate.