Package: openjdk-21
Version: 21.0.6+7-1

I'm not raising priority because I'm not 100% certain that the failure is a
mistake in the packaging or a mismatch in our build environment.

If it is a problem on our side, any hint would be appreciated.

During a build of openjdk-21 in Trixie, I encountered the following error:

dh_clean
 debian/rules binary
jtreg_version="$(dpkg-query -f '${Version}\n' -W jtreg)"; \
if ! dpkg --compare-versions 7.3.1+1~ le $jtreg_version; then \
  echo "Error: testsuite requires jtreg 7.3.1+1~ but $jtreg_version is
installed"; \
  echo "Please update the jtreg dependency and regenerate debian/control"; \
  false; \
fi
dpkg: error: --compare-versions takes three arguments: <version> <relation>
<version>

Installing jtreg7 (from Build-Depends) on my system and running

dpkg-query -f '${Version}\n' -W jtreg

Indeed results in an empty string.
The query for the jtreg version happens here:
https://salsa.debian.org/openjdk-team/openjdk/-/blob/openjdk-21/debian/rules#L1145

I suspect that
https://salsa.debian.org/openjdk-team/openjdk/-/blob/openjdk-21/debian/rules#L164
needs an update. Though I honestly am not sure why it assigned jtreg_pkg to
be "jtreg" and not "jtreg7"

I'm somewhat confused by this though. In the build-chroot, with lsb-release
installed, I get:

# lsb_release --codename --short
sid
# # lsb_release --id --short
Debian

as I expected, since our rebuilds found emulating sid (though with the
packages from testing) to be the most reliable path to successful builds.
Here is the complete output from the dpkg-buildpackage run:

Command: dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot
dpkg-buildpackage: info: source package openjdk-21
dpkg-buildpackage: info: source version 21.0.6+7-1
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Matthias Klose <d...@ubuntu.com>
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
 debian/rules clean
dh_testdir
dh_testroot
dh_prep
for f in debian/*.in; do \
  f2=$(echo $f | sed 's/JB/openjdk-21/;s/\.in$//'); \
  case "$f2" in debian/control|debian/watch) continue; esac; \
  rm -f $f2; \
done
rm -f debian/*.install debian/*.links debian/*.debhelper.log
dh_testdir
dh_testroot
rm -rf stamps build build-* jtreg-test-output
rm -rf autom4te.cache
rm -f bin/{jtreg.tmwrc,my-jtreg-run,my-xvfb-run,auto*,ifnames}
rm -f buildwatch.pid
rm -f config.log configure.log
dh_clean
 debian/rules binary
jtreg_version="$(dpkg-query -f '${Version}\n' -W jtreg)"; \
if ! dpkg --compare-versions 7.3.1+1~ le $jtreg_version; then \
  echo "Error: testsuite requires jtreg 7.3.1+1~ but $jtreg_version is
installed"; \
  echo "Please update the jtreg dependency and regenerate debian/control"; \
  false; \
fi
dpkg: error: --compare-versions takes three arguments: <version> <relation>
<version>

Type dpkg --help for help about installing and deinstalling packages [*];
Use 'apt' or 'aptitude' for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg --force-help for a list of forcing options;
Type dpkg-deb --help for help about manipulating *.deb files;

Options marked [*] produce a lot of output - pipe it through 'less' or
'more' !
Error: testsuite requires jtreg 7.3.1+1~ but  is installed
Please update the jtreg dependency and regenerate debian/control
make: *** [debian/rules:1145: pre-build] Error 1
dpkg-buildpackage: error: debian/rules binary subprocess returned exit
status 2
--------------------------------------------------------------------------------
Build finished at 2025-02-14T14:41:29Z

All in all, I wonder why you check the version again in debian/rules when
debian/control already has the proper dependencies?

Kind regards,
Sven

Reply via email to