From b5b9e33fe5702cfadfa57fcfc31e3234337754d1 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Wed, 23 Apr 2025 08:55:16 +0200 Subject: [PATCH 1/2] src: introduce unreleased export section It is not obvious to start a new section after a release. Add an explicit new UNRELEASED section so contributers know where to put a new symbol. Signed-off-by: Daniel Wagner --- src/libnvme-mi.map | 4 ++++ src/libnvme.map | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/libnvme-mi.map b/src/libnvme-mi.map index 0fb378290..fc84f403e 100644 --- a/src/libnvme-mi.map +++ b/src/libnvme-mi.map @@ -1,3 +1,7 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +LIBNVME_UNRELEASED { +}; + LIBNVME_MI_1_12 { global: nvme_mi_mi_xfer; diff --git a/src/libnvme.map b/src/libnvme.map index 4314705f7..232d6a16f 100644 --- a/src/libnvme.map +++ b/src/libnvme.map @@ -1,4 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +LIBNVME_UNRELEASED { +}; + LIBNVME_1.13 { global: nvme_subsystem_get_fw_rev; From e1565895f00f931d2ccb432f083c4ecfc97c0a42 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Wed, 23 Apr 2025 08:56:31 +0200 Subject: [PATCH 2/2] scripts: update UNRELEASED export map on release To reduce the confusion where to put a new exported symbol, there is a new UNRELEASED section with all the unreleased symbols. On release, update the export map to the new release version and add back the UNRELEASED section. Signed-off-by: Daniel Wagner --- scripts/release.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/scripts/release.sh b/scripts/release.sh index eb6eced4c..22b36b0ba 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -132,6 +132,42 @@ if [ "$build_doc" = true ]; then git commit -s -m "doc: Regenerate all docs for $VERSION" fi +declare -A maps +maps=( + [src/libnvme.map]=LIBNVME + [src/libnvme-mi.map]=LIBNVME_MI +) + +lib_ver="${ver//./_}" + +for map_file in "${!maps[@]}" +do + lib_name=${maps[$map_file]} + + if [ ! -f "${map_file}" ]; then + continue + fi + + lib_unreleased="${lib_name}_UNRELEASED" + + # Check if UNRELEASED has symbols + if ! awk -v lib_unreleased="$lib_unreleased" ' + $0 ~ "^"lib_unreleased { in_section = 1; next } + in_section && $0 ~ /\}/ { exit } + in_section && $0 !~ /^[[:space:]]*($|\/|\/\*|\*|#)/ { found = 1; exit } + END { exit !found } + ' "${map_file}"; then + continue + fi + + sed -i \ + -e "s/^${lib_unreleased}\s*{/&\n};\n\n${lib_name}_${lib_ver} {/" \ + "$map_file" + + git add "${map_file}" + echo "${map_file} updated." +done + # update meson.build sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$ver\',/" meson.build if [[ -n "$libnvme_VERSION" ]] && [[ -f subprojects/libnvme.wrap ]]; then