[Git][reproducible-builds/diffoscope][master] 4 commits: Use sed -ne over awk -F= to to avoid mangling dependency lines containing =...

Chris Lamb (@lamby) gitlab at salsa.debian.org
Thu Aug 21 21:10:26 UTC 2025



Chris Lamb pushed to branch master at Reproducible Builds / diffoscope


Commits:
6a82eee6 by Chris Lamb at 2025-08-21T10:23:51-07:00
Use sed -ne over awk -F= to to avoid mangling dependency lines containing = (eg. version restrictions).


- - - - -
38e0fb8b by Chris Lamb at 2025-08-21T10:25:49-07:00
Move from a mono-utils dependency to versioned mono-devel | mono-utils dependency, taking care to maintain the [!riscv64] architecture restriction. (Closes: #1111742


- - - - -
45780b1a by Chris Lamb at 2025-08-21T10:26:14-07:00
Use sed backreferences when generating debian/tests/control to avoid DRY violation.


- - - - -
c79674ec by Chris Lamb at 2025-08-21T11:03:51-07:00
Fix test after the upload of systemd-ukify 258~rc3 (vs 258~rc2)


- - - - -


6 changed files:

- debian/control
- debian/tests/control
- debian/tests/control.sh
- diffoscope/external_tools.py
- tests/comparators/test_uki.py
- tests/data/uki_expected_diff


Changes:

=====================================
debian/control
=====================================
@@ -55,7 +55,7 @@ Build-Depends:
  llvm <!nocheck>,
  lz4 <!nocheck>,
  lzip <!nocheck>,
- mono-utils <!nocheck>,
+ mono-devel (>= 6.14.1+ds-3) <!nocheck> | mono-utils (<< 6.14.1+ds-3) <!nocheck>,
  ocaml-nox <!nocheck>,
  odt2txt <!nocheck>,
  oggvideotools [!s390x] <!nocheck>,


=====================================
debian/tests/control
=====================================
@@ -7,7 +7,7 @@
 #   $ mv debian/tests/control.tmp debian/tests/control
 
 Tests: pytest-with-recommends
-Depends: python3-all, diffoscope, black, python3-pytest, python3-h5py, file, linux-image-amd64 [amd64] | linux-image-generic [amd64], 7zip, abootimg, acl, apksigcopier, apksigner, apktool, binutils-multiarch, bzip2, caca-utils, colord, coreboot-utils [!risv64], db-util, default-jdk-headless | default-jdk | java-sdk, device-tree-compiler, docx2txt, e2fsprogs, enjarify, ffmpeg, fontforge-extras, fonttools, fp-utils [!riscv64 !s390x], genisoimage, gettext, ghc, ghostscript, giflib-tools, gnumeric, gnupg-utils, gpg, hdf5-tools, html2text, imagemagick, jsbeautifier, libarchive-tools, libxmlb-utils, llvm, lz4, lzip, mono-utils [!riscv64], ocaml-nox, odt2txt, oggvideotools [!s390x], openssh-client, openssl, perl, pgpdump, poppler-utils, procyon-decompiler, python3-pdfminer, r-base-core, rpm2cpio, sng, sqlite3, squashfs-tools, systemd-ukify, tcpdump, u-boot-tools, unzip, wabt, xmlbeans, xxd, xz-utils, zip, zstd, python3-argcomplete, python3-binwalk, python3-defusedxml, python3-distro, python3-guestfs, python3-jsondiff, python3-progressbar, python3-pypdf, python3-debian, python3-pyxattr, python3-rpm, python3-tlsh
+Depends: python3-all, diffoscope, black, python3-pytest, python3-h5py, file, linux-image-amd64 [amd64] | linux-image-generic [amd64], 7zip, abootimg, acl, apksigcopier, apksigner, apktool, binutils-multiarch, bzip2, caca-utils, colord, coreboot-utils [!risv64], db-util, default-jdk-headless | default-jdk | java-sdk, device-tree-compiler, docx2txt, e2fsprogs, enjarify, ffmpeg, fontforge-extras, fonttools, fp-utils [!riscv64 !s390x], genisoimage, gettext, ghc, ghostscript, giflib-tools, gnumeric, gnupg-utils, gpg, hdf5-tools, html2text, imagemagick, jsbeautifier, libarchive-tools, libxmlb-utils, llvm, lz4, lzip, mono-devel (>= 6.14.1+ds-3) [!riscv64] | mono-utils (<< 6.14.1+ds-3) [!riscv64], ocaml-nox, odt2txt, oggvideotools [!s390x], openssh-client, openssl, perl, pgpdump, poppler-utils, procyon-decompiler, python3-pdfminer, r-base-core, rpm2cpio, sng, sqlite3, squashfs-tools, systemd-ukify, tcpdump, u-boot-tools, unzip, wabt, xmlbeans, xxd, xz-utils, zip, zstd, python3-argcomplete, python3-binwalk, python3-defusedxml, python3-distro, python3-guestfs, python3-jsondiff, python3-progressbar, python3-pypdf, python3-debian, python3-pyxattr, python3-rpm, python3-tlsh
 
 Tests: pytest
 Depends: python3-all, diffoscope, python3-pytest, python3-h5py, file, python3-tlsh


=====================================
debian/tests/control.sh
=====================================
@@ -10,7 +10,7 @@ EOF
 
 cat debian/tests/control.in >> debian/tests/control.tmp
 
-sed -i "s#%RECOMMENDS%#$(bin/diffoscope --list-debian-substvars | awk -F= '/diffoscope:Recommends/ { print $2 }')#" debian/tests/control.tmp
+sed -i "s#%RECOMMENDS%#$(bin/diffoscope --list-debian-substvars | sed -ne 's,^diffoscope:Recommends=,,p')#" debian/tests/control.tmp
 
 sed -i "s#%PYRECOMMENDS%#$(debian/tests/generate-recommends.py)#" debian/tests/control.tmp
 
@@ -19,15 +19,17 @@ sed -i "s#radare2, ##" debian/tests/control.tmp
 
 sed -i "s,python3-python-debian,python3-debian," debian/tests/control.tmp
 sed -i "s,python3-rpm-python,python3-rpm," debian/tests/control.tmp
-sed -i "s,coreboot-utils,coreboot-utils [!risv64]," debian/tests/control.tmp
-sed -i "s,fp-utils,fp-utils [!riscv64 !s390x]," debian/tests/control.tmp
-sed -i "s,mono-utils,mono-utils [!riscv64]," debian/tests/control.tmp
-sed -i "s,oggvideotools,oggvideotools [!s390x]," debian/tests/control.tmp
+
+sed -i "s,\(coreboot-utils\),\1 [!risv64]," debian/tests/control.tmp
+sed -i "s,\(fp-utils\),\1 [!riscv64 !s390x]," debian/tests/control.tmp
+sed -i "s,\(mono-devel (>= 6.14.1+ds-3)\),\1 [!riscv64]," debian/tests/control.tmp
+sed -i "s,\(mono-utils (<< 6.14.1+ds-3)\),\1 [!riscv64]," debian/tests/control.tmp
+sed -i "s,\(oggvideotools\),\1 [!s390x]," debian/tests/control.tmp
 #sed -i "s,python3-androguard,androguard," debian/tests/control.tmp
-#sed -i "s,dexdump,dexdump [amd64 arm64 armhf i386]," debian/tests/control.tmp
+#sed -i "s,\(dexdump\),\1 [amd64 arm64 armhf i386]," debian/tests/control.tmp
 # aapt removed due to not being in trixie atma - #1070416
 # also remove androguard and dexdump for the same reason
-#sed -i "s,aapt,aapt [amd64 arm64 armel armhf i386 mips64el mipsel]," debian/tests/control.tmp
+#sed -i "s,\(aapt\),\1 [amd64 arm64 armel armhf i386 mips64el mipsel]," debian/tests/control.tmp
 sed -i "s#aapt, ##" debian/tests/control.tmp
 sed -i "s#dexdump, ##" debian/tests/control.tmp
 sed -i "s#python3-androguard, ##" debian/tests/control.tmp


=====================================
diffoscope/external_tools.py
=====================================
@@ -172,7 +172,7 @@ EXTERNAL_TOOLS = {
         "guix": "poppler",
     },
     "pedump": {
-        "debian": "mono-utils",
+        "debian": "mono-devel (>= 6.14.1+ds-3) | mono-utils (<< 6.14.1+ds-3)",
         "arch": "mono",
         "FreeBSD": "mono",
     },


=====================================
tests/comparators/test_uki.py
=====================================
@@ -17,6 +17,8 @@
 # along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
 
 import pytest
+import re
+import subprocess
 
 from diffoscope.comparators.binary import FilesystemFile
 from diffoscope.comparators.uki import UKIFile
@@ -24,11 +26,17 @@ from diffoscope.comparators.utils.command import our_check_output
 from diffoscope.comparators.utils.specialize import specialize
 
 from ..utils.data import assert_diff, load_fixture
-from ..utils.tools import skip_unless_tools_exist
+from ..utils.tools import skip_unless_tools_exist, skip_unless_tool_is_at_least
 
 efi_stub = load_fixture("dummyx64.efi.stub")
 
 
+def ukify_version():
+    line = subprocess.check_output(("ukify", "--version")).decode("utf-8")
+
+    return re.search(r"\((.*)\)", line).group(1)
+
+
 def uki_fixture(prefix, os_release, uname):
     @pytest.fixture
     def uki(tmpdir, efi_stub):
@@ -70,6 +78,7 @@ def differences(uki1, uki2):
 
 @skip_unless_tools_exist("objdump")
 @skip_unless_tools_exist("ukify")
+ at skip_unless_tool_is_at_least("ukify", ukify_version, "258~rc3")
 def test_no_differences(uki1):
     difference = uki1.compare(uki1)
     assert difference is None
@@ -77,5 +86,6 @@ def test_no_differences(uki1):
 
 @skip_unless_tools_exist("objdump")
 @skip_unless_tools_exist("ukify")
+ at skip_unless_tool_is_at_least("ukify", ukify_version, "258~rc3")
 def test_diff(differences):
     assert_diff(differences[0], "uki_expected_diff")


=====================================
tests/data/uki_expected_diff
=====================================
Binary files a/tests/data/uki_expected_diff and b/tests/data/uki_expected_diff differ



View it on GitLab: https://salsa.debian.org/reproducible-builds/diffoscope/-/compare/937c219959c4b3a81745b359a5d59ee4e3a9542c...c79674ecd426510a0403ba0e27cf38fffae6c795

-- 
View it on GitLab: https://salsa.debian.org/reproducible-builds/diffoscope/-/compare/937c219959c4b3a81745b359a5d59ee4e3a9542c...c79674ecd426510a0403ba0e27cf38fffae6c795
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.reproducible-builds.org/pipermail/rb-commits/attachments/20250821/37437d3d/attachment.htm>


More information about the rb-commits mailing list