From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-906269-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 12F38138330 for <garchives@archives.gentoo.org>; Thu, 13 Oct 2016 16:03:31 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 6DA1421C072; Thu, 13 Oct 2016 16:03:30 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 4367821C072 for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:30 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7C8AC3413AA for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:27 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 729E12F7 for <gentoo-commits@lists.gentoo.org>; Thu, 13 Oct 2016 16:03:26 +0000 (UTC) From: "Ettore Di Giacinto" <mudler@sabayonlinux.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ettore Di Giacinto" <mudler@sabayonlinux.org> Message-ID: <1476374224.adb7a5cf8ebd6d3f102bbd46315373288edee0fc.mudler@gentoo> Subject: [gentoo-commits] proj/gentoo-mate:master commit in: scripts/ X-VCS-Repository: proj/gentoo-mate X-VCS-Files: scripts/keyword-helper X-VCS-Directories: scripts/ X-VCS-Committer: mudler X-VCS-Committer-Name: Ettore Di Giacinto X-VCS-Revision: adb7a5cf8ebd6d3f102bbd46315373288edee0fc X-VCS-Branch: master Date: Thu, 13 Oct 2016 16:03:26 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 2ea9b17d-da7e-43c3-9ab6-22223db3f0f3 X-Archives-Hash: a12d01cabcce69ba3f21699305dabda2 commit: adb7a5cf8ebd6d3f102bbd46315373288edee0fc Author: mudler <mudler <AT> sabayon <DOT> org> AuthorDate: Thu Oct 13 15:56:41 2016 +0000 Commit: Ettore Di Giacinto <mudler <AT> sabayonlinux <DOT> org> CommitDate: Thu Oct 13 15:57:04 2016 +0000 URL: https://gitweb.gentoo.org/proj/gentoo-mate.git/commit/?id=adb7a5cf scripts: Adding keyword-helper script to help out in KEYWORDS manipulations scripts/keyword-helper | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/scripts/keyword-helper b/scripts/keyword-helper new file mode 100755 index 0000000..d5768a1 --- /dev/null +++ b/scripts/keyword-helper @@ -0,0 +1,122 @@ +#!/usr/bin/perl +# keyword-helper - utility to ekeyword packages +# Usage: from the root of the overlay +# keyword-helper app-foo/bar-1.2 app-foo/baz-1.2 +# <mudler@sabayon.org> + +use Cwd; + +my $TARGET_KEYWORD = $ENV{TARGET_KEYWORD} // "amd64 x86" + ; # KEYWORD changes, arguments are given directly to ekeyword +my $BUGZ = + $ENV{BUGZ}; # Bug reference. Mandatory if no COMMIT_MSG is specified +my $COMMIT_MSG = $ENV{COMMIT_MSG}; # Git commit message + +my @KEYWORD_PACKAGES = @ARGV; # Packages that we want to manipulate +my $CWD = getcwd; + +sub strip_pvr { s/-[0-9]{1,}.*$//; } + +sub package_has_pvr { /-[0-9]{1,}.*$/; } + +# print helpers + +sub say { print join( "\n", @_ ) . "\n"; } + +sub err { say "\e[31m ", @_, " \e[0m"; } + +sub fatal { err @_; exit 1; } + +sub ok { say "\e[1;34m ", @_, " \e[0m"; } + +sub info { say "\e[1;37m ", @_, " \e[0m"; } + +# deadly checks + +if ( !@ARGV or $ARGV[0] eq "-h" or $ARGV[0] eq "--help" ) { + say "You must feed me with at least a package version", "", + "e.g. $0 package", "", + "ENV variables options:", "", + " COMMIT_MSG \t\t default commit message", + " BUGZ \t\t Gentoo Bugzilla id, e.g. 596998", + " TARGET_KEYWORD \t the keyword(s) to set separated by a space. e.g. TARGET_KEYWORD='amd64 x86'"; + exit 1; +} + +if ( -e "${CWD}/Manifest" ) { + fatal "You are running me from the wrong folder, don't you?", + "I need to be executed from the root of the overlay!"; +} + +fatal "You should supply a bug id with the BUGZ environment variable or", + "a custom commit message with COMMIT_MSG at least" + if ( !$BUGZ and !$COMMIT_MSG ); + +# Split TARGET_KEYWORD by space and put into an array +my @ARCHES = split( /\s/, $TARGET_KEYWORD ); + +# Cycle packages that need to be manipulated +# Here it's being used $_, that contains strings in the following format: category/package, contains package version and revision too +for (@KEYWORD_PACKAGES) { + fatal + "You must feed me with package versions, not atoms or whatever!", + "bailing out since you are using me in the WRONG way, fix yourself first" + unless package_has_pvr; + my $local_package = + (/\/(.*)$/)[0] + . ".ebuild" + ; # Extract the package name and version, included of revision if any + info "Keywording $TARGET_KEYWORD on $_ [$local_package]"; + strip_pvr(); # stripping PVR + + if ( -d $_ ) { + chdir($_); # entering in the directory + } + else { + fatal "$_ directory doesn't exists"; + } + + # Checking if ebuild we want to keyword is there + if ( -e $local_package ) { + + # Do magic with the ebuild, since it exists + foreach my $arch (@ARCHES) { + my $LOCAL_COMMIT_MSG = $COMMIT_MSG; + + # if no COMMIT_MSG is supplied, we generate it + if ( !$COMMIT_MSG ) { + my ( $keyword_symbol, $clean_arch ) = + ( $arch =~ /^(\^|\~|)(.*)$/ ) + ; # Getting the first character of a arch, it can be ~, ^ or "" to use it with ekeyword + my $prefix_msg; + if ( $keyword_symbol eq '^' ) { + $prefix_msg = "Drop $clean_arch keyword "; + } + elsif ( $keyword_symbol eq '~' ) { + $prefix_msg = "Added $arch keyword "; + } + elsif ( $keyword_symbol eq "" ) { + $prefix_msg = "Stable on $clean_arch keyword "; + } + $LOCAL_COMMIT_MSG = $prefix_msg . "wrt \#${BUGZ}"; + } + + system("ekeyword $arch $local_package"); + system("git add $local_package"); + system("repoman commit -m '$_: $LOCAL_COMMIT_MSG'"); + if ( $? >> 8 != 0 ) { + fatal + "Meh. we got errors. before going on, i want you to fix those by hand."; + } + else { + ok "Done for $_ [$local_package]"; + } + } + + } + else { + # errors, the ebuild cannot be found + fatal "/!\\ $local_package not found in $_ keywording failed!"; + } + chdir($CWD); +}