I just wanted to report that the dpkg 1.21.11 and 1.21.10 test suite
fails on Alpine Linux Edge. The test suite passed successfully for
previous version of dpkg.
The specific test that fails is the ./t/mk.t.[…]
The output looks as follows:
These messages are repeated in an infinite loop for both dpkg 1.21.11
and 1.21.10, the test does not terminate. I suspect that this is related
to commit c15487a58cfd955ae401c872c95aa375aacd1a88 (author in CC) [1].
If I revert this commit then the mk.t test passes on Alpine Linux. Unfortunately, I don't speak perl so I can't provide a proper fix.
Please let me know if you need more information.
That's weird. I cannot reproduce this. It works in Debian (but that
could imply some hidden dependency), and I just spawned an alpine:latest Docker image, and it passes there too with what's currently on git HEAD:
,---
/src/dpkg # cat /etc/alpine-release
3.17.0
/src/dpkg # apk --version
apk-tools 2.12.10, compiled for x86_64.
/src/dpkg # make -C scripts/ check
[…]
./t/merge_changelogs.t ......... ok
./t/mk.t ....................... ok
All tests successful.
Files=47, Tests=24295, 11 wallclock secs ( 1.11 usr 0.12 sys + 8.06 cusr 1.34 csys = 10.63 CPU)
Result: PASS
make[2]: Leaving directory '/src/dpkg/scripts'
make[1]: Leaving directory '/src/dpkg/scripts'
make: Leaving directory '/src/dpkg/scripts'
`---
alpine:latest is the latest stable release. I encountered this on alpine:edge, which is our rolling release development version (basically Debian Sid). It is interesting that it doesn't seem to fail in
alpine:latest though. However, I can reproduce it in a fresh alpine:edge Docker image using the following commands:
$ docker run -it alpine:edge
/ # cat /etc/alpine-release
3.17_alpha20221110
/ # apk add build-base ncurses-dev xz coreutils gzip bzip2-dev linux-headers perl zlib-dev po4a tar libmd-dev
/ # wget https://deb.debian.org/debian/pool/main/d/dpkg/dpkg_1.21.11.tar.xz
/ # tar -xvf dpkg_1.21.11.tar.xz
/ # cd dpkg-1.21.11
/ # ./configure --disable-nls
/ # make -j$(nproc)
/ # make -C scripts/ check
I haven't tried reproducing the failure on alpine:latest yet so please
let me know if you are also not able to reproduce the hang on alpine:edge.
On Mon, 2022-12-05 at 20:43:45 +0100, Sören Tempel wrote:
alpine:latest is the latest stable release. I encountered this on alpine:edge, which is our rolling release development version (basically Debian Sid). It is interesting that it doesn't seem to fail in alpine:latest though. However, I can reproduce it in a fresh alpine:edge Docker image using the following commands:
$ docker run -it alpine:edge
/ # cat /etc/alpine-release
3.17_alpha20221110
/ # apk add build-base ncurses-dev xz coreutils gzip bzip2-dev linux-headers perl zlib-dev po4a tar libmd-dev
/ # wget https://deb.debian.org/debian/pool/main/d/dpkg/dpkg_1.21.11.tar.xz
/ # tar -xvf dpkg_1.21.11.tar.xz
/ # cd dpkg-1.21.11
/ # ./configure --disable-nls
/ # make -j$(nproc)
/ # make -C scripts/ check
I haven't tried reproducing the failure on alpine:latest yet so please
let me know if you are also not able to reproduce the hang on alpine:edge.
Ah, sorry, can certainly reproduce now. This smells like a problem with
GNU make 4.4, AFAIR that release contains several behavior breaking
changes. Will see what's going on and prep a fix for 1.21.12.
Ok, looks like this might be due to the new GNU make behavior change
where $(shell) now properly gets all exported variables, which is causing recursion. Passing -f to dpkg-arechitecture in the .mk fragment makes the test pass, but I've to make sure this is the right fix, as that will mean externally set variables are not honored, but then that would be the case anyway with the old $(shell) behavior, so I guess not a regression.
Attached a tentative patch.
I haven't tried reproducing the failure on alpine:latest yet so please
let me know if you are also not able to reproduce the hang on alpine:edge.
On Mon, 2022-12-05 at 20:43:45 +0100, Sören Tempel wrote:
I haven't tried reproducing the failure on alpine:latest yet so please
let me know if you are also not able to reproduce the hang on alpine:edge.
So this should be properly fixed now in dpkg 1.21.12 which I released yesterday. Thanks! :)
While I'm checking the Alpine packaging I noticed some things that
could be improved:
* The dpkg-checkbuilddeps test workaround does not seem to be needed
anymore? (I recall fixing that, and at least it seemed to pass on
the alpine:edge Docker image).
* Might need a makedepends on xz-dev (and remove the xz from depends?).
* Might need a depends on xz, gzip and bzip2 for $pkgname-dev, not
sure whether one can specify fine-grained dependencies only for
that package though? Perhaps within the dev() function?
* The dpkg-dev might need a depends on dpkg.
* There should be no need to create the updates/ dir, nor touch the
status nor available file anymore, they are supposed to be created
on demand now.
* The dpkg-dev package ships the headers, .pc file and similar but
the static library (as the library is not stable yet and there is
no shared library yet), gets removed in package(). So probably stop
removing the static library? Some packages (at least in Debian)
make use of it.
* The dpkg-buildflags and dpkg-genbuildinfo should be moved to
dpkg-dev. The same with the usr/share/dpkg/*.mk files.
On Mon, 2022-12-05 at 20:43:45 +0100, Sören Tempel wrote:
I haven't tried reproducing the failure on alpine:latest yet so please
let me know if you are also not able to reproduce the hang on alpine:edge.
So this should be properly fixed now in dpkg 1.21.12 which I released yesterday. Thanks! :)
While I'm checking the Alpine packaging I noticed some things that
could be improved:
* Might need a makedepends on xz-dev (and remove the xz from depends?).
* Might need a depends on xz, gzip and bzip2 for $pkgname-dev, not
sure whether one can specify fine-grained dependencies only for
that package though? Perhaps within the dev() function?
* The dpkg-dev might need a depends on dpkg.
Guillem Jover <guillem@debian.org> wrote:
* Might need a makedepends on xz-dev (and remove the xz from depends?).
The xz dependency was added in 2020 with the commit message "dpkg needs
xz to create packages and busybox xz only support extraction" [1] is
this still the case? If so: we do need it to be a runtime dependency.
* Might need a depends on xz, gzip and bzip2 for $pkgname-dev, not
sure whether one can specify fine-grained dependencies only for
that package though? Perhaps within the dev() function?
It is possible to just define dependencies for the dev() package. Could
you explain which part of the dev subpackage needs these compression
tools though? Unfortunately, Alpine does not have an optional dependency concept so if a dependency is just needed by a particular script in a
package then we tend not to add it.
* The dpkg-dev might need a depends on dpkg.
Could you elaborate why this is necessary?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 42:07:46 |
Calls: | 6,708 |
Calls today: | 1 |
Files: | 12,243 |
Messages: | 5,353,929 |