Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-devhelp
Navigation:
Lists: gentoo-devhelp: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-devhelp@g.o
From: Steve Long <slong@...>
Subject: Re: Wrapping Lines in Ebuils
Date: Wed, 05 Mar 2008 06:16:08 +0000
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@g.o mailing list


References:
Wrapping Lines in Ebuils
-- Thomas Kahle
Navigation:
Lists: gentoo-devhelp: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
Wrapping Lines in Ebuils
Next by thread:
CPAN Modules
Previous by date:
Wrapping Lines in Ebuils
Next by date:
CPAN Modules


Updated Jun 17, 2009

Summary: Archive of the gentoo-devhelp mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.