aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Erdmann <dywi@mailerd.de>2013-06-22 17:03:05 +0200
committerAndré Erdmann <dywi@mailerd.de>2013-06-22 17:03:05 +0200
commit5374a6066d9f8615243bba9b0a2d0c5be487f653 (patch)
treef1d06333d93cdc706bb92c78ddeb3d9ec6ee4a8c /roverlay/packageinfo.py
parentroverlay/packageinfo: fixup; remove update lock (diff)
downloadR_overlay-5374a6066d9f8615243bba9b0a2d0c5be487f653.tar.gz
R_overlay-5374a6066d9f8615243bba9b0a2d0c5be487f653.tar.bz2
R_overlay-5374a6066d9f8615243bba9b0a2d0c5be487f653.zip
roverlay/packageinfo, revbump: set src_uri_dest
Rename distfiles of rev-bumped ebuilds.
Diffstat (limited to 'roverlay/packageinfo.py')
-rw-r--r--roverlay/packageinfo.py48
1 files changed, 26 insertions, 22 deletions
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
index 7b74425..b86d69d 100644
--- a/roverlay/packageinfo.py
+++ b/roverlay/packageinfo.py
@@ -94,6 +94,7 @@ class PackageInfo ( object ):
PKGSUFFIX_REGEX = re.compile (
config.get_or_fail ( 'R_PACKAGE.suffix_regex' ) + '$'
)
+ EBUILDREV_REGEX = re.compile ( '[-]r[0-9]+$' )
ALWAYS_FALLBACK = frozenset ( ( 'ebuild', 'ebuild_file' ) )
_UPDATE_KEYS_SIMPLE = frozenset ((
@@ -505,19 +506,36 @@ class PackageInfo ( object ):
def revbump ( self, newrev=None ):
"""Do whatever necessary to revbump this pakages, that is set/update
- all data like src_uri_destfile.
+ all data like src_uri_dest and ebuild_verstr.
arguments:
* newrev -- new revision, (current rev + 1) is used if this is None
"""
- if newrev is None:
- # get old rev and increment it
- ## direct dict access
- self._info ['rev'] += 1
- else:
- self._info ['rev'] = int ( newrev )
+ rev = self._info['rev'] + 1 if newrev is None else int ( newrev )
+ rev_str = ( '-r' + str ( rev ) ) if rev > 0 else ''
+ vstr = '.'.join ( str ( k ) for k in self ['version'] ) + rev_str
+
+ # preserve destpath directory
+ # (this allows to handle paths like "a/b.tar/pkg.tgz" properly)
+ #
+ old_destpath = self ['package_src_destpath'].rpartition ( os.path.sep )
+
+ # os.path.splitext does not "recognize" .tar.gz
+ fhead, ftar, fext = old_destpath[2].rpartition ( '.tar' )
+ if not ftar:
+ fhead, fext = os.path.splitext ( fext )
+
+ # FIXME: any way to get this reliably (+faster) done without a regex?
+ # ( a,b,c=fhead.rpartition ( '-r' ); try int(c) ...; ?)
+ distfile = (
+ old_destpath[0] + old_destpath[1]
+ + self.EBUILDREV_REGEX.sub ( '', fhead ) + rev_str + ftar + fext
+ )
+
+ self._info ['rev'] = rev
+ self._info ['ebuild_verstr'] = vstr
+ self._info ['src_uri_dest'] = distfile
- self._reset_version_str()
return self
# --- end of revbump (...) ---
@@ -620,20 +638,6 @@ class PackageInfo ( object ):
return None
# --- end of get_evars (...) ---
- def _reset_version_str ( self ):
- """Recreates the version_str ($PVR) of this PackageInfo instance."""
- rev = self ['rev']
- version = self ['version']
-
- if rev > 0:
- vstr = '.'.join ( str ( k ) for k in version ) + '-r' + str ( rev )
- else:
- vstr = '.'.join ( str ( k ) for k in version )
-
- self._info ['ebuild_verstr'] = vstr
- #return vstr
- # --- end of _reset_version_str (...) ---
-
def _update ( self, info ):
"""Updates self._info using the given info dict.