From patchwork Tue Jun 25 03:26:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Sangorrin X-Patchwork-Id: 11014583 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B542313AF for ; Tue, 25 Jun 2019 03:27:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A60EA28A8C for ; Tue, 25 Jun 2019 03:27:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9A6F128ACE; Tue, 25 Jun 2019 03:27:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1985228A8C for ; Tue, 25 Jun 2019 03:27:22 +0000 (UTC) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 3BB64B7D; Tue, 25 Jun 2019 03:26:58 +0000 (UTC) X-Original-To: cip-dev@lists.cip-project.org Delivered-To: cip-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 91327AE0 for ; Tue, 25 Jun 2019 03:26:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mo-csw.securemx.jp (mo-csw1115.securemx.jp [210.130.202.157]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 926C87FD for ; Tue, 25 Jun 2019 03:26:56 +0000 (UTC) Received: by mo-csw.securemx.jp (mx-mo-csw1115) id x5P3QfU1021456; Tue, 25 Jun 2019 12:26:41 +0900 X-Iguazu-Qid: 2wGrCre3N0ykLMqXWU X-Iguazu-QSIG: v=2; s=0; t=1561433201; q=2wGrCre3N0ykLMqXWU; m=pgXKsMFWFQZZLXeEiVJd+oBcSDPldWdYetD5FcnRiFs= Received: from imx2.toshiba.co.jp (imx2.toshiba.co.jp [106.186.93.51]) by relay.securemx.jp (mx-mr1112) id x5P3Qerx017098; Tue, 25 Jun 2019 12:26:41 +0900 Received: from enc01.localdomain ([106.186.93.100]) by imx2.toshiba.co.jp with ESMTP id x5P3Qenh022260; Tue, 25 Jun 2019 12:26:40 +0900 (JST) Received: from hop001.toshiba.co.jp ([133.199.164.63]) by enc01.localdomain with ESMTP id x5P3QdLb026418; Tue, 25 Jun 2019 12:26:40 +0900 From: Daniel Sangorrin To: ben.hutchings@codethink.co.uk Date: Tue, 25 Jun 2019 12:26:32 +0900 X-TSB-HOP: ON Message-Id: <20190625032636.10694-3-daniel.sangorrin@toshiba.co.jp> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190625032636.10694-1-daniel.sangorrin@toshiba.co.jp> References: <20190625032636.10694-1-daniel.sangorrin@toshiba.co.jp> Cc: cip-dev@lists.cip-project.org Subject: [cip-dev] [cip-kernel-sec 2/6] prepare_remotes: helper script to prepare local repo X-BeenThere: cip-dev@lists.cip-project.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: cip-dev-bounces@lists.cip-project.org Errors-To: cip-dev-bounces@lists.cip-project.org X-Virus-Scanned: ClamAV using ClamSMTP Helper script that prepares the local git repository with the configured remote branches. Expert developers and kernel maintainers will probably have their own worktrees but for new users or a quickstart, this script should be helpful. Signed-off-by: Daniel Sangorrin --- README.md | 5 +++ conf/remotes.yml | 3 ++ scripts/import_stable.py | 8 ++--- scripts/kernel_sec/branch.py | 10 ++++++ scripts/prepare_remotes.py | 62 ++++++++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 6 deletions(-) create mode 100755 scripts/prepare_remotes.py diff --git a/README.md b/README.md index 4c5808f..576cc75 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,10 @@ this is assumed to be in `../kernel`, with remotes configured in stable and cip repositories. These can be overridden by command-line options or configuration (`~/.config/kernel-sec/remotes.yml`). +* `scripts/prepare_remotes.py` - creates the local git repository +and adds all configured remotes. You may prefer to skip this script +and configure the repository by hand. + * `scripts/import_debian.py` - import information from Debian's `kernel_sec` project. It includes all issues that Debian considers active or that are already tracked here. @@ -81,6 +85,7 @@ with the keys: branch from this remote. * `git_name`: (optional) The name actually used for this git remote, if it's different from the default. +* `git_repo_url`: URL of the remote git repository. ## Contributions diff --git a/conf/remotes.yml b/conf/remotes.yml index 51c523d..cfaa35f 100644 --- a/conf/remotes.yml +++ b/conf/remotes.yml @@ -1,6 +1,9 @@ torvalds: commit_url_prefix: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id= + git_repo_url: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git stable: commit_url_prefix: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit?id= + git_repo_url: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git cip: commit_url_prefix: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/commit?id= + git_repo_url: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git diff --git a/scripts/import_stable.py b/scripts/import_stable.py index 26fcc2f..194219d 100755 --- a/scripts/import_stable.py +++ b/scripts/import_stable.py @@ -31,11 +31,6 @@ BACKPORT_COMMIT_BOTTOM_RE = re.compile( .format(**RE_USE)) -def update(git_repo, remote_name): - subprocess.check_call(['git', 'remote', 'update', remote_name], - cwd=git_repo) - - def get_backports(git_repo, remotes, branches, debug=False): backports = {} @@ -140,7 +135,8 @@ def main(git_repo, remotes, debug=False): remote_names = set(branch['git_remote'] for branch in branches) for remote_name in remote_names: - update(git_repo, remotes[remote_name]['git_name']) + kernel_sec.branch.remote_update( + git_repo, remotes[remote_name]['git_name']) backports = get_backports(git_repo, remotes, branches, debug) c_b_map = kernel_sec.branch.CommitBranchMap(git_repo, remotes, branches) diff --git a/scripts/kernel_sec/branch.py b/scripts/kernel_sec/branch.py index a138b96..0023497 100644 --- a/scripts/kernel_sec/branch.py +++ b/scripts/kernel_sec/branch.py @@ -223,6 +223,16 @@ def get_remotes(mappings, mainline=None, stable=None): return remotes +def remote_update(git_repo, remote_name): + subprocess.check_call(['git', 'remote', 'update', remote_name], + cwd=git_repo) + + +def remote_add(git_repo, remote_name, remote_url): + subprocess.check_call(['git', 'remote', 'add', remote_name, remote_url], + cwd=git_repo) + + def check_git_repo(git_repo, remotes): if not os.path.isdir(git_repo): msg = "directory %r not present" % git_repo diff --git a/scripts/prepare_remotes.py b/scripts/prepare_remotes.py new file mode 100755 index 0000000..59310fc --- /dev/null +++ b/scripts/prepare_remotes.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +# Copyright 2019 Toshiba corp. +# Based on import_stable.py by Codethink Ltd. +# +# This script is distributed under the terms and conditions of the GNU General +# Public License, Version 3 or later. See http://www.gnu.org/copyleft/gpl.html +# for details. + +# Helper script that prepares the local git repository with the configured +# remote branches + +import argparse +import os +import subprocess + +import kernel_sec.branch + + +def main(git_repo, remotes): + if os.path.isdir(git_repo): + msg = "directory %r already exists" % git_repo + raise argparse.ArgumentError(None, msg) + else: + os.mkdir(git_repo) + subprocess.check_call(['git', 'init', '.'], cwd=git_repo) + + for key in remotes.keys(): + remote = remotes[key] # __getitem__ will add git_name + kernel_sec.branch.remote_add( + git_repo, remote['git_name'], remote['git_repo_url']) + kernel_sec.branch.remote_update(git_repo, remote['git_name']) + + # self-check + kernel_sec.branch.check_git_repo(git_repo, remotes) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description=('Prepare local git repository with configured remotes.')) + parser.add_argument('--git-repo', + dest='git_repo', default='../kernel', + help=('local git repository location ' + '(default: ../kernel)'), + metavar='DIRECTORY') + parser.add_argument('--remote-name', + dest='remote_name', action='append', default=[], + help='git remote name mappings, e.g. stable:korg-stable', + metavar='NAME:OTHER-NAME') + parser.add_argument('--mainline-remote', + dest='mainline_remote_name', + help="git remote name to use instead of 'torvalds'", + metavar='OTHER-NAME') + parser.add_argument('--stable-remote', + dest='stable_remote_name', + help="git remote name to use instead of 'stable'", + metavar='OTHER-NAME') + args = parser.parse_args() + remotes = kernel_sec.branch.get_remotes(args.remote_name, + mainline=args.mainline_remote_name, + stable=args.stable_remote_name) + main(args.git_repo, remotes)