public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
       [not found] <E1IhKZ7-000421-Hg@stork.gentoo.org>
@ 2007-10-15  7:42 ` Donnie Berkholz
  2007-10-15  7:56   ` Bo Ørsted Andresen
  0 siblings, 1 reply; 12+ messages in thread
From: Donnie Berkholz @ 2007-10-15  7:42 UTC (permalink / raw
  To: gentoo-dev, opfer

On 07:40 Mon 15 Oct     , Christian Faulhammer (opfer) wrote:
> 1.1                  app-misc/note/note-1.3.3.ebuild
> 
> file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&view=markup
> plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&content-type=text/plain

> 	for v in mysql text dbm general; do
> 		if ! use ${v}; then
> 			for u in `find "${D}" -type f -name *${v}.*pm`; do
> 				rm ${u}

Looks like 'u' could have spaces in it, since it's based on D.

Thanks,
Donnie
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  7:42 ` [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild Donnie Berkholz
@ 2007-10-15  7:56   ` Bo Ørsted Andresen
  2007-10-15  8:01     ` Donnie Berkholz
                       ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Bo Ørsted Andresen @ 2007-10-15  7:56 UTC (permalink / raw
  To: gentoo-dev; +Cc: opfer

[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]

On Monday 15 October 2007 09:42:50 Donnie Berkholz wrote:
> On 07:40 Mon 15 Oct     , Christian Faulhammer (opfer) wrote:
> > 1.1                  app-misc/note/note-1.3.3.ebuild
> >
> > file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&view=markup
> > plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&content-type=text/plain
> >
> > 	for v in mysql text dbm general; do
> > 		if ! use ${v}; then
> > 			for u in `find "${D}" -type f -name *${v}.*pm`; do
> > 				rm ${u}
>
> Looks like 'u' could have spaces in it, since it's based on D.

Written like this u certainly can't since the output of the find expression is
subjected to word splitting before u gets set. Hence this will fail if ${D}
contains spaces even if ${u} gets quoted. The best way to solve this is to use
find ... -print0 | xargs -0 rm. Unfortunately that solution means using GNU
extensions that I'm not sure are guaranteed to be available in the ebuild
environment. If they aren't maybe they should be.

-- 
Bo Andresen

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  7:56   ` Bo Ørsted Andresen
@ 2007-10-15  8:01     ` Donnie Berkholz
  2007-10-15  8:40       ` Roy Marples
  2007-10-15  8:07     ` Ulrich Mueller
  2007-10-15  8:35     ` Roy Marples
  2 siblings, 1 reply; 12+ messages in thread
From: Donnie Berkholz @ 2007-10-15  8:01 UTC (permalink / raw
  To: gentoo-dev; +Cc: opfer

On 09:56 Mon 15 Oct     , Bo Ørsted Andresen wrote:
> Written like this u certainly can't since the output of the find expression is
> subjected to word splitting before u gets set. Hence this will fail if ${D}
> contains spaces even if ${u} gets quoted. The best way to solve this is to use
> find ... -print0 | xargs -0 rm. Unfortunately that solution means using GNU
> extensions that I'm not sure are guaranteed to be available in the ebuild
> environment. If they aren't maybe they should be.

Cool, I hadn't dealt with this before. Thanks for pointing that out! We 
were just talking about whether to require GNU find the other day, but I 
don't recall the conclusion. Does anyone else?

Thanks,
Donnie
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  7:56   ` Bo Ørsted Andresen
  2007-10-15  8:01     ` Donnie Berkholz
@ 2007-10-15  8:07     ` Ulrich Mueller
  2007-10-15  8:35     ` Roy Marples
  2 siblings, 0 replies; 12+ messages in thread
From: Ulrich Mueller @ 2007-10-15  8:07 UTC (permalink / raw
  To: gentoo-dev; +Cc: opfer

>>>>> On Mon, 15 Oct 2007, Bo Ørsted Andresen wrote:

> The best way to solve this is to use find ... -print0 | xargs -0 rm.

cd "${D}"; find . ... | xargs rm -f
and you won't need any GNU extensions.

Ulrich
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  7:56   ` Bo Ørsted Andresen
  2007-10-15  8:01     ` Donnie Berkholz
  2007-10-15  8:07     ` Ulrich Mueller
@ 2007-10-15  8:35     ` Roy Marples
  2007-10-15  8:43       ` Fabian Groffen
  2 siblings, 1 reply; 12+ messages in thread
From: Roy Marples @ 2007-10-15  8:35 UTC (permalink / raw
  To: gentoo-dev

On Mon, 2007-10-15 at 09:56 +0200, Bo Ørsted Andresen wrote:
> On Monday 15 October 2007 09:42:50 Donnie Berkholz wrote:
> > On 07:40 Mon 15 Oct     , Christian Faulhammer (opfer) wrote:
> > > 1.1                  app-misc/note/note-1.3.3.ebuild
> > >
> > > file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&view=markup
> > > plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-misc/note/note-1.3.3.ebuild?rev=1.1&content-type=text/plain
> > >
> > > 	for v in mysql text dbm general; do
> > > 		if ! use ${v}; then
> > > 			for u in `find "${D}" -type f -name *${v}.*pm`; do
> > > 				rm ${u}
> >
> > Looks like 'u' could have spaces in it, since it's based on D.
> 
> Written like this u certainly can't since the output of the find expression is
> subjected to word splitting before u gets set. Hence this will fail if ${D}
> contains spaces even if ${u} gets quoted. The best way to solve this is to use
> find ... -print0 | xargs -0 rm. Unfortunately that solution means using GNU
> extensions that I'm not sure are guaranteed to be available in the ebuild
> environment. If they aren't maybe they should be.
> 

find "${D}" -type f -name *${v}.*pm -delete

Thanks

Roy

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  8:01     ` Donnie Berkholz
@ 2007-10-15  8:40       ` Roy Marples
  0 siblings, 0 replies; 12+ messages in thread
From: Roy Marples @ 2007-10-15  8:40 UTC (permalink / raw
  To: gentoo-dev

On Mon, 2007-10-15 at 01:01 -0700, Donnie Berkholz wrote:
> On 09:56 Mon 15 Oct     , Bo Ørsted Andresen wrote:
> > Written like this u certainly can't since the output of the find expression is
> > subjected to word splitting before u gets set. Hence this will fail if ${D}
> > contains spaces even if ${u} gets quoted. The best way to solve this is to use
> > find ... -print0 | xargs -0 rm. Unfortunately that solution means using GNU
> > extensions that I'm not sure are guaranteed to be available in the ebuild
> > environment. If they aren't maybe they should be.
> 
> Cool, I hadn't dealt with this before. Thanks for pointing that out! We 
> were just talking about whether to require GNU find the other day, but I 
> don't recall the conclusion. Does anyone else?

I think most people wanted to force all GNU tools.
So once it's all keyworded BSD and installed outside of our normal $PATH
or g prefixed (gfind, gsed, etc) then you can start
DEPEND="your-find-of-choice" and use it in the ebuild.

But we're not there yet so lets use something that all platforms
support. Like say find's -delete action which should fit the bill quite
nicely.

Thanks

Roy

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  8:35     ` Roy Marples
@ 2007-10-15  8:43       ` Fabian Groffen
  2007-10-15  9:07         ` Roy Marples
  0 siblings, 1 reply; 12+ messages in thread
From: Fabian Groffen @ 2007-10-15  8:43 UTC (permalink / raw
  To: gentoo-dev

On 15-10-2007 09:35:35 +0100, Roy Marples wrote:
> find "${D}" -type f -name *${v}.*pm -delete

Looks like you rely on your shell here to assume that you meant
"*${v}.*pm" because there is nothing that matches that pattern by
coincidence.  If it does, your find probably doesn't do what you expect
it to.


-- 
Fabian Groffen
Gentoo on a different level
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  8:43       ` Fabian Groffen
@ 2007-10-15  9:07         ` Roy Marples
  2007-10-15 22:43           ` [gentoo-dev] " Steve Long
  0 siblings, 1 reply; 12+ messages in thread
From: Roy Marples @ 2007-10-15  9:07 UTC (permalink / raw
  To: gentoo-dev

On Mon, 2007-10-15 at 10:43 +0200, Fabian Groffen wrote:
> On 15-10-2007 09:35:35 +0100, Roy Marples wrote:
> > find "${D}" -type f -name *${v}.*pm -delete
> 
> Looks like you rely on your shell here to assume that you meant
> "*${v}.*pm" because there is nothing that matches that pattern by
> coincidence.  If it does, your find probably doesn't do what you expect
> it to.

It was like that in the original code snippet, I assumed that is what
the author intended? Anyway, you're probably right.

Thanks

Roy

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [gentoo-dev]  Re: Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15  9:07         ` Roy Marples
@ 2007-10-15 22:43           ` Steve Long
  2007-10-15 23:48             ` Gilles Dartiguelongue
  0 siblings, 1 reply; 12+ messages in thread
From: Steve Long @ 2007-10-15 22:43 UTC (permalink / raw
  To: gentoo-dev

Roy Marples wrote:

> On Mon, 2007-10-15 at 10:43 +0200, Fabian Groffen wrote:
>> On 15-10-2007 09:35:35 +0100, Roy Marples wrote:
>> > find "${D}" -type f -name *${v}.*pm -delete
>> 
>> Looks like you rely on your shell here to assume that you meant
>> "*${v}.*pm" because there is nothing that matches that pattern by
>> coincidence.  If it does, your find probably doesn't do what you expect
>> it to.
> 
> It was like that in the original code snippet, I assumed that is what
> the author intended? Anyway, you're probably right.
> 
Well if portability is a concern, -delete is not specified in POSIX[1]
afaict. -exec is, it turns out, including -exec blah {} + which really made
me wonder why people still have such a thing for xargs. It turns out GNU
didn't include this til recently, and it isn't in OpenBSD either for one[2]
(..disgraceful, if you ask me ;)

The unintended globbing is indeed unsafe, in the general case. I'd do this: 

find "$D" -type f -name '*'"$v"'.*pm' -exec rm {} +

The shell will still treat that all as one argument (this method is
typically used to insert variables into awk commands, or sed ones which
use ".) The + will make the command execution more efficient for commands
that take multiple filenames. The one caveat with + is that the {} must
appear at the end of the command.[3]

[1] http://www.opengroup.org/onlinepubs/009695399/utilities/find.html
[2]
http://www.openbsd.org/cgi-bin/man.cgi?query=find&apropos=0&sektion=1&manpath=OpenBSD+Current&arch=i386&format=html
[3] http://wooledge.org/mywiki/UsingFind (highly recommended)


-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev]  Re: Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15 22:43           ` [gentoo-dev] " Steve Long
@ 2007-10-15 23:48             ` Gilles Dartiguelongue
  2007-10-16  2:14               ` [gentoo-dev] " Steve Long
  0 siblings, 1 reply; 12+ messages in thread
From: Gilles Dartiguelongue @ 2007-10-15 23:48 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 918 bytes --]


Le lundi 15 octobre 2007 à 23:43 +0100, Steve Long a écrit : 
> Roy Marples wrote:
> The unintended globbing is indeed unsafe, in the general case. I'd do this: 
> 
> find "$D" -type f -name '*'"$v"'.*pm' -exec rm {} +
> 
> The shell will still treat that all as one argument (this method is
> typically used to insert variables into awk commands, or sed ones which
> use ".) The + will make the command execution more efficient for commands
> that take multiple filenames. The one caveat with + is that the {} must
> appear at the end of the command.[3]

I haven't reread the fine mans for a while but iirc, + could lead you to
hit the argument buffer limit of your shell. xargs has --max-args to get
around that and is also way faster than any -exec variant (at least
that's what the bench I did on a PIV2.6Ghz showed me about 4 months ago)

-- 
Gilles Dartiguelongue <eva@gentoo.org>
Gentoo

[-- Attachment #2: Ceci est une partie de message numériquement signée --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [gentoo-dev]  Re: Re: Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-15 23:48             ` Gilles Dartiguelongue
@ 2007-10-16  2:14               ` Steve Long
  2007-10-16  2:32                 ` Elias Pipping
  0 siblings, 1 reply; 12+ messages in thread
From: Steve Long @ 2007-10-16  2:14 UTC (permalink / raw
  To: gentoo-dev

Gilles Dartiguelongue wrote:
> I haven't reread the fine mans for a while but iirc, + could lead you to
> hit the argument buffer limit of your shell. xargs has --max-args to get
> around that and is also way faster than any -exec variant (at least
> that's what the bench I did on a PIV2.6Ghz showed me about 4 months ago)
> 
It doesn't: find will just execute the command as many times as needed (each
time with an argument length maximally less than ARG_MAX. Well, it did when
we tested this a couple of months ago.) So it's optimal in that sense. I
have no idea on the timing measurements, but I don't like pipes and
subshells as a rule (externals are bad enough!;>) It'd be interesting to
see measurements over 100000 loops with long argument lists requiring
multiple invocations per pass, I suppose.

An array expansion can lead to an argument length greater than ARG_MAX
however, eg funcToFix "${list[@]}"

(I'd be kind of perturbed if the last case were infeasible since it would
imply poor memory handling in BASH, and limit the scope of its usability.)


-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [gentoo-dev]  Re: Re: Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild
  2007-10-16  2:14               ` [gentoo-dev] " Steve Long
@ 2007-10-16  2:32                 ` Elias Pipping
  0 siblings, 0 replies; 12+ messages in thread
From: Elias Pipping @ 2007-10-16  2:32 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1779 bytes --]

On Tue, Oct 16, 2007 at 03:14:12AM +0100, Steve Long wrote:
> Gilles Dartiguelongue wrote:
> > I haven't reread the fine mans for a while but iirc, + could lead you to
> > hit the argument buffer limit of your shell. xargs has --max-args to get
> > around that and is also way faster than any -exec variant (at least
> > that's what the bench I did on a PIV2.6Ghz showed me about 4 months ago)
> > 
> It doesn't: find will just execute the command as many times as needed (each
> time with an argument length maximally less than ARG_MAX. Well, it did when
> we tested this a couple of months ago.) So it's optimal in that sense. I
> have no idea on the timing measurements, but I don't like pipes and
> subshells as a rule (externals are bad enough!;>) It'd be interesting to
> see measurements over 100000 loops with long argument lists requiring
> multiple invocations per pass, I suppose.

Here's a quick benchmark:

% \
  repeat 3 \time find -name '*.ebuild' | xargs cat >/dev/null; echo; \
  repeat 3 \time find -name '*.ebuild' -exec cat {} ';' >/dev/null; echo; \
  repeat 3 \time find -name '*.ebuild' -exec cat {} '+' >/dev/null
       66.28 real         0.77 user         4.71 sys
       30.95 real         0.76 user         4.73 sys
       30.08 real         0.76 user         4.67 sys

      174.72 real        18.10 user       112.92 sys
      208.69 real        18.07 user       117.05 sys
      173.64 real        18.10 user       110.79 sys

       62.61 real         1.26 user        10.88 sys
       54.98 real         1.25 user        10.46 sys
       41.84 real         1.25 user        10.00 sys

the third variant doesn't get any faster than on the last line.

( tested in zsh, with bsd time and gnu find )


-- Elias

[-- Attachment #2: Type: application/pgp-signature, Size: 186 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-10-16  2:45 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E1IhKZ7-000421-Hg@stork.gentoo.org>
2007-10-15  7:42 ` [gentoo-dev] Re: [gentoo-commits] gentoo-x86 commit in app-misc/note: ChangeLog note-1.3.3.ebuild Donnie Berkholz
2007-10-15  7:56   ` Bo Ørsted Andresen
2007-10-15  8:01     ` Donnie Berkholz
2007-10-15  8:40       ` Roy Marples
2007-10-15  8:07     ` Ulrich Mueller
2007-10-15  8:35     ` Roy Marples
2007-10-15  8:43       ` Fabian Groffen
2007-10-15  9:07         ` Roy Marples
2007-10-15 22:43           ` [gentoo-dev] " Steve Long
2007-10-15 23:48             ` Gilles Dartiguelongue
2007-10-16  2:14               ` [gentoo-dev] " Steve Long
2007-10-16  2:32                 ` Elias Pipping

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox