This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: distutils' dry-run wants to create some real build dirs
Type: Stage: commit review
Components: Distutils Versions: Python 3.0, Python 2.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: amaury.forgeotdarc Nosy List: amaury.forgeotdarc, doko, lemburg
Priority: normal Keywords: patch

Created on 2004-09-18 07:15 by doko, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (4)
msg60567 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2004-09-18 07:15
[forwarded from http://bugs.debian.org/270127]

When using the distutils to build a python extension
module while using the dry-run option the build fails.
 It goes like this:

frigg:~/FEMesh/mesh$ ./setup.py --dry-run build
running build
running build_py
creating build
creating build/lib.linux-sparc64-2.3
creating build/lib.linux-sparc64-2.3/Mesh
copying Mesh/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh
creating build/lib.linux-sparc64-2.3/Mesh/Delaunay
copying Mesh/Delaunay/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh/Delaunay
running build_ext
building 'Mesh.Delaunay._qhull' extension
creating build/temp.linux-sparc64-2.3
error: could not create 'build/temp.linux-sparc64-2.3':
No such file or  directory
frigg:~/FEMesh/mesh$

frigg:~/FEMesh/mesh$ DISTUTILS_DEBUG=true ./setup.py
--dry-run build
Distribution.parse_config_files():
options (after parsing config files):
no commands known yet
options (after parsing command line):
option dict for 'build' command:
  {}
running build
Distribution.get_command_obj(): creating 'build'
command object
running build_py
Distribution.get_command_obj(): creating 'build_py'
command object
creating build
creating build/lib.linux-sparc64-2.3
creating build/lib.linux-sparc64-2.3/Mesh
copying Mesh/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh
creating build/lib.linux-sparc64-2.3/Mesh/Delaunay
copying Mesh/Delaunay/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh/Delaunay
running build_ext
Distribution.get_command_obj(): creating 'build_ext'
command object
building 'Mesh.Delaunay._qhull' extension
creating build/temp.linux-sparc64-2.3
Traceback (most recent call last):
  File "./setup.py", line 27, in ?
    ext_modules=[module_qhull])
  File "/usr/lib/python2.3/distutils/core.py", line
149, in setup
    dist.run_commands()
  File "/usr/lib/python2.3/distutils/dist.py", line
907, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.3/distutils/dist.py", line
927, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.3/distutils/command/build.py",
line 107, in run
    self.run_command(cmd_name)
  File "/usr/lib/python2.3/distutils/cmd.py", line 333,
in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python2.3/distutils/dist.py", line
927, in run_command
    cmd_obj.run()
  File
"/usr/lib/python2.3/distutils/command/build_ext.py",
line 269, in run
    self.build_extensions()
  File
"/usr/lib/python2.3/distutils/command/build_ext.py",
line 395, in
    build_extensions self.build_extension(ext)
  File
"/usr/lib/python2.3/distutils/command/build_ext.py",
line 460, in
    build_extension depends=ext.depends)
  File "/usr/lib/python2.3/distutils/ccompiler.py",
line 691, in compile
    depends, extra_postargs)
  File "/usr/lib/python2.3/distutils/ccompiler.py",
line 417, in _setup_compile
    self.mkpath(os.path.dirname(obj))
  File "/usr/lib/python2.3/distutils/ccompiler.py",
line 1042, in mkpath
    mkpath (name, mode, self.dry_run)
  File "/usr/lib/python2.3/distutils/dir_util.py", line
79, in mkpath
    raise DistutilsFileError, \
distutils.errors.DistutilsFileError: could not create
'build/temp.linux-sparc64-2.3': No such file or directory
frigg:~/FEMesh/mesh$

frigg:~/FEMesh/mesh$ mkdir build
frigg:~/FEMesh/mesh$

frigg:~/FEMesh/mesh$ ./setup.py --dry-run build
running build
running build_py
creating build/lib.linux-sparc64-2.3
creating build/lib.linux-sparc64-2.3/Mesh
copying Mesh/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh
creating build/lib.linux-sparc64-2.3/Mesh/Delaunay
copying Mesh/Delaunay/__init__.py ->
build/lib.linux-sparc64-2.3/Mesh/Delaunay
running build_ext
building 'Mesh.Delaunay._qhull' extension
creating build/temp.linux-sparc64-2.3
creating build/temp.linux-sparc64-2.3/Mesh
creating build/temp.linux-sparc64-2.3/Mesh/Delaunay
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -fPIC -DMAJOR_VERSION=0
-DMINOR_VERSION=1
-I/usr/include/python2.3 -c Mesh/Delaunay/_qhullmodule.c -o
build/temp.linux-sparc64-2.3/Mesh/Delaunay/_qhullmodule.o
gcc -pthread -shared
build/temp.linux-sparc64-2.3/Mesh/Delaunay/_qhullmodule.o
-o
build/lib.linux-sparc64-2.3/Mesh/Delaunay/_qhull.so
frigg:~/FEMesh/mesh$

frigg:~/FEMesh/mesh$ ls -R build/
build/:
temp.linux-sparc64-2.3

build/temp.linux-sparc64-2.3:
Mesh

build/temp.linux-sparc64-2.3/Mesh:
Delaunay

build/temp.linux-sparc64-2.3/Mesh/Delaunay:
frigg:~/FEMesh/mesh$ rm -rf build/
frigg:~/FEMesh/mesh$

This should show it all.

Cheers
Floris


msg77053 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-12-05 18:45
The third parameter to mkpath() is 'verbose', not 'dry_run'!
Correction is trivial:

Index: Lib/distutils/ccompiler.py
===================================================================
--- Lib/distutils/ccompiler.py  (revision 67068)
+++ Lib/distutils/ccompiler.py  (working copy)
@@ -1041,7 +1041,7 @@
         return move_file (src, dst, dry_run=self.dry_run)

     def mkpath (self, name, mode=0777):
-        mkpath (name, mode, self.dry_run)
+        mkpath (name, mode, dry_run=self.dry_run)


 # class CCompiler
msg77064 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2008-12-05 20:36
Looks good.
msg77579 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-12-11 00:06
Committed r67692 (trunk).

I don't feel the need to backport: this issue was opened 4 years ago, it 
is not urgent anymore ;-)
History
Date User Action Args
2022-04-11 14:56:07adminsetgithub: 40925
2008-12-11 00:06:16amaury.forgeotdarcsetstatus: open -> closed
resolution: fixed
2008-12-11 00:06:05amaury.forgeotdarcsetmessages: + msg77579
2008-12-05 20:36:17lemburgsetnosy: + lemburg
messages: + msg77064
stage: patch review -> commit review
2008-12-05 18:45:36amaury.forgeotdarcsetversions: + Python 2.6, Python 3.0, - Python 2.3
nosy: + amaury.forgeotdarc
messages: + msg77053
assignee: amaury.forgeotdarc
keywords: + patch
stage: patch review
2004-09-18 07:15:50dokocreate