Merged from trunk -r13400:13404
authorFabian Groffen <grobian@gentoo.org>
Tue, 28 Apr 2009 19:03:01 +0000 (19:03 -0000)
committerFabian Groffen <grobian@gentoo.org>
Tue, 28 Apr 2009 19:03:01 +0000 (19:03 -0000)
   | 13401    | Add a new EAPI.definition check for cases in which EAPI is  |
   | zmedico  | defined after an inherit call. Thanks to Markus Meier       |
   |          | <maekke@g.o> for the initial patch.                         |

   | 13402    | fix e-mail munging and add see also section                 |
   | SpankMan |                                                             |

   | 13403    | Bug #71646 - Don't allow the HISTFILE variable into the     |
   | zmedico  | ebuild environment since it triggers sandbox violations.    |

   | 13404    | Put ebuild helpers at the absolute front of the PATH.       |
   | zmedico  |                                                             |

svn path=/main/branches/prefix/; revision=13405

bin/ebuild.sh
bin/repoman
man/repoman.1
man/xpak.5
pym/portage/__init__.py
pym/repoman/checks.py
pym/repoman/errors.py

index b872b5e5aabe8067cf87b075c57fec54d710186b..3e2d5155156c76ddcb5eb3597b15447c5f8294e8 100755 (executable)
@@ -71,10 +71,14 @@ unalias -a
 # Unset some variables that break things.
 unset GZIP BZIP BZIP2 CDPATH GREP_OPTIONS GREP_COLOR GLOBIGNORE
 
-#export PATH="/usr/local/sbin:/sbin:/usr/sbin:$PORTAGE_BIN_PATH/ebuild-helpers:/usr/local/bin:/bin:/usr/bin:${ROOTPATH}"
+ROOTPATH=${ROOTPATH##:}
+ROOTPATH=${ROOTPATH%%:}
+PREROOTPATH=${PREROOTPATH##:}
+PREROOTPATH=${PREROOTPATH%%:}
+#PATH=$PORTAGE_BIN_PATH/ebuild-helpers:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin${ROOTPATH:+:}$ROOTPATH
 # PREFIX: we deviate in path order, should we split up DEFAULT_PATH?
-export PATH="${DEFAULT_PATH}:$PORTAGE_BIN_PATH/ebuild-helpers:${ROOTPATH}"
-[ ! -z "$PREROOTPATH" ] && export PATH="${PREROOTPATH%%:}:$PATH"
+PATH="$PORTAGE_BIN_PATH/ebuild-helpers:$PREROOTPATH${PREROOTPATH:+:}${DEFAULT_PATH}:${ROOTPATH:+:}$ROOTPATH"
+export PATH
 
 source "${PORTAGE_BIN_PATH}/isolated-functions.sh"  &>/dev/null
 
@@ -1632,7 +1636,7 @@ filter_readonly_variables() {
                SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
                SANDBOX_LOG SANDBOX_ON"
        filtered_vars="${readonly_bash_vars} ${READONLY_PORTAGE_VARS}
-               BASH_.* PATH POSIXLY_CORRECT"
+               BASH_.* HISTFILE PATH POSIXLY_CORRECT"
        if hasq --filter-sandbox $* ; then
                filtered_vars="${filtered_vars} SANDBOX_.*"
        else
@@ -1925,10 +1929,9 @@ ebuild_main() {
                        ;;
        esac
 
-       #export PATH="/usr/local/sbin:/sbin:/usr/sbin:${ebuild_helpers_path}:/usr/local/bin:/bin:/usr/bin:${ROOTPATH}"
+       #PATH=$ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin${ROOTPATH:+:}$ROOTPATH
        # PREFIX: same deviation as at the top of this file
-       export PATH="${DEFAULT_PATH}:${ebuild_helpers_path}:${ROOTPATH}"
-       [[ -n $PREROOTPATH ]] && export PATH="${PREROOTPATH%%:}:$PATH"
+       PATH="$ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}${DEFAULT_PATH}${ROOTPATH:+:}$ROOTPATH"
        unset ebuild_helpers_path
 
        if ! hasq $EBUILD_SH_ARGS clean depend help info nofetch ; then
index 669715ce72c3c22f43085f12c52c4abd74ed5592..243645bec014cdece1bf4e5ad69b1b76737f9cc2 100755 (executable)
@@ -264,6 +264,7 @@ qahelp={
        "LICENSE.missing":"Ebuilds that have a missing or empty LICENSE variable",
        "DESCRIPTION.missing":"Ebuilds that have a missing or empty DESCRIPTION variable",
        "DESCRIPTION.toolong":"DESCRIPTION is over %d characters" % max_desc_len,
+       "EAPI.definition":"EAPI is defined after an inherit call (must be defined before)",
        "EAPI.incompatible":"Ebuilds that use features that are only available with a different EAPI",
        "EAPI.unsupported":"Ebuilds that have an unsupported EAPI version (you must upgrade portage)",
        "SLOT.missing":"Ebuilds that have a missing or empty SLOT variable",
index 6389a5fa2eeda4e3f6f3738f1177646fedbd0906..59320ca0ba094b300b605195a1a911c777614d5d 100644 (file)
@@ -105,6 +105,9 @@ Syntax error in DEPEND (usually an extra/missing space/parenthesis)
 .B DESCRIPTION.missing
 Ebuilds that have a missing or empty DESCRIPTION variable
 .TP
+.B EAPI.definition
+EAPI is defined after an inherit call (must be defined before)
+.TP
 .B EAPI.incompatible
 Ebuilds that use features that are only available with a different EAPI
 .TP
index 22667dc67c8595ff3dff214c86954cd0eba890a5..149ffdeaf699278c64c5ed83dbf388ca2a8002b4 100644 (file)
@@ -187,4 +187,8 @@ bytes. there we got our data block:
  |<-----dataN_offset----->|<--dataN_len->|
  |<data1data2data3data...>|<data-we-want>|
 .SH AUTHORS
-Lars Hartmann <lars<at>chaotika<dot>org>
+Lars Hartmann <lars@chaotika.org>
+.SH "SEE ALSO"
+.BR qtbz2 (1),
+.BR quickpkg (1),
+.BR qxpak (1)
index 379eef5ca906217ff48f78aca024d14e6c532774..6ff97393afa087f9fc3de6d70527c8534209fa12 100644 (file)
@@ -1134,7 +1134,7 @@ class config(object):
 
        # variables that break bash
        _environ_filter += [
-               "POSIXLY_CORRECT",
+               "HISTFILE", "POSIXLY_CORRECT",
        ]
 
        # portage config variables and variables set directly by portage
index 4588120578d9ab776dd963c772e50dc7cef99716..f1dce8b89afb38d8cd4f5acc785d5d66780a9814 100644 (file)
@@ -213,6 +213,23 @@ class EbuildUselessCdS(LineCheck):
                elif self.method_re.match(line):
                        self.check_next_line = True
 
+class EapiDefinition(LineCheck):
+       """ Check that EAPI is defined before inherits"""
+       repoman_check_name = 'EAPI.definition'
+
+       eapi_re = re.compile(r'^EAPI=')
+       inherit_re = re.compile(r'^\s*inherit\s')
+
+       def new(self, pkg):
+               self.inherit_line = None
+
+       def check(self, num, line):
+               if self.eapi_re.match(line) is not None:
+                       if self.inherit_line is not None:
+                               return errors.EAPI_DEFINED_AFTER_INHERIT
+               elif self.inherit_re.match(line) is not None:
+                       self.inherit_line = line
+
 class EbuildPatches(LineCheck):
        """Ensure ebuilds use bash arrays for PATCHES to ensure white space safety"""
        repoman_check_name = 'ebuild.patches'
@@ -349,7 +366,7 @@ _constant_checks = tuple((c() for c in (
        EbuildHeader, EbuildWhitespace, EbuildQuote,
        EbuildAssignment, EbuildUselessDodoc,
        EbuildUselessCdS, EbuildNestedDie,
-       EbuildPatches, EbuildQuotedA,
+       EbuildPatches, EbuildQuotedA, EapiDefinition,
        IUseUndefined, ImplicitRuntimeDeps, InheritAutotools,
        EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS,
        DeprecatedBindnowFlags, WantAutoDefaultValue)))
index 2e13e0d67f45746c0737df1681731678515ce533..bab2faca7a1abec5346a81cc44e274c0f68359a4 100644 (file)
@@ -16,3 +16,4 @@ REDUNDANT_CD_S_ERROR = 'Ebuild has redundant cd ${S} statement on line: %d'
 EMAKE_PARALLEL_DISABLED = 'Upstream parallel compilation bug (ebuild calls emake -j1 on line: %d)'
 EMAKE_PARALLEL_DISABLED_VIA_MAKEOPTS = 'Upstream parallel compilation bug (MAKEOPTS=-j1 on line: %d)'
 DEPRECATED_BINDNOW_FLAGS = 'Deprecated bindnow-flags call on line: %d'
+EAPI_DEFINED_AFTER_INHERIT = 'EAPI defined after inherit on line: %d'