* [gentoo-devhelp] Wrapping Lines in Ebuils
@ 2008-03-03 11:05 Thomas Kahle
2008-03-05 6:16 ` [gentoo-devhelp] " Steve Long
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Kahle @ 2008-03-03 11:05 UTC (permalink / raw
To: gentoo-devhelp
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
how do I properly wrap lines in ebuilds, specifically the "\" tends give
me errors when i try to wrap a long sed line like:
sed -i -e "s,\$\(grisbi_LDFLAGS\)
\$\(grisbi_OBJECTS\),\$\(grisbi_OBJECTS\) \$\(grisbi_LDFLAGS\)
\$\(LDFLAGS\),g" src/Makefile
Thanks
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFHy9tyrpEWPKIUt7MRAtfgAJ42O0qCpqFcVed3oS2cHEs3ta6CPQCfdlAV
Jf4EJeMFgAH4gl/cwaEj8XU=
=0MAh
-----END PGP SIGNATURE-----
--
gentoo-devhelp@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gentoo-devhelp] Re: Wrapping Lines in Ebuils
2008-03-03 11:05 [gentoo-devhelp] Wrapping Lines in Ebuils Thomas Kahle
@ 2008-03-05 6:16 ` Steve Long
0 siblings, 0 replies; 2+ messages in thread
From: Steve Long @ 2008-03-05 6:16 UTC (permalink / raw
To: gentoo-devhelp
Thomas Kahle wrote:
> how do I properly wrap lines in ebuilds, specifically the "\" tends give
> me errors when i try to wrap a long sed line like:
>
> sed -i -e "s,\$\(grisbi_LDFLAGS\)
> \$\(grisbi_OBJECTS\),\$\(grisbi_OBJECTS\) \$\(grisbi_LDFLAGS\)
> \$\(LDFLAGS\),g" src/Makefile
>
Well if it's quoted, BASH is fine with it, but obviously it forms part of
the string. The easiest way to maintain readability (if long lines bother
you) is to just keep adding to a string, var+='foo bar'
-e is not needed unless you're passing more than one sed command (and most
modern day sed's, including FBSD afaik are happy with ; as a separator) and
the g flag looks a bit odd since sed is line-based; do you need to replace
that string more than once per-line?
A more fundamental point here is confusion over quoting; you should be using
strong (single) quotes, since you're trying to avoid parameter expansion.
http://bash-hackers.org/wiki/doku.php?id=syntax:words explains quoting and
how it affects you in shellscripts; http://www.grymoire.com/Unix/Quote.html
has good examples of use with various utilities.
\( doesn't translate into a ( in "" like \$ does; eg: echo "\$\(foo\)" so
you're using \( .. \) which is used to delimit sub-expressions in BRE[1]
So in sum, I'd do this (assuming g is needed):
local cmd # [don't pollute the vdb/binpkg]
cmd='s,$(grisbi_LDFLAGS) $(grisbi_OBJECTS)'
cmd+=',$(grisbi_OBJECTS) $(grisbi_LDFLAGS) $(LDFLAGS),g'
sed -i "$cmd" src/Makefile
BTW I heartily recommend http://wooledge.org:8000/BashGuide -- it truly is
the best guide to BASH on the Net (the linked FAQ is ofc legendary ;)
Good luck with it :-)
[1] http://www.grymoire.com/Unix/Regular.html for a good intro to regex, and
http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_03
for the official lowdown on POSIX Basic and Extended RegEx.
http://www.opengroup.org/onlinepubs/009695399/functions/contents.html is the
script interface you can (usually-- no ed in base Gentoo ;C) expect on any
POSIX-compliant system.
--
gentoo-devhelp@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-03-05 6:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-03 11:05 [gentoo-devhelp] Wrapping Lines in Ebuils Thomas Kahle
2008-03-05 6:16 ` [gentoo-devhelp] " Steve Long
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox