diff options
Diffstat (limited to 'chrome-bump')
-rwxr-xr-x | chrome-bump | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/chrome-bump b/chrome-bump deleted file mode 100755 index 1b138e5..0000000 --- a/chrome-bump +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function - -import argparse -from contextlib import closing -from debian import deb822 -from glob import glob -import os -import os.path -import portage -import shutil -import subprocess -import sys -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -ARCHIVE = 'https://dl.google.com/linux/chrome/deb' -DIST = 'stable' -COMP = 'main' -ARCH = 'amd64' - -PORTDIR = portage.settings.repositories['gentoo'].location - -PKGMAP = { - 'www-client/google-chrome': { - '*.ebuild': ('', 'google-chrome-stable'), - }, - 'www-client/google-chrome-beta': { - '*.ebuild': ('', 'google-chrome-beta'), - }, - 'www-client/google-chrome-unstable': { - '*.ebuild': ('', 'google-chrome-unstable'), - }, - 'www-plugins/chrome-binary-plugins': { - '*[0123456789].ebuild': ('', 'google-chrome-stable'), - '*_beta*.ebuild': ('_beta', 'google-chrome-beta'), - '*_alpha*.ebuild': ('_alpha', 'google-chrome-unstable'), - }, -} - -ARGS = None - -def get_deb_release(archive, dist): - url = '%s/dists/%s/Release' % (archive, dist) - with closing(urlopen(url)) as fp: - return deb822.Release(fp) - -def get_deb_packages(archive, dist, comp, arch): - url = '%s/dists/%s/%s/binary-%s/Packages' % (archive, dist, comp, arch) - with closing(urlopen(url)) as fp: - return list(deb822.Packages.iter_paragraphs(fp, use_apt_pkg=False)) - -def ebuild_pvr(pn, ebuild): - return ebuild[len(pn) + 1 : -7] - -def ebuild_pv(pn, ebuild): - return ebuild_pvr(pn, ebuild).split('-r')[0] - -def ebuild_version(pn, ebuild): - return ebuild_pv(pn, ebuild).split('_')[0] - -def new_ebuild(pn, version, sep, revision): - return pn + '-' + version + sep + revision + '.ebuild' - -def copy_ebuild(src, dest): - print('cp ' + src + ' ' + dest) - if not ARGS.dry_run: - shutil.copyfile(src, dest) - print('git add ' + dest) - if not ARGS.dry_run: - subprocess.check_call(['git', 'add', dest]) - -def remove_ebuild(ebuild): - print('git rm ' + ebuild) - if not ARGS.dry_run: - subprocess.check_call(['git', 'rm', ebuild]) - -def sync_ebuilds(pkg, debs): - os.chdir(os.path.join(PORTDIR, pkg)) - pn = pkg.split('/')[1] - changed = False - new_versions = [] - - for pattern in PKGMAP[pkg]: - (sep, name) = PKGMAP[pkg][pattern] - ebuilds = sorted(glob(pattern), reverse=True) - - if not ebuilds: - continue - - for deb in debs: - if deb['Package'] != name: - continue - - (version, revision) = deb['Version'].split('-') - found = False - for ebuild in ebuilds: - if version == ebuild_version(pn, ebuild): - found = True - break - if not found: - copy_ebuild(ebuilds[0], new_ebuild(pn, version, sep, '')) - new_versions.append(version) - changed = True - - for ebuild in ebuilds: - found = False - for deb in debs: - if deb['Package'] != name: - continue - - (version, revision) = deb['Version'].split('-') - if version == ebuild_version(pn, ebuild): - found = True - break - if not found: - remove_ebuild(ebuild) - changed = True - - if changed: - if ARGS.commit: - print('repoman commit') - if not ARGS.dry_run: - message = '%s: automated update (%s)' % (pkg, ', '.join(new_versions)) - if len(message) > 69: - message = '%s: automated update' % pkg - subprocess.check_call(['repoman', 'commit', '-S', '-m', message]) - else: - print('repoman manifest') - if not ARGS.dry_run: - subprocess.check_call(['repoman', 'manifest']) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--commit', '-c', action='store_true') - parser.add_argument('--dry-run', '-n', action='store_true') - global ARGS - ARGS = parser.parse_args() - - debs = get_deb_packages(ARCHIVE, DIST, COMP, ARCH) - for pkg in PKGMAP: - sync_ebuilds(pkg, debs) - -if __name__ == '__main__': - main() |