Merged from trunk -r11484:11495
authorFabian Groffen <grobian@gentoo.org>
Fri, 5 Sep 2008 18:36:35 +0000 (18:36 -0000)
committerFabian Groffen <grobian@gentoo.org>
Fri, 5 Sep 2008 18:36:35 +0000 (18:36 -0000)
   | 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
doc/Makefile
doc/custom.xsl
doc/package/ebuild/eapi/2.docbook
pym/portage/sets/files.py

index e775ff3a8ecd33d729858182b4800a74626dc12d..16ee0bc8594cb6ebf0f61818ea91099c4db6691d 100755 (executable)
@@ -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):
index 5c2ab0ba9d674437e90497ac638fd1f3ce4d709a..261a0b405d78ef064d5570c8da7b148244f5f2ab 100644 (file)
@@ -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
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f1692b12fc66a0d2c47171c09140c79c443ac64e 100644 (file)
@@ -0,0 +1,3 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:param name="toc.section.depth" select="20"/>
+</xsl:stylesheet>
index 20f7434df6cd3f85c46ae583dd5603ca702488de..71b11a9bb47fded8c4e5e7cd7342686b5e71b052 100644 (file)
@@ -274,15 +274,357 @@ src_compile() {
                </section>
        </section>
 </section>
-<section id='package-ebuild-eapi-2_pre3'>
-       <title>EAPI 2_pre3</title>
-       <section id='package-ebuild-eapi-2-phases'>
+<section id='package-ebuild-eapi-2-draft'>
+       <title>EAPI 2 Draft</title>
+       <section id='package-ebuild-eapi-2-draft-helpers'>
+       <title>Helpers</title>
+       <section id='package-ebuild-eapi-2-draft-helpers-doman'>
+       <title>doman</title>
+       <section id='package-ebuild-eapi-2-draft-helpers-doman-language-codes'>
+       <title>Recognition of Language Codes in File Names</title>
+       <para>
+       Language codes in file names are now used for path translation.
+       </para>
+       <table><title>Man Page Path Translation</title>
+       <tgroup cols='2' align='left' >
+       <colspec colname='source'/>
+       <colspec colname='destination'/>
+       <thead>
+       <row>
+       <entry>Source</entry>
+       <entry>Destination</entry>
+       </row>
+       </thead>
+       <tbody>
+       <row>
+       <entry>foo.1</entry>
+       <entry>/usr/share/man/man1/foo.1</entry>
+       </row>
+       <row>
+       <entry>foo.lang.1</entry>
+       <entry>/usr/share/man/lang/man1/foo.1</entry>
+       </row>
+       </tbody>
+       </tgroup>
+       </table>
+       </section>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-helpers-unpack'>
+       <title>unpack</title>
+       <section id='package-ebuild-eapi-2-draft-helpers-unpack-gitweb-snapshots'>
+       <title>Gitweb Snapshots</title>
+       <para>
+       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.
+       </para>
+       </section>
+       </section>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-metadata'>
+       <title>Metadata</title>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies'>
+       <title>Dependencies</title>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-blocker-atoms'>
+       <title>Blocker Atoms</title>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-blocker-atoms-new-meaning'>
+       <title>New Meaning for Old Syntax</title>
+       <para>
+       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.
+       </para>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-blocker-atoms-new-syntax'>
+       <title>New !!atom Syntax</title>
+       <para>
+       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.
+       </para>
+       </section>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-use'>
+       <title>USE Dependencies</title>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-use-unconditional'>
+       <title>Unconditional USE Dependencies</title>
+       <table><title>Syntax Examples</title>
+       <tgroup cols='2' align='left' >
+       <colspec colname='example'/>
+       <colspec colname='meaning'/>
+       <thead>
+       <row>
+       <entry>Example</entry>
+       <entry>Meaning</entry>
+       </row>
+       </thead>
+       <tbody>
+       <row>
+       <entry>foo[bar]</entry>
+       <entry>foo must have bar enabled</entry>
+       </row>
+       <row>
+       <entry>foo[bar,baz]</entry>
+       <entry>foo must have both bar and baz enabled</entry>
+       </row>
+       <row>
+       <entry>foo[-bar,baz]</entry>
+       <entry>foo must have bar disabled and baz enabled</entry>
+       </row>
+       </tbody>
+       </tgroup>
+       </table>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-metadata-dependencies-use-conditional'>
+       <title>Conditional USE Dependencies</title>
+       <table><title>Syntax Examples</title>
+       <tgroup cols='2' align='left' >
+       <colspec colname='compact'/>
+       <colspec colname='expanded'/>
+       <thead>
+       <row>
+       <entry>Compact Form</entry>
+       <entry>Equivalent Expanded Form</entry>
+       </row>
+       </thead>
+       <tbody>
+       <row>
+       <entry>foo[bar?]</entry>
+       <entry>bar? ( foo[bar]  ) !bar? ( foo       )</entry>
+       </row>
+       <row>
+       <entry>foo[!bar?]</entry>
+       <entry>bar? ( foo       ) !bar? ( foo[-bar] )</entry>
+       </row>
+       <row>
+       <entry>foo[bar=]</entry>
+       <entry>bar? ( foo[bar]  ) !bar? ( foo[-bar] )</entry>
+       </row>
+       <row>
+       <entry>foo[!bar=]</entry>
+       <entry>bar? ( foo[-bar] ) !bar? ( foo[bar]  )</entry>
+       </row>
+       </tbody>
+       </tgroup>
+       </table>
+       </section>
+       </section>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-metadata-src-uri'>
+               <title>SRC_URI</title>
+               <section id='package-ebuild-eapi-2-draft-metadata-src-uri-output-file-name-customization'>
+                       <title>Customization of Output File Names</title>
+                       <para>
+                       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.
+                       </para>
+               </section>
+       </section>
+       </section>
+       <section id='package-ebuild-eapi-2-draft-phases'>
                <title>Phases</title>
-               <section id='package-ebuild-eapi-2-phases-src-prepare'>
+               <section id='package-ebuild-eapi-2-draft-phases-src-prepare'>
                        <title>New src_prepare Phase Function</title>
                        <para>
-                       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.
+                       </para>
+               </section>
+               <section id='package-ebuild-eapi-2-draft-phases-src-configure'>
+                       <title>New src_configure Phase Function</title>
+                       <para>
+                       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.
+                       </para>
+                       <programlisting>
+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
+}
+                       </programlisting>
+               </section>
+               <section id='package-ebuild-eapi-2-draft-phases-order'>
+                       <title>Execution Order of Phase Functions</title>
+                       <table><title>Execution Order of Phase Functions</title>
+                               <tgroup cols='1' align='left' >
+                               <colspec colname='name'/>
+                               <thead>
+                               <row>
+                                       <entry>Phase Function Name</entry>
+                               </row>
+                               </thead>
+                               <tbody>
+                               <row>
+                                       <entry>pkg_setup</entry>
+                               </row>
+                               <row>
+                                       <entry>src_unpack</entry>
+                               </row>
+                               <row>
+                                       <entry>src_prepare</entry>
+                               </row>
+                               <row>
+                                       <entry>src_configure</entry>
+                               </row>
+                               <row>
+                                       <entry>src_compile</entry>
+                               </row>
+                               <row>
+                                       <entry>src_test</entry>
+                               </row>
+                               <row>
+                                       <entry>src_install</entry>
+                               </row>
+                               <row>
+                                       <entry>pkg_preinst</entry>
+                               </row>
+                               <row>
+                                       <entry>pkg_postinst</entry>
+                               </row>
+                               <row>
+                                       <entry>pkg_prerm</entry>
+                               </row>
+                               <row>
+                                       <entry>pkg_postrm</entry>
+                               </row>
+                               </tbody>
+                               </tgroup>
+                       </table>
+               </section>
+               <section id='package-ebuild-eapi-2-draft-phases-default-functions'>
+                       <title>Default Phase Functions</title>
+                       <para>
+                       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.
+                       </para>
+                       <table><title>Default Phase Functions</title>
+                               <tgroup cols='1' align='left' >
+                               <colspec colname='name'/>
+                               <thead>
+                               <row>
+                                       <entry>Function Name</entry>
+                               </row>
+                               </thead>
+                               <tbody>
+                               <row>
+                                       <entry>default_pkg_nofetch</entry>
+                               </row>
+                               <row>
+                                       <entry>default_src_unpack</entry>
+                               </row>
+                               <row>
+                                       <entry>default_src_prepare</entry>
+                               </row>
+                               <row>
+                                       <entry>default_src_configure</entry>
+                               </row>
+                               <row>
+                                       <entry>default_src_compile</entry>
+                               </row>
+                               <row>
+                                       <entry>default_src_test</entry>
+                               </row>
+                               </tbody>
+                               </tgroup>
+                       </table>
+                       <para>
+                       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.
+                       </para>
+                       <table><title>Default EAPI Phase Functions</title>
+                               <tgroup cols='1' align='left' >
+                               <colspec colname='name'/>
+                               <thead>
+                               <row>
+                                       <entry>Function Name</entry>
+                               </row>
+                               </thead>
+                               <tbody>
+                               <row>
+                                       <entry>eapi0_pkg_nofetch</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi0_src_unpack</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi0_src_compile</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi0_src_test</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi1_pkg_nofetch</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi1_src_unpack</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi1_src_compile</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi1_src_test</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_pkg_nofetch</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_src_unpack</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_src_prepare</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_src_configure</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_src_compile</entry>
+                               </row>
+                               <row>
+                                       <entry>eapi2_src_test</entry>
+                               </row>
+                               </tbody>
+                               </tgroup>
+                       </table>
+               </section>
+               <section id='package-ebuild-eapi-2-draft-phases-default-function-alias'>
+                       <title>Default Phase Function Alias</title>
+                       <para>
+                       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.
                        </para>
                </section>
        </section>
index 947b371a8f054d8e2292ee4c3f4f7f9ddb06b985..8bcf131fab97d4e63c462ffaad19a8be2810a060 100644 (file)
@@ -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,) \