#1105521 pasdoc: FTBFS with make --shuffle=reverse: make[2]: *** [Makefile:193: build-fpc-default-debug] Error 1 shuffle=reverse #1105521
- Package:
- src:pasdoc
- Source:
- src:pasdoc
- Submitter:
- Lucas Nussbaum
- Date:
- 2026-03-15 15:37:02 UTC
- Severity:
- normal
- Tags:
Hi, GNU Make now has a --shuffle option that simulates non-deterministic ordering of target prerequisites. See https://trofi.github.io/posts/238-new-make-shuffle-mode.html and also previous work in Debian by Santiago Vila: https://people.debian.org/~sanvila/make-shuffle/ This package fails to build with make --shuffle=reverse. This is likely to be caused by a missing dependency in debian/rules or an upstream Makefile. More information about this mass bug filing is available at https://wiki.debian.org/qa.debian.org/FTBFS/Shuffle Relevant part (hopefully): The full build log is available from: http://qa-logs.debian.net/2025/05/05/shuffle/reverse/pasdoc_0.16.0-2_unstable_reverse.log If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects
... ( Upstream of PasDoc here. ) The error indicates that "pasdoc.css.inc" does not exist when doing the build. Looking at our upstream Makefile and files ( https://github.com/pasdoc/pasdoc/ ), I don't think it's a problem on our side. The "pasdoc.css.inc", although it's autogenerated, is also present in the repo (see https://github.com/pasdoc/pasdoc/tree/master/source/component ). This is done for the comfort of people building PasDoc in various ways, so that one can open the project in Lazarus / Delphi and "just hit F9 to compile". Possibly the Debian package customization removes the "pasdoc.css.inc" file, and then relies on "make -C source/component" to recreate? This certainly would make sense as a validation (to make sure the "pasdoc.css.inc" is indeed auto-generated to a correct version). And then it has to execute before doing the actual build that relies on "pasdoc.css.inc" existence. But I was not able to find this in PasDoc Debian package sources on Salsa https://salsa.debian.org/pascal-team/pasdoc/ . So.. - I don't know where is the problem, - but I don't think it's in upstream and I don't see it in https://salsa.debian.org/pascal-team/pasdoc/ . - But I hope above observations help the package maintainer to solve the issue :) Regards, Michalis
Hi Michalis, |pasdoc.css.inc will be deleted when the clean target is run before building. | source/component/Makefile Looks to me that the failing rule at top level Makefile line 192/3: is missing a dependency on pasdoc.css.inc There needs to be a target pasdoc.css.inc: The recipe would be in source/component/Makefile Its is likely that other targets need to depend on pasdoc.css.inc Regards, Peter P.S. The bug is only minor. I don't think there is any plan to do official builds with make --shuffle=reverse
The "clean" in source/component/Makefile indeed removes the "pasdoc.css.inc", and the "all" target in that same source/component/Makefile creates it. However, the top-level Makefile (at least in our upstream) does call neither. That's why I was surprised it's missing during the Debian build: - Top-level "make clean" does not call "make -C source/component/ clean". - In same fashion, top-level "make" does not call "make -C source/component/ all". Since it's a very seldom case to want to modify this file, we leave to developers to eventually clean/regenerate "pasdoc.css.inc" by manually calling "make -C source/component/ ..." calls. Though I see that Debian rules clean and recreate it in master/debian/rules ( https://salsa.debian.org/pascal-team/pasdoc/-/blob/master/debian/rules?ref_type=heads ), using "make -C source/component clean all". Still, I'm unsure how is this broken by --shuffle=reverse . Makefile rules get shuffled, but command-line options are still performed in order, right? If they are not, then Debian rules at https://salsa.debian.org/pascal-team/pasdoc/-/blob/master/debian/rules?ref_type=heads#L35 have to be updated to do "make -C source/component clean && make -C source/component all". Regards, Michalis
Hi Michalis, I agree that the bug is line 35 in the rules file make -C source/component clean all Obviously it depends on left > right execution. When run in reverse, it does make all first, then cleans out what it just built!! I prefer adding an extra line, so we have .... make -C source/component clean make -C source/component all .... That ensures that make ... all is always run after the clean Regards, Peter @Abou, Shall I push this to Salsa?
Hi Peter, Why do we call clean before all? I would expect that clean is already called before build. I would remove clean and let only all. Of course cleaning should be done in the clean target.
Hi, Sure, but I guess see commit b49a639954. I suspect that would regress stuff, but please investigate. The details are lost to my memory. Paul
There is a circular dependency in the upstream build. make source/component all regenerates some .inc files. the .inc files are needed by build-tools. make source/component all relies on build-tools. Premature cleaning of source/component will therefore break the build. It is where it is, to ensure the .inc are actually rebuilt. Cheers, Peter B
Thanks. And from the comment there; # I wish I could clean source/component here, but then the build-tools # target FTBFS, so clean in the override_dh_auto_build target instead. # make -C source/component clean Seems to me, that is the only way this build is going to work. Regards, Peter B
Hi, Then we should try to fix it Yes, this is classical and is actually the case for many packages. Let's keep this as is for now, until I can get some time to tackle it or someone can solve it. I don't see this minor issue to be resolved before Trixie.
At least from upstream, you can do this without any circular dependency: 1. "make build-tools", 2. clean and recreate "make -C source/component clean all" , if you wish to make sure that it gets recreated (even though we already ship in repo the up-to-date version), 3. build PasDoc itself by "make build-fpc-default" (command-line), "make build-gui". I just tested the sequence """ make clean make build-tools make -C source/component clean all make build-fpc-default make build-gui """ and it goes OK, and everything gets recompiled, without pasdoc.css.inc being recreated in the middle (when file_to_pascal_string is available, and before it is used for PasDoc compilation). Hope this helps to untangle whatever Debian scripts are doing :) Regards, Michalis
We believe that the bug you reported is fixed in the latest version of
pasdoc, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 1105521@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Mazen Neifer <mazen@debian.org> (supplier of updated pasdoc package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sun, 15 Mar 2026 16:15:23 +0100
Source: pasdoc
Architecture: source
Version: 0.16.0-3
Distribution: unstable
Urgency: medium
Maintainer: Pascal Packaging Team <pkg-pascal-devel@lists.alioth.debian.org>
Changed-By: Mazen Neifer <mazen@debian.org>
Closes: 1105521
Changes:
pasdoc (0.16.0-3) unstable; urgency=medium
.
* Bumped Standards-Version to 4.7.2
* Fixed FTBFS with make --shuffle=reverse.
Split build-tools into build-generators and build-tools via quilt patch to fix circular dependency.
(Closes: #1105521)
* Added Mazen Neifer to Uploaders
* Removed patch already applied by upstream.
Checksums-Sha1:
df098bbf6d55db2e2e3faae7ca114f8890f5573c 1463 pasdoc_0.16.0-3.dsc
134f187e0b522530699919698666b92a463e74e6 6260 pasdoc_0.16.0-3.debian.tar.xz
b23ca640c8c799585dad2da1a98e407a98f23669 10884 pasdoc_0.16.0-3_amd64.buildinfo
Checksums-Sha256:
183bb16a2a3e44f8d0b1aa8e32e134bcad49780e842159177b38ba599efa3f39 1463 pasdoc_0.16.0-3.dsc
1c969378b2796df27b1e8a6ad16a9a5ee28e89bd74eeb7109fc355357a718736 6260 pasdoc_0.16.0-3.debian.tar.xz
19f5ce5d903377886556fb1d4b2a83c01998606a8726db79442da6db96ae6522 10884 pasdoc_0.16.0-3_amd64.buildinfo
Files:
dc5e545b2dfc16ccbef8e0e8ddc3e109 1463 doc optional pasdoc_0.16.0-3.dsc
c8cee243b98862dad2d2752811728906 6260 doc optional pasdoc_0.16.0-3.debian.tar.xz
d3bff8f5cf2f6712170f3145847c137f 10884 doc optional pasdoc_0.16.0-3_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iIcEAREKAC8WIQS69sZENhB4UNQicQazJVxtVYeNjAUCabbOiBEcbWF6ZW5AZGVi
aWFuLm9yZwAKCRCzJVxtVYeNjI/eAQCtQZ85l2uXB4fwUyMV5sR39eOvHwvyohKu
VXSFbyMshwD7BdlPgvUkCmGdqVtnHJpcqtQC+QIoVWXlMuSbjMwzGg4=
=BtU7
-----END PGP SIGNATURE-----