msg146882 - (view) |
Author: Remi Pointel (rpointel) * |
Date: 2011-11-02 23:15 |
Hi,
"make clean" failed on OpenBSD with this error:
find: -exec: no terminating ";"
*** Error code 1 (ignored)
It seems that "-exec" with "+" is a GNU extension.
Are you OK with this diff which does the same and is multi-platform?
Modifications can only be done for __pycache__, what do you prefer?
Cheers,
Remi.
|
msg146883 - (view) |
Author: Remi Pointel (rpointel) * |
Date: 2011-11-02 23:16 |
FYI I tested with Python 3.3, but I didn't look for 2.7 and 3.2, I think modifications are also needed.
|
msg146899 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 08:00 |
According to the man page, find -print0 and xargs -r are also GNU extensions. Even though they work on OpenBSD (do they?), they could still break on some platforms.
As find -exec cmd {} ';' is already used for everything but __pycache__, I'd rather only change the removal of __pycache__. I believe there are more files that match '*.py[co]' than '__pycache__', and people are already waiting for a separate rm process to be invoked on each *.py[co], so invoking a separate rmdir for each __pycache__ shouldn't make it much slower.
|
msg146902 - (view) |
Author: Remi Pointel (rpointel) * |
Date: 2011-11-03 08:19 |
> According to the man page, find -print0 and xargs -r are also GNU extensions. Even though they work on OpenBSD (do they?), they could still break on some platforms.
Yes, it works fine, but you're allright.
> As find -exec cmd {} ';' is already used for everything but __pycache__, I'd rather only change the removal of __pycache__. I believe there are more files that match '*.py[co]' than '__pycache__', and people are already waiting for a separate rm process to be invoked on each *.py[co], so invoking a separate rmdir for each __pycache__ shouldn't make it much slower.
You mean to just exec rmdir instead of rm only for __pycache__?
Cheers,
Remi.
|
msg146905 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 08:37 |
I mean that this should be enough to close this issue:
- -find $(srcdir) -name '__pycache__' -exec rmdir {} '+'
+ -find $(srcdir) -name '__pycache__' -exec rmdir {} ';'
That is, use ';' instead of the unportable '+' instead of changing all cleaning to use find ... | xargs ...
|
msg146907 - (view) |
Author: Remi Pointel (rpointel) * |
Date: 2011-11-03 08:48 |
Please see this:
http://bugs.python.org/issue8665
http://hg.python.org/cpython/rev/5468f3aee4ae/
|
msg146908 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 08:55 |
Ah, I didn't think about that.
How about using the -depth option then? It's in POSIX but does OpenBSD have it? The man page of GNU find says it has a -d option (that does the same as -depth) for compatibility with BSD.
|
msg146909 - (view) |
Author: Remi Pointel (rpointel) * |
Date: 2011-11-03 09:07 |
> How about using the -depth option then? It's in POSIX but does OpenBSD have it? The man page of GNU find says it has a -d option (that does the same as -depth) for compatibility with BSD.
Yes, we have this option:
-depth This primary always evaluates to true. The same as specifying the -d option.
Source: http://www.openbsd.org/cgi-bin/man.cgi?query=find
|
msg146910 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2011-11-03 09:24 |
By the way, removing *.pyc and *.pyo is useless: Python 3.3 only generates such files in __pycache__:
+ -find $(srcdir) -name '*.py[co]' -print0 | xargs -0r rm -f
+ -find $(srcdir) -name '__pycache__' -print0 | xargs -0r rmdir
can be simplified to
+ -find $(srcdir) -name '__pycache__' -print0 | xargs -0r rm -rf
|
msg146912 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 09:27 |
> + -find $(srcdir) -name '__pycache__' -print0 | xargs -0r rm -rf
I'd still do it like this for portability's sake:
+ -find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
|
msg146915 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2011-11-03 11:28 |
> I'd still do it like this for portability's sake:
>
> + -find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
Then you'd probably reintroduce issue8665.
|
msg146916 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 11:42 |
> Then you'd probably reintroduce issue8665.
No, the -depth argument avoids that.
|
msg146921 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2011-11-03 12:16 |
> No, the -depth argument avoids that.
Ah, you are right, my bad.
|
msg146934 - (view) |
Author: Petri Lehtinen (petri.lehtinen) *  |
Date: 2011-11-03 14:10 |
The issue exists only in 3.2 and 3.3, as 2.7 doesn't have __pycache__ (PEP 3147). In 3.2 and 3.3, all *.py[co] files are in __pycache__ directories, so the pycremoval make target can only remove the __pycache__ directories, using the -depth option of find to remove child directories before the parent.
|
msg147105 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2011-11-05 20:02 |
New changeset 41ab1dfaf1d4 by Petri Lehtinen in branch '3.2':
Remove __pycache__ directories correctly on OpenBSD
http://hg.python.org/cpython/rev/41ab1dfaf1d4
New changeset f853a2cbd68b by Petri Lehtinen in branch 'default':
Remove __pycache__ directories correctly on OpenBSD
http://hg.python.org/cpython/rev/f853a2cbd68b
|
|
Date |
User |
Action |
Args |
2022-04-11 14:57:23 | admin | set | github: 57535 |
2011-11-05 20:02:42 | python-dev | set | status: open -> closed
nosy:
+ python-dev messages:
+ msg147105
resolution: fixed stage: needs patch -> resolved |
2011-11-03 14:10:12 | petri.lehtinen | set | keywords:
+ easy
stage: needs patch messages:
+ msg146934 versions:
+ Python 3.2, Python 3.3 |
2011-11-03 12:16:53 | pitrou | set | messages:
+ msg146921 |
2011-11-03 11:42:24 | petri.lehtinen | set | messages:
+ msg146916 |
2011-11-03 11:28:57 | pitrou | set | messages:
+ msg146915 |
2011-11-03 09:27:41 | petri.lehtinen | set | messages:
+ msg146912 |
2011-11-03 09:24:48 | vstinner | set | messages:
+ msg146910 |
2011-11-03 09:07:08 | rpointel | set | messages:
+ msg146909 |
2011-11-03 08:55:02 | petri.lehtinen | set | messages:
+ msg146908 |
2011-11-03 08:48:09 | rpointel | set | messages:
+ msg146907 |
2011-11-03 08:37:52 | petri.lehtinen | set | messages:
+ msg146905 |
2011-11-03 08:19:51 | rpointel | set | messages:
+ msg146902 |
2011-11-03 08:00:43 | petri.lehtinen | set | nosy:
+ petri.lehtinen messages:
+ msg146899
|
2011-11-02 23:22:16 | vstinner | set | nosy:
+ vstinner
|
2011-11-02 23:16:46 | rpointel | set | messages:
+ msg146883 |
2011-11-02 23:15:47 | rpointel | create | |