X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/d7cfdb226f4463b96a3ce50f93142e4b6c0d8420..a72fdca967a7ef8c996757b0992297d2d5c1004c:/pinch.py diff --git a/pinch.py b/pinch.py index 1b11709..d4728fe 100644 --- a/pinch.py +++ b/pinch.py @@ -172,9 +172,9 @@ class ChannelSearchPath(TarrableSearchPath): new_gitpin = parse_channel(v, self) fetch_resources(v, self, new_gitpin) ensure_git_rev_available(v, self, new_gitpin, old_revision) - check_channel_contents(v, self) + check_channel_contents(v, self, new_gitpin) return ChannelPin( - release_name=self.release_name, + release_name=new_gitpin.release_name, tarball_url=self.table['nixexprs.tar.xz'].absolute_url, tarball_sha256=self.table['nixexprs.tar.xz'].digest, git_revision=self.git_revision) @@ -241,7 +241,6 @@ def parse_channel(v: Verification, channel: TarrableSearchPath) -> GitPin: h1_name = d.getElementsByTagName('h1')[0].firstChild.nodeValue.split()[2] v.status(title_name) v.result(title_name == h1_name) - channel.release_name = title_name v.status('Extracting git commit:') git_commit_node = d.getElementsByTagName('tt')[0] @@ -334,14 +333,14 @@ def git_cachedir(git_repo: str) -> str: digest_string(git_repo.encode())) -def tarball_cache_file(channel: TarrableSearchPath) -> str: +def tarball_cache_file(channel: TarrableSearchPath, pin: GitPin) -> str: return os.path.join( xdg.XDG_CACHE_HOME, 'pinch/git-tarball', '%s-%s-%s' % (digest_string(channel.git_repo.encode()), - channel.git_revision, - channel.release_name)) + pin.git_revision, + pin.release_name)) def verify_git_ancestry( @@ -445,12 +444,12 @@ def ensure_git_rev_available( def compare_tarball_and_git( v: Verification, - channel: TarrableSearchPath, + pin: GitPin, channel_contents: str, git_contents: str) -> None: v.status('Comparing channel tarball with git checkout') match, mismatch, errors = compare(os.path.join( - channel_contents, channel.release_name), git_contents) + channel_contents, pin.release_name), git_contents) v.ok() v.check('%d files match' % len(match), len(match) > 0) v.check('%d files differ' % len(mismatch), len(mismatch) == 0) @@ -512,7 +511,7 @@ def git_get_tarball( v: Verification, channel: TarrableSearchPath, pin: GitPin) -> str: - cache_file = tarball_cache_file(channel) + cache_file = tarball_cache_file(channel, pin) if os.path.exists(cache_file): cached_tarball = open(cache_file).read(9999) if os.path.exists(cached_tarball): @@ -550,40 +549,41 @@ def git_get_tarball( def check_channel_metadata( v: Verification, - channel: TarrableSearchPath, + pin: GitPin, channel_contents: str) -> None: v.status('Verifying git commit in channel tarball') v.result( open( os.path.join( channel_contents, - channel.release_name, - '.git-revision')).read(999) == channel.git_revision) + pin.release_name, + '.git-revision')).read(999) == pin.git_revision) v.status( 'Verifying version-suffix is a suffix of release name %s:' % - channel.release_name) + pin.release_name) version_suffix = open( os.path.join( channel_contents, - channel.release_name, + pin.release_name, '.version-suffix')).read(999) v.status(version_suffix) - v.result(channel.release_name.endswith(version_suffix)) + v.result(pin.release_name.endswith(version_suffix)) def check_channel_contents( v: Verification, - channel: TarrableSearchPath) -> None: + channel: TarrableSearchPath, + pin: GitPin) -> None: with tempfile.TemporaryDirectory() as channel_contents, \ tempfile.TemporaryDirectory() as git_contents: extract_tarball(v, channel, channel_contents) - check_channel_metadata(v, channel, channel_contents) + check_channel_metadata(v, pin, channel_contents) git_checkout(v, channel, git_contents) - compare_tarball_and_git(v, channel, channel_contents, git_contents) + compare_tarball_and_git(v, pin, channel_contents, git_contents) v.status('Removing temporary directories') v.ok()