6ee9ba5898
* Changelog from Linbit: 9.1.23 (api:genl2/proto:86-101,118-121/transport:18) -------- * Fix a corner case that can happen when DRBD establishes multiple connections in parallel, which could lead one connection to end up in an inconsistent replication state of WFBitMapT/Established * Fix a corner case in which a reconciliation resync ends up in WFBitMapT/Established * Restrict protocol compatibility to the most recent 8.4 and 9.0 releases * Fix a corner case causing a module ref leak on drbd_transport_tcp; if it hits, you can not rmmod it * rate-limit resync progress while resync is paused * resync-target inherits history UUIDs when resync finishes, this can prevent unexpected "unrelared data" events later * Updated compatibility code for Linux 6.11 and 6.12 * remove patches which already included in the new version: 0001-drbd-properly-rate-limit-resync-progress-reports.patch 0002-drbd-inherit-history-UUIDs-from-sync-source-when-res.patch 0003-build-compat-fix-line-offset-in-annotation-pragmas-p.patch 0004-drbd-fix-exposed_uuid-going-backward.patch 0005-drbd-Proper-locking-around-new_current_uuid-on-a-dis.patch 0006-build-CycloneDX-fix-bom-ref-add-purl.patch 0007-build-Another-update-to-the-spdx-files.patch 0008-build-generate-spdx.json-not-tag-value-format.patch 0009-compat-fix-gen_patch_names-for-bdev_file_open_by_pat.patch 0010-compat-fix-nla_nest_start_noflag-test.patch 0011-compat-fix-blk_alloc_disk-rule.patch 0012-drbd-remove-const-from-function-return-type.patch 0013-drbd-don-t-set-max_write_zeroes_sectors-in-decide_on.patch 0014-drbd-split-out-a-drbd_discard_supported-helper.patch 0015-drbd-atomically-update-queue-limits-in-drbd_reconsid.patch 0016-compat-test-and-patch-for-queue_limits_start_update.patch 0017-compat-specify-which-essential-change-was-not-made.patch 0018-gen_patch_names-reorder-blk_mode_t.patch 0019-compat-fix-blk_queue_update_readahead-patch.patch 0020-compat-test-and-patch-for-que_limits-max_hw_discard_.patch 0021-compat-fixup-write_zeroes__no_capable.patch 0022-compat-fixup-queue_flag_discard__yes_present.patch 0023-drbd-move-flags-to-queue_limits.patch 0024-compat-test-and-patch-for-queue_limits.features.patch 0025-drbd-Annotate-struct-fifo_buffer-with-__counted_by.patch 0026-compat-test-and-patch-for-__counted_by.patch 0027-drbd-fix-function-cast-warnings-in-state-machine.patch 0028-Add-missing-documentation-of-peer_device-parameter-t.patch 0030-drbd-kref_put-path-when-kernel_accept-fails.patch 0031-build-fix-typo-in-Makefile.spatch.patch 0032-drbd-open-do-not-delay-open-if-already-Primary.patch * removed patch which is not needed anymore: boo1231290_fix_drbd_build_error_against_kernel_v6.11.0.patch boo1233222_fix_drbd_build_error_against_kernel_v6.11.6.patch * update: drbd_git_revision drbd.spec * add upstream patches to align commit d64ebe7eb7df: 0001-drbd-Fix-memory-leak.patch OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=155
236 lines
8.4 KiB
Diff
236 lines
8.4 KiB
Diff
From ca3589743378a7750b9e6a8e19b904d57986cce4 Mon Sep 17 00:00:00 2001
|
|
From: Lars Ellenberg <lars.ellenberg@linbit.com>
|
|
Date: Wed, 28 Aug 2024 20:00:36 +0200
|
|
Subject: [PATCH 08/32] build: generate spdx.json, not "tag value" format
|
|
|
|
Generates .spdx.json files in SPDX-json format instead of tag/value.
|
|
This appears to be more machine friendly.
|
|
|
|
Use jq with "null" input and \(env.<environment-variable-name>) string interpolation in templates.
|
|
|
|
Move all this to a new ./sbom/ subdirectory.
|
|
---
|
|
Makefile | 74 ++-----------------
|
|
sbom/Makefile | 24 ++++++
|
|
.../drbd-kmod.cdx.json.in | 8 +-
|
|
sbom/drbd-kmod.spdx.json.in | 32 ++++++++
|
|
4 files changed, 68 insertions(+), 70 deletions(-)
|
|
create mode 100644 sbom/Makefile
|
|
rename drbd-kmod.cdx.json.in => sbom/drbd-kmod.cdx.json.in (84%)
|
|
create mode 100644 sbom/drbd-kmod.spdx.json.in
|
|
|
|
diff --git a/Makefile b/Makefile
|
|
index 80c20d24ab54..37ffcd777d09 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -92,6 +92,8 @@ ifndef FDIST_VERSION
|
|
FDIST_VERSION := $(DIST_VERSION)
|
|
endif
|
|
|
|
+export REL_VERSION FDIST_VERSION
|
|
+
|
|
all: module tools
|
|
|
|
.PHONY: all tools module
|
|
@@ -189,76 +191,15 @@ drbd/.drbd_git_revision: FORCE
|
|
@echo >&2 "Need a git checkout to regenerate $@"; test -s $@
|
|
endif
|
|
|
|
-export define SPDX_TEMPLATE
|
|
-SPDXVersion: SPDX-2.3
|
|
-DataLicense: CC0-1.0
|
|
-SPDXID: SPDXRef-DOCUMENT
|
|
-DocumentName: drbd kernel module SBOM (software bill of materials)
|
|
-DocumentNamespace: https://linbit.org/spdx-docs/drbd-kmod-$(SPDX_VERSION)-$(SPDX_UUID)
|
|
-Creator: Person: Philipp Reisner (philipp.reisner@linbit.com)
|
|
-Created: $(SPDX_DATE)
|
|
-
|
|
-PackageName: $(SPDX_PKG_NAME)
|
|
-SPDXID: SPDXRef-Package-$(SPDX_PKG_NAME)
|
|
-PackageVersion: $(SPDX_VERSION)
|
|
-PackageSupplier: Organization: LINBIT HA-Solutions GmbH
|
|
-PackageDownloadLocation: https://github.com/LINBIT/drbd
|
|
-FilesAnalyzed: false
|
|
-PackageLicenseDeclared: GPL-2.0-only
|
|
-PackageCopyrightText: <text>2001-2008, LINBIT Information Technologies GmbH
|
|
-2008-$(SPDX_YEAR), LINBIT HA-Solutions GmbH</text>
|
|
-Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-$(SPDX_PKG_NAME)
|
|
-endef
|
|
-
|
|
-# only call this wrapper from drbd-kmod_{sles,rhel}.spdx
|
|
-.PHONY: spdx-file
|
|
-spdx-file:
|
|
- @echo "$$SPDX_TEMPLATE" > $(SPDX_FILE_TMP)
|
|
-
|
|
-.PHONY: drbd-kmod_rhel.spdx drbd-kmod_sles.spdx
|
|
-drbd-kmod_rhel.spdx drbd-kmod_sles.spdx:
|
|
- @set -e; ( truncate -s0 $@.tmp; \
|
|
- SPDX_DATE="$$(date --utc +%FT%TZ)"; \
|
|
- SPDX_UUID="$$(cat /proc/sys/kernel/random/uuid)"; \
|
|
- SPDX_VERSION="$(REL_VERSION)"; \
|
|
- SPDX_YEAR="$$(date --utc +%Y)"; \
|
|
- case "$@" in \
|
|
- drbd-kmod_rhel.spdx) SPDX_PKG_NAME=kmod-drbd;; \
|
|
- drbd-kmod_sles.spdx) SPDX_PKG_NAME=drbd-kmp-default;; \
|
|
- *) false;; \
|
|
- esac; \
|
|
- test -n "$$SPDX_TEMPLATE"; \
|
|
- test -n "$$SPDX_DATE"; \
|
|
- test -n "$$SPDX_UUID"; \
|
|
- test -n "$$SPDX_VERSION"; \
|
|
- test -n "$$SPDX_YEAR"; \
|
|
- $(MAKE) spdx-file SPDX_UUID="$$SPDX_UUID" \
|
|
- SPDX_DATE="$$SPDX_DATE" \
|
|
- SPDX_FILE_TMP="$@.tmp" \
|
|
- SPDX_PKG_NAME="$$SPDX_PKG_NAME" \
|
|
- SPDX_VERSION="$$SPDX_VERSION" \
|
|
- SPDX_YEAR="$$SPDX_YEAR"; \
|
|
- mv $@.tmp $@; )
|
|
-
|
|
-# only call this wrapper from drbd-kmod.cdx.json
|
|
-.PHONY: cdx-sub
|
|
-cdx-sub:
|
|
- cat $(CDX_FILE).in | jq --args '.metadata.timestamp = "$(CDX_DATE)" | .metadata.component.version = "$(FDIST_VERSION)" | .metadata.component."bom-ref" = "$(PURL)" | .metadata.component.purl = "$(PURL)"' > $(CDX_FILE)
|
|
-
|
|
-.PHONY: drbd-kmod.cdx.json
|
|
-drbd-kmod.cdx.json:
|
|
- $(MAKE) -s cdx-sub CDX_DATE="$$(date --utc +%FT%TZ)" PURL="pkg:github/LINBIT/drbd@drbd-$(FDIST_VERSION)" CDX_FILE="$@"
|
|
- ! grep -q __PLACEHOLDER__ $@
|
|
-
|
|
# update of .filelist is forced:
|
|
.fdist_version: FORCE
|
|
@test -s $@ && test "$$(cat $@)" = "$(FDIST_VERSION)" || echo "$(FDIST_VERSION)" > $@
|
|
|
|
.filelist: .fdist_version FORCE
|
|
@$(GIT) ls-files --recurse -- ':!:.git*' $(if $(PRESERVE_DEBIAN),,':!:debian') > $@.new
|
|
+ @test -s $@.new # assert there is something in .filelist.new now
|
|
@mkdir -p drbd/drbd-kernel-compat/cocci_cache/
|
|
@find drbd/drbd-kernel-compat/cocci_cache/ -type f -not -path '*/\.*' >> $@.new
|
|
- @test -s $@.new # assert there is something in .filelist.new now
|
|
@mv $@.new $@
|
|
@echo "./.filelist updated."
|
|
|
|
@@ -273,9 +214,10 @@ drbd-kmod.cdx.json:
|
|
comma := ,
|
|
backslash_comma := \,
|
|
escape_comma = $(subst $(comma),$(backslash_comma),$(1))
|
|
-tgz-extra-files := \
|
|
- .fdist_version drbd/.drbd_git_revision .filelist \
|
|
- drbd-kmod_rhel.spdx drbd-kmod_sles.spdx drbd-kmod.cdx.json
|
|
+tgz-extra-files := .fdist_version drbd/.drbd_git_revision .filelist
|
|
+tgz-extra-files += sbom/drbd-kmod_rhel.spdx.json
|
|
+tgz-extra-files += sbom/drbd-kmod_sles.spdx.json
|
|
+tgz-extra-files += sbom/drbd-kmod.cdx.json
|
|
tgz:
|
|
test -s .filelist # .filelist must be present
|
|
test -n "$(FDIST_VERSION)" # FDIST_VERSION must be known
|
|
@@ -318,7 +260,7 @@ debrelease:
|
|
tarball:
|
|
$(MAKE) distclean
|
|
$(MAKE) check-submods check_all_committed drbd/.drbd_git_revision
|
|
- $(MAKE) drbd-kmod_rhel.spdx drbd-kmod_sles.spdx drbd-kmod.cdx.json
|
|
+ $(MAKE) -C sbom drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json drbd-kmod.cdx.json
|
|
$(MAKE) .filelist
|
|
$(MAKE) tgz
|
|
|
|
diff --git a/sbom/Makefile b/sbom/Makefile
|
|
new file mode 100644
|
|
index 000000000000..757f57e4db60
|
|
--- /dev/null
|
|
+++ b/sbom/Makefile
|
|
@@ -0,0 +1,24 @@
|
|
+
|
|
+# we inherit some variables from our "parent" Makefile
|
|
+THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
|
|
+$(foreach v,REL_VERSION FDIST_VERSION,$(if $($(v)),,$(error "Do not use this Makefile ($(THIS_MAKEFILE)) directly! ($(v) missing))))
|
|
+
|
|
+all: drbd-kmod.cdx.json drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json
|
|
+
|
|
+export SPDX_VERSION SPDX_DATE SPDX_YEAR SPDX_UUID SPDX_PKG_NAME
|
|
+SPDX_VERSION:=$(REL_VERSION)
|
|
+SPDX_DATE:=$(shell date --utc +%FT%TZ)
|
|
+SPDX_YEAR:=$(firstword $(subst -, ,$(SPDX_DATE)))
|
|
+drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json: SPDX_UUID:=$(shell cat /proc/sys/kernel/random/uuid)
|
|
+drbd-kmod_rhel.spdx.json: SPDX_PKG_NAME:=kmod-drbd
|
|
+drbd-kmod_sles.spdx.json: SPDX_PKG_NAME:=drbd-kmp-default
|
|
+drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json: FORCE
|
|
+ @rm -f $@; jq -n -f drbd-kmod.spdx.json.in > $@.tmp && mv $@.tmp $@
|
|
+
|
|
+# uses:
|
|
+# SPDX_DATE from above and FDIST_VERSION from parent Makefile
|
|
+drbd-kmod.cdx.json: FORCE
|
|
+ @rm -f $@; jq -n -f drbd-kmod.cdx.json.in > $@.tmp && mv $@.tmp $@
|
|
+
|
|
+.PHONY: FORCE
|
|
+FORCE:
|
|
diff --git a/drbd-kmod.cdx.json.in b/sbom/drbd-kmod.cdx.json.in
|
|
similarity index 84%
|
|
rename from drbd-kmod.cdx.json.in
|
|
rename to sbom/drbd-kmod.cdx.json.in
|
|
index ab4e05a43187..99858e8b9b43 100644
|
|
--- a/drbd-kmod.cdx.json.in
|
|
+++ b/sbom/drbd-kmod.cdx.json.in
|
|
@@ -2,7 +2,7 @@
|
|
"bomFormat": "CycloneDX",
|
|
"specVersion": "1.5",
|
|
"metadata": {
|
|
- "timestamp": "__PLACEHOLDER__",
|
|
+ "timestamp": "\(env.SPDX_DATE)",
|
|
"authors": [
|
|
{
|
|
"name": "Philipp Reisner",
|
|
@@ -16,9 +16,9 @@
|
|
"component": {
|
|
"type": "application",
|
|
"name": "kmod-drbd",
|
|
- "version": "__PLACEHOLDER__",
|
|
- "bom-ref": "__PLACEHOLDER__",
|
|
- "purl": "__PLACEHOLDER__",
|
|
+ "version": "\(env.FDIST_VERSION)",
|
|
+ "bom-ref": "pkg:github/LINBIT/drbd@drbd-\(env.FDIST_VERSION)",
|
|
+ "purl": "pkg:github/LINBIT/drbd@drbd-\(env.FDIST_VERSION)",
|
|
"licenses": [
|
|
{
|
|
"licenses": {
|
|
diff --git a/sbom/drbd-kmod.spdx.json.in b/sbom/drbd-kmod.spdx.json.in
|
|
new file mode 100644
|
|
index 000000000000..07c1003f8834
|
|
--- /dev/null
|
|
+++ b/sbom/drbd-kmod.spdx.json.in
|
|
@@ -0,0 +1,32 @@
|
|
+{
|
|
+ "SPDXID": "SPDXRef-DOCUMENT",
|
|
+ "spdxVersion": "SPDX-2.3",
|
|
+ "creationInfo": {
|
|
+ "created": "\(env.SPDX_DATE)",
|
|
+ "creators": [
|
|
+ "Person: Philipp Reisner (philipp.reisner@linbit.com)"
|
|
+ ]
|
|
+ },
|
|
+ "name": "drbd kernel module SBOM (software bill of materials)",
|
|
+ "dataLicense": "CC0-1.0",
|
|
+ "documentNamespace": "https://linbit.org/spdx-docs/drbd-kmod-\(env.SPDX_VERSION)-\(env.SPDX_UUID)",
|
|
+ "packages": [
|
|
+ {
|
|
+ "SPDXID": "SPDXRef-Package-\(env.SPDX_PKG_NAME)",
|
|
+ "copyrightText": "2001-2008, LINBIT Information Technologies GmbH\n2008-\(env.SPDX_YEAR), LINBIT HA-Solutions GmbH",
|
|
+ "downloadLocation": "https://github.com/LINBIT/drbd",
|
|
+ "filesAnalyzed": false,
|
|
+ "licenseDeclared": "GPL-2.0-only",
|
|
+ "name": "\(env.SPDX_PKG_NAME)",
|
|
+ "supplier": "Organization: LINBIT HA-Solutions GmbH",
|
|
+ "versionInfo": "\(env.SPDX_VERSION)"
|
|
+ }
|
|
+ ],
|
|
+ "relationships": [
|
|
+ {
|
|
+ "spdxElementId": "SPDXRef-DOCUMENT",
|
|
+ "relationshipType": "DESCRIBES",
|
|
+ "relatedSpdxElement": "SPDXRef-Package-\(env.SPDX_PKG_NAME)"
|
|
+ }
|
|
+ ]
|
|
+}
|
|
--
|
|
2.35.3
|
|
|