From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6523981284478287872 X-Received: by 10.28.93.145 with SMTP id r139mr1823370wmb.32.1518982761084; Sun, 18 Feb 2018 11:39:21 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.138.19 with SMTP id m19ls1161342wmd.5.gmail; Sun, 18 Feb 2018 11:39:20 -0800 (PST) X-Google-Smtp-Source: AH8x226u/fvEGEpwhf339GnslVk1nIZEH4EMfbS5G8TWDlVquEaAm+X5Vq2Zl6QxfXlVfW+xfsnN X-Received: by 10.28.216.16 with SMTP id p16mr2043438wmg.0.1518982760593; Sun, 18 Feb 2018 11:39:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518982760; cv=none; d=google.com; s=arc-20160816; b=QWO5/LbacM/Ps/NSZgamKhKCeZgvsBQ+9dC3RhPeaT1f+wOjKX5gIn+Y/xgsTWXM6E 84nhmHIEgd8SR1Ul2YDguL3Utcg2T14vNGXtpvLA4tYrCSZwXCduJORWJRojbS5aKiqN L9cyRcPc8XhaR/OOjrcJ3a2ijEXQLqc2lEbcmd2zJRsAr0N+47Ppo0czHmlTXM2HBjr5 duPjox63Xy4+C/k1/0TmDdIjtC7NFQ9m3zgRhLxz5EQBdxbaUsm/y7JbWXVux8SJwOSx WPiBhWcmV/OweYjAJgJnvKJN1dn06tm+TtKwnS0sLmgJ45X/KOF+CLuzdcu9aWBqZLzV Xekw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:mime-version:user-agent :date:message-id:subject:from:to:arc-authentication-results; bh=9KQrMEG4uJNu9praolMVp5Kq4miOT3sqVorsFZ8A1cA=; b=RnTeqF36LLbn4S4nStUK2moJct+TroED4gnGrtkcr+hUPf8PGAV016JF4u9nD+pNpq 3OZXPvliE87Owl3bPg6JN2pJDXY+533+orogGXv2dRDukR+QaeIQoNPfS2YN3mW7abBd AKUDi0MeqEmTvXrq1I952P6kKUDxnzihm2ITldXjaqLUR5kYau/bf0kMC3MHCI6163IY CMVnmD005oLKtg0a58G9ma4OgW5fMMAxd7sVfEY/2yDRpsXqkJim9JwmvqkTXQNI6JqI dsvrqHi2l/hO8b4vpjFsr527UUweE4GGpj4gkkbDO4X1S04JFBFpG+CNCjtagZ5bL7xi jgtw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id t15si490509wmh.1.2018.02.18.11.39.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 18 Feb 2018 11:39:20 -0800 (PST) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w1IJdKRQ031142 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Sun, 18 Feb 2018 20:39:20 +0100 Received: from [167.87.27.66] ([167.87.27.66]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id w1IJdJ5J023133 for ; Sun, 18 Feb 2018 20:39:19 +0100 To: isar-users From: Jan Kiszka Subject: [PATCH 1/2] Add basic patch support Message-ID: <389542c1-1367-2639-a13c-ebbb9318c05b@siemens.com> Date: Sun, 18 Feb 2018 20:39:19 +0100 User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: zzkZftAejatR From: Jan Kiszka Add a do_patch task after unpack the processes .patch files in the SRC_URI. We likely miss some special features compared to OE, but this covers the common case of few individual patches. Application order is derived from appearance in SRC_URI list. Strip level can be configured via "striplevel=N" URI parameter. The application is controlled explicitly via the "apply=yes|no" parameter. Signed-off-by: Jan Kiszka --- meta/classes/dpkg-base.bbclass | 5 ++++- meta/classes/patch.bbclass | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 meta/classes/patch.bbclass diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 78709f9..0e2d0e2 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -8,9 +8,12 @@ do_adjust_git() { fi } -addtask adjust_git after do_unpack before do_build +addtask adjust_git after do_unpack before do_patch do_adjust_git[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" +inherit patch +addtask patch after do_adjust_git before do_build + # Add dependency from buildchroot creation do_build[depends] = "buildchroot:do_build" diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass new file mode 100644 index 0000000..26a0c81 --- /dev/null +++ b/meta/classes/patch.bbclass @@ -0,0 +1,33 @@ +# This software is a part of ISAR. +# Copyright (c) Siemens AG, 2018 + +python do_patch() { + import subprocess + + workdir = d.getVar("WORKDIR", True) + "/" + src_dir = workdir + (d.getVar("S", True) or "") + + for src_uri in (d.getVar("SRC_URI", True) or "").split(): + try: + fetcher = bb.fetch2.Fetch([src_uri], d) + + apply = fetcher.ud[src_uri].parm.get("apply") + if apply == "no": + continue + + basename = fetcher.ud[src_uri].basename or "" + if not (basename.endswith(".patch") or apply == "yes"): + continue + + striplevel = fetcher.ud[src_uri].parm.get("striplevel") or "1" + + cmd = "patch --no-backup-if-mismatch -p " + striplevel + \ + " --directory " + src_dir + " --input " + workdir + basename + bb.note(cmd) + if subprocess.call(cmd, shell=True) != 0: + bb.fatal("patching failed") + except bb.fetch2.BBFetchException as e: + raise bb.build.FuncFailed(e) +} + +do_patch[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" -- 2.13.6