mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
lib/oe/patch: Make extractPatches() not extract ignored commits
If a commit is marked with "%% ignore" it means it is used by devtool to keep track of changes to the source code that are not the result of running do_patch(). These changes need to actually be ignored when extracting the patches as they typically make no sense as actual patches in a recipe. This also adds a new test for oe-selftest that verifies that there are no patches generated from ignored commits. (From OE-Core rev: c3d43de7e54189bf09fbe8e87ddb976e42ebf531) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
1e6565402f
commit
24433ce8f9
@@ -0,0 +1,38 @@
|
||||
From 3d076ea588eb3c7f334133b4c31172a14beadf5b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 2 Feb 2023 20:18:27 -0800
|
||||
Subject: [PATCH] Add <cstdint> for uintXX_t types
|
||||
|
||||
gcc 13 moved some includes around and as a result <cstdint> is no
|
||||
longer transitively included [1]. Explicitly include it
|
||||
for uintXX_t.
|
||||
|
||||
[1] https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/falcosecurity/libs/pull/862]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
userspace/libsinsp/filter/parser.h | 1 +
|
||||
userspace/libsinsp/filter_value.h | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
--- a/userspace/libsinsp/filter/parser.h
|
||||
+++ b/userspace/libsinsp/filter/parser.h
|
||||
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
#pragma once
|
||||
|
||||
#include "ast.h"
|
||||
+#include <cstdint>
|
||||
|
||||
//
|
||||
// Context-free Grammar for Sinsp Filters
|
||||
--- a/userspace/libsinsp/filter_value.h
|
||||
+++ b/userspace/libsinsp/filter_value.h
|
||||
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
#pragma once
|
||||
|
||||
#include <string.h>
|
||||
+#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
// Used for CO_IN/CO_PMATCH filterchecks using PT_CHARBUFs to allow
|
||||
@@ -0,0 +1,29 @@
|
||||
From ed8969a233adb6bf701de96d0fd0570e5ddcc787 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 21 Mar 2022 19:35:48 -0700
|
||||
Subject: [PATCH] cmake: Pass PROBE_NAME via CFLAGS
|
||||
|
||||
This helps compliation of driver code where its calling modprobe on the
|
||||
given kernel module via system() API
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
CMakeLists.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7dceb7ae..e156c36f 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -149,6 +149,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
if(NOT DEFINED PROBE_NAME)
|
||||
set(PROBE_NAME "scap")
|
||||
endif()
|
||||
+ add_definitions(-DPROBE_NAME="${PROBE_NAME}")
|
||||
|
||||
set(DRIVERS_REPO "https://download.sysdig.com/scap-drivers")
|
||||
|
||||
--
|
||||
2.35.1
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
SUMMARY = "A New System Troubleshooting Tool Built for the Way You Work"
|
||||
DESCRIPTION = "Sysdig is open source, system-level exploration: capture \
|
||||
system state and activity from a running Linux instance, then save, \
|
||||
filter and analyze."
|
||||
HOMEPAGE = "http://www.sysdig.org/"
|
||||
LICENSE = "Apache-2.0 & (MIT | GPL-2.0-only)"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=f8fee3d59797546cffab04f3b88b2d44"
|
||||
|
||||
inherit cmake pkgconfig
|
||||
|
||||
#OECMAKE_GENERATOR = "Unix Makefiles"
|
||||
JIT ?= "jit"
|
||||
JIT:mipsarchn32 = ""
|
||||
JIT:mipsarchn64 = ""
|
||||
JIT:riscv64 = ""
|
||||
JIT:riscv32 = ""
|
||||
JIT:powerpc = ""
|
||||
JIT:powerpc64le = ""
|
||||
JIT:powerpc64 = ""
|
||||
|
||||
#DEPENDS += "libb64 lua${JIT} zlib c-ares grpc-native grpc curl ncurses jsoncpp \
|
||||
# tbb jq openssl elfutils protobuf protobuf-native jq-native valijson"
|
||||
RDEPENDS:${PN} = "bash"
|
||||
|
||||
SRC_URI = "git://github.com/draios/sysdig.git;branch=dev;protocol=https;name=sysdig \
|
||||
git://github.com/falcosecurity/libs;protocol=https;branch=master;name=falco;subdir=git/falcosecurity-libs \
|
||||
file://0055-Add-cstdint-for-uintXX_t-types.patch;patchdir=./falcosecurity-libs \
|
||||
file://0099-cmake-Pass-PROBE_NAME-via-CFLAGS.patch \
|
||||
"
|
||||
SRCREV_sysdig = "4fb6288275f567f63515df0ff0a6518043ecfa9b"
|
||||
SRCREV_falco= "caa0e4d0044fdaaebab086592a97f0c7f32aeaa9"
|
||||
|
||||
SRCREV_FORMAT = "sysdig_falco"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
EXTRA_OECMAKE = "\
|
||||
-DBUILD_DRIVER=OFF \
|
||||
-DMINIMAL_BUILD=ON \
|
||||
-DUSE_BUNDLED_DEPS=OFF \
|
||||
-DCREATE_TEST_TARGETS=OFF \
|
||||
-DDIR_ETC=${sysconfdir} \
|
||||
-DLUA_INCLUDE_DIR=${STAGING_INCDIR}/luajit-2.1 \
|
||||
-DFALCOSECURITY_LIBS_SOURCE_DIR=${S}/falcosecurity-libs \
|
||||
-DVALIJSON_INCLUDE=${STAGING_INCDIR}/valijson \
|
||||
"
|
||||
|
||||
#CMAKE_VERBOSE = "VERBOSE=1"
|
||||
|
||||
FILES:${PN} += " \
|
||||
${DIR_ETC}/* \
|
||||
${datadir}/zsh/* \
|
||||
${prefix}/src/* \
|
||||
"
|
||||
# Use getaddrinfo_a is a GNU extension in libsinsp
|
||||
# It should be fixed in sysdig, until then disable
|
||||
# on musl
|
||||
# Something like this https://code.videolan.org/ePirat/vlc/-/commit/01fd9fe4c7f6c5558f7345f38abf0152e17853ab is needed to fix it
|
||||
COMPATIBLE_HOST:libc-musl = "null"
|
||||
COMPATIBLE_HOST:mips = "null"
|
||||
COMPATIBLE_HOST:riscv64 = "null"
|
||||
COMPATIBLE_HOST:riscv32 = "null"
|
||||
COMPATIBLE_HOST:powerpc = "null"
|
||||
COMPATIBLE_HOST:powerpc64le = "null"
|
||||
|
||||
EXCLUDE_FROM_WORLD = "1"
|
||||
@@ -474,9 +474,9 @@ class GitApplyTree(PatchTree):
|
||||
out = runcmd(["sh", "-c", " ".join(shellcmd)], os.path.join(tree, name))
|
||||
if out:
|
||||
for srcfile in out.split():
|
||||
outfile = os.path.basename(srcfile)
|
||||
for encoding in ['utf-8', 'latin-1']:
|
||||
patchlines = []
|
||||
outfile = None
|
||||
try:
|
||||
with open(srcfile, 'r', encoding=encoding, newline='') as f:
|
||||
for line in f:
|
||||
@@ -484,7 +484,8 @@ class GitApplyTree(PatchTree):
|
||||
outfile = line.split()[-1].strip()
|
||||
continue
|
||||
if line.startswith(GitApplyTree.ignore_commit_prefix):
|
||||
continue
|
||||
outfile = None
|
||||
break
|
||||
patchlines.append(line)
|
||||
except UnicodeDecodeError:
|
||||
continue
|
||||
@@ -492,12 +493,11 @@ class GitApplyTree(PatchTree):
|
||||
else:
|
||||
raise PatchError('Unable to find a character encoding to decode %s' % srcfile)
|
||||
|
||||
if not outfile:
|
||||
outfile = os.path.basename(srcfile)
|
||||
bb.utils.mkdirhier(os.path.join(outdir, name))
|
||||
with open(os.path.join(outdir, name, outfile), 'w') as of:
|
||||
for line in patchlines:
|
||||
of.write(line)
|
||||
if outfile:
|
||||
bb.utils.mkdirhier(os.path.join(outdir, name))
|
||||
with open(os.path.join(outdir, name, outfile), 'w') as of:
|
||||
for line in patchlines:
|
||||
of.write(line)
|
||||
finally:
|
||||
shutil.rmtree(tempdir)
|
||||
|
||||
|
||||
@@ -2228,6 +2228,52 @@ class DevtoolUpgradeTests(DevtoolBase):
|
||||
if files:
|
||||
self.fail('Unexpected file(s) copied next to bbappend: %s' % ', '.join(files))
|
||||
|
||||
def test_devtool_finish_update_patch(self):
|
||||
# This test uses a modified version of the sysdig recipe from meta-oe.
|
||||
# - The patches have been renamed.
|
||||
# - The dependencies are commented out since the recipe is not being
|
||||
# built.
|
||||
#
|
||||
# The sysdig recipe is interesting in that it fetches two different Git
|
||||
# repositories, and there are patches for both. This leads to that
|
||||
# devtool will create ignore commits as it uses Git submodules to keep
|
||||
# track of the second repository.
|
||||
#
|
||||
# This test will verify that the ignored commits actually are ignored
|
||||
# when a commit in between is modified. It will also verify that the
|
||||
# updated patch keeps its original name.
|
||||
|
||||
# Check preconditions
|
||||
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
|
||||
# Try modifying a recipe
|
||||
self.track_for_cleanup(self.workspacedir)
|
||||
recipe = 'sysdig-selftest'
|
||||
recipefile = get_bb_var('FILE', recipe)
|
||||
recipedir = os.path.dirname(recipefile)
|
||||
result = runCmd('git status --porcelain .', cwd=recipedir)
|
||||
if result.output.strip():
|
||||
self.fail('Recipe directory for %s contains uncommitted changes' % recipe)
|
||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||
self.track_for_cleanup(tempdir)
|
||||
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
|
||||
result = runCmd('devtool modify %s %s' % (recipe, tempdir))
|
||||
self.add_command_to_tearDown('cd %s; rm %s/*; git checkout %s %s' % (recipedir, recipe, recipe, os.path.basename(recipefile)))
|
||||
self.assertExists(os.path.join(tempdir, 'CMakeLists.txt'), 'Extracted source could not be found')
|
||||
# Make a change to one of the existing commits
|
||||
result = runCmd('echo "# A comment " >> CMakeLists.txt', cwd=tempdir)
|
||||
result = runCmd('git status --porcelain', cwd=tempdir)
|
||||
self.assertIn('M CMakeLists.txt', result.output)
|
||||
result = runCmd('git commit --fixup HEAD^ CMakeLists.txt', cwd=tempdir)
|
||||
result = runCmd('git show -s --format=%s', cwd=tempdir)
|
||||
self.assertIn('fixup! cmake: Pass PROBE_NAME via CFLAGS', result.output)
|
||||
result = runCmd('GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash devtool-base', cwd=tempdir)
|
||||
result = runCmd('devtool finish %s meta-selftest' % recipe)
|
||||
result = runCmd('devtool status')
|
||||
self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
|
||||
self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after finish')
|
||||
expected_status = [(' M', '.*/0099-cmake-Pass-PROBE_NAME-via-CFLAGS.patch$')]
|
||||
self._check_repo_status(recipedir, expected_status)
|
||||
|
||||
def test_devtool_rename(self):
|
||||
# Check preconditions
|
||||
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
|
||||
|
||||
Reference in New Issue
Block a user