From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id B81781386F3 for ; Thu, 13 Aug 2015 20:53:51 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C4D1B14281; Thu, 13 Aug 2015 20:53:49 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 4977914281 for ; Thu, 13 Aug 2015 20:53:49 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 18174340834 for ; Thu, 13 Aug 2015 20:53:48 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 34C25124 for ; Thu, 13 Aug 2015 20:53:45 +0000 (UTC) From: "Mike Gilbert" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Gilbert" Message-ID: <1439499206.70a26591a5872c48a140edd2256e89a88b24b9de.floppym@gentoo> Subject: [gentoo-commits] proj/chromium-tools:master commit in: / X-VCS-Repository: proj/chromium-tools X-VCS-Files: chrome-bump X-VCS-Directories: / X-VCS-Committer: floppym X-VCS-Committer-Name: Mike Gilbert X-VCS-Revision: 70a26591a5872c48a140edd2256e89a88b24b9de X-VCS-Branch: master Date: Thu, 13 Aug 2015 20:53:45 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: ae4ffae3-c957-4554-a7c3-be37d0dbd2e7 X-Archives-Hash: 3dd354a38fc78dccfc208a509585498c commit: 70a26591a5872c48a140edd2256e89a88b24b9de Author: Mike Gilbert gentoo org> AuthorDate: Thu Aug 13 20:53:26 2015 +0000 Commit: Mike Gilbert gentoo org> CommitDate: Thu Aug 13 20:53:26 2015 +0000 URL: https://gitweb.gentoo.org/proj/chromium-tools.git/commit/?id=70a26591 Add my script for bumping google-chrome chrome-bump | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/chrome-bump b/chrome-bump new file mode 100755 index 0000000..b3f82a5 --- /dev/null +++ b/chrome-bump @@ -0,0 +1,140 @@ +#!/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': ('_p', 'google-chrome-stable'), + }, + 'www-client/google-chrome-beta': { + '*.ebuild': ('_p', 'google-chrome-beta'), + }, + 'www-client/google-chrome-unstable': { + '*.ebuild': ('_p', 'google-chrome-unstable'), + }, + 'www-plugins/chrome-binary-plugins': { + '*_p*.ebuild': ('_p', '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)) + +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 + + for pattern in PKGMAP[pkg]: + (sep, name) = PKGMAP[pkg][pattern] + ebuilds = sorted(glob(pattern), reverse=True) + + 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, revision)) + 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: + subprocess.check_call(['repoman', 'commit', '-S', '-m', pkg + ': automated update']) + 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()