From 4a5541b5233241d07b27bf31f5dab81210d85670 Mon Sep 17 00:00:00 2001 From: Fabian Groffen Date: Fri, 5 Sep 2008 18:36:35 +0000 Subject: [PATCH] Merged from trunk -r11484:11495 | 11485 | Bug #222091 - Filter out any instances of the \1 character | | zmedico | from variable values since this character multiplies each | | | time that the environment is saved (strange bash behavior). | | | This can eventually result in mysterious 'Argument list too | | | long' errors from programs that have huge strings of \1 | | | characters in their environment. | | 11486 | Adjust StaticFileSet._validate() to allow set tokens, so | | zmedico | that sets can contain other sets. | | 11487 | Add a new "EAPI 2 Draft" section which unifies the content | | zmedico | of the EAPI 2_pre* sections. | | 11488 | Adjust toc.section.depth in the stylesheet so that deeper | | zmedico | sections appear in the table of contents. | | 11489 | Nest the EAPI 2 "USE Dependencies" section inside a | | zmedico | "Dependencies" section. | | 11490 | Document EAPI 2 blocker atom extensions (not yet | | zmedico | implemented). | | 11491 | s/blocking/conflicting/ for consistency | | zmedico | | | 11492 | Nest the EAPI 2 "Dependencies" section inside a "Metadata" | | zmedico | section. | | 11493 | Add EAPI 2 documentation for customization of output file | | zmedico | names in SRC_URI (bug #177863). | | 11494 | Document EAPI 2 support in the unpack helper function for | | zmedico | gitweb snapshots. A patch implementing this feature has been | | | submitted by Daniel Robbins. | | 11495 | Split the doman language code documentation into it's own | | zmedico | section. | svn path=/main/branches/prefix/; revision=11496 --- bin/filter-bash-environment.py | 9 +- doc/Makefile | 4 +- doc/custom.xsl | 3 + doc/package/ebuild/eapi/2.docbook | 354 +++++++++++++++++++++++++++++- pym/portage/sets/files.py | 2 +- 5 files changed, 361 insertions(+), 11 deletions(-) diff --git a/bin/filter-bash-environment.py b/bin/filter-bash-environment.py index e775ff3a8..16ee0bc85 100755 --- a/bin/filter-bash-environment.py +++ b/bin/filter-bash-environment.py @@ -25,6 +25,11 @@ def have_end_quote(quote, line): close_quote_match.group(1) == quote def filter_bash_environment(pattern, file_in, file_out): + # Filter out any instances of the \1 character from variable values + # since this character multiplies each time that the environment + # is saved (strange bash behavior). This can eventually result in + # mysterious 'Argument list too long' errors from programs that have + # huge strings of \1 characters in their environment. See bug #222091. here_doc_delim = None in_func = None multi_line_quote = None @@ -32,7 +37,7 @@ def filter_bash_environment(pattern, file_in, file_out): for line in file_in: if multi_line_quote is not None: if not multi_line_quote_filter: - file_out.write(line) + file_out.write(line.replace("\1", "")) if have_end_quote(multi_line_quote, line): multi_line_quote = None multi_line_quote_filter = None @@ -59,7 +64,7 @@ def filter_bash_environment(pattern, file_in, file_out): (declare_opts, line[readonly_match.end():]) else: line = "declare " + line[readonly_match.end():] - file_out.write(line) + file_out.write(line.replace("\1", "")) continue if here_doc_delim is not None: if here_doc_delim.match(line): diff --git a/doc/Makefile b/doc/Makefile index 5c2ab0ba9..261a0b405 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,8 +1,8 @@ all: xhtml xhtml-nochunks -XMLTO_FLAGS_man = -x custom.xsl +XMLTO_FLAGS = -m custom.xsl man pdf txt xhtml xhtml-nochunks: - xmlto $@ $(XMLTO_FLAGS_$@) portage.docbook + xmlto $@ $(XMLTO_FLAGS) portage.docbook clean distclean: rm -f *.1 *.html portage.txt diff --git a/doc/custom.xsl b/doc/custom.xsl index e69de29bb..f1692b12f 100644 --- a/doc/custom.xsl +++ b/doc/custom.xsl @@ -0,0 +1,3 @@ + + + diff --git a/doc/package/ebuild/eapi/2.docbook b/doc/package/ebuild/eapi/2.docbook index 20f7434df..71b11a9bb 100644 --- a/doc/package/ebuild/eapi/2.docbook +++ b/doc/package/ebuild/eapi/2.docbook @@ -274,15 +274,357 @@ src_compile() { -
- EAPI 2_pre3 -
+
+ EAPI 2 Draft +
+ Helpers +
+ doman +
+ Recognition of Language Codes in File Names + + Language codes in file names are now used for path translation. + + Man Page Path Translation + + + + + + Source + Destination + + + + + foo.1 + /usr/share/man/man1/foo.1 + + + foo.lang.1 + /usr/share/man/lang/man1/foo.1 + + + +
+
+
+
+ unpack +
+ Gitweb Snapshots + + To aid interoperatiblity with gitweb, files with the suffixes of ;sf=tbz2 + and ;sf=tgz are now treated as .tar.bz2 and .tar.gz archives, respectively. + This allows for ebuilds to consume gitweb snapshots and still use the + default src_unpack implementation. + +
+
+
+
+ Metadata +
+ Dependencies +
+ Blocker Atoms +
+ New Meaning for Old Syntax + + Blocker atoms which use the previously existing !atom syntax now have + a slightly different meaning. These blocker atoms indicate that + conflicting packages may be temporarily installed simultaneously. When + temporary simultaneous installation of conflicting packages occurs, the + installation of a newer package may overwrite any colliding files that + belong to an older package which is explicitly blocked. When such file + collisions occur, the colliding files cease to belong to the older + package, and they remain installed after the older package is + eventually uninstalled. The older package is uninstalled only after + any newer blocking packages have been merged on top of it. + +
+
+ New !!atom Syntax + + A new !!atom syntax is now supported, for use in special cases for which + temporary simultaneous installation of conflicting packages should not be + allowed. If a given package happens to be blocked my a mixture of atoms + consisting of both the !atom and !!atom syntaxes, the !!atom syntax takes + precedence over the !atom syntax. + +
+
+
+ USE Dependencies +
+ Unconditional USE Dependencies + Syntax Examples + + + + + + Example + Meaning + + + + + foo[bar] + foo must have bar enabled + + + foo[bar,baz] + foo must have both bar and baz enabled + + + foo[-bar,baz] + foo must have bar disabled and baz enabled + + + +
+
+
+ Conditional USE Dependencies + Syntax Examples + + + + + + Compact Form + Equivalent Expanded Form + + + + + foo[bar?] + bar? ( foo[bar] ) !bar? ( foo ) + + + foo[!bar?] + bar? ( foo ) !bar? ( foo[-bar] ) + + + foo[bar=] + bar? ( foo[bar] ) !bar? ( foo[-bar] ) + + + foo[!bar=] + bar? ( foo[-bar] ) !bar? ( foo[bar] ) + + + +
+
+
+
+
+ SRC_URI +
+ Customization of Output File Names + + A new syntax is supported which allows customization of the output + file name for a given URI. In order to customize the output file + name, a given URI should be followed by a "->" operator which, + in turn, should be followed by the desired output file name. As + usual, all tokens, including the operator and output file name, + should be separated by whitespace. + +
+
+
+
Phases -
+
New src_prepare Phase Function - A new src_prepare function is called in-between the src_unpack and - src_configure functions, with cwd initially set to $S. + A new src_prepare function is called after the src_unpack + function, with cwd initially set to $S. + +
+
+ New src_configure Phase Function + + The configure portion of the src_compile function has been + split into a separate function which is named src_configure. The + src_configure function is called in-between the src_prepare and + src_compile functions. + + +src_configure() { + if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then + econf + fi +} + +src_compile() { + if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ] ; then + emake || die "emake failed" + fi +} + +
+
+ Execution Order of Phase Functions + Execution Order of Phase Functions + + + + + Phase Function Name + + + + + pkg_setup + + + src_unpack + + + src_prepare + + + src_configure + + + src_compile + + + src_test + + + src_install + + + pkg_preinst + + + pkg_postinst + + + pkg_prerm + + + pkg_postrm + + + +
+
+
+ Default Phase Functions + + The default pkg_nofetch and src_* phase functions are now + accessible via a function having a name + that begins with default_ and + ends with the respective phase function name. For example, + a call to a function with the name default_src_compile is + equivalent to a call to the default src_compile + implementation. + + Default Phase Functions + + + + + Function Name + + + + + default_pkg_nofetch + + + default_src_unpack + + + default_src_prepare + + + default_src_configure + + + default_src_compile + + + default_src_test + + + +
+ + The default phase functions for a particular EAPI are also + accessible as functions having names that start with 'eapi' + followed by the EAPI value. For example, a call to a function + named eapi0_src_compile is equivalent to a call to the + default src_compile implementation that is provided with EAPI 0. + + Default EAPI Phase Functions + + + + + Function Name + + + + + eapi0_pkg_nofetch + + + eapi0_src_unpack + + + eapi0_src_compile + + + eapi0_src_test + + + eapi1_pkg_nofetch + + + eapi1_src_unpack + + + eapi1_src_compile + + + eapi1_src_test + + + eapi2_pkg_nofetch + + + eapi2_src_unpack + + + eapi2_src_prepare + + + eapi2_src_configure + + + eapi2_src_compile + + + eapi2_src_test + + + +
+
+
+ Default Phase Function Alias + + A function named "default" is redefined for each phase so that it + will call the default_* function corresponding to the current phase. + For example, a call to the function named "default" during the + src_compile phase is equivalent to a call to the function named + default_src_compile.
diff --git a/pym/portage/sets/files.py b/pym/portage/sets/files.py index 947b371a8..8bcf131fa 100644 --- a/pym/portage/sets/files.py +++ b/pym/portage/sets/files.py @@ -55,7 +55,7 @@ class StaticFileSet(EditablePackageSet): setattr(self, key, " ".join(value)) def _validate(self, atom): - return ValidAtomValidator(atom) + return bool(atom[:1] == SETPREFIX or ValidAtomValidator(atom)) def write(self): write_atomic(self._filename, "".join("%s\n" % (atom,) \ -- 2.26.2