#1105521 pasdoc: FTBFS with make --shuffle=reverse: make[2]: *** [Makefile:193: build-fpc-default-debug] Error 1 shuffle=reverse

Package:
src:pasdoc
Source:
src:pasdoc
Submitter:
Lucas Nussbaum
Date:
2026-03-15 15:37:02 UTC
Severity:
normal
Tags:
#1105521#5
Date:
2025-05-13 19:12:02 UTC
From:
To:
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

#1105521#10
Date:
2025-05-15 09:39:31 UTC
From:
To:
...

( 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

#1105521#15
Date:
2025-05-15 11:38:48 UTC
From:
To:
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

#1105521#20
Date:
2025-05-15 13:03:29 UTC
From:
To:
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

#1105521#25
Date:
2025-05-16 17:02:27 UTC
From:
To:
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?

#1105521#30
Date:
2025-05-17 09:39:05 UTC
From:
To:
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.

#1105521#35
Date:
2025-05-17 13:51:05 UTC
From:
To:
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

#1105521#40
Date:
2025-05-18 10:52:28 UTC
From:
To:
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

#1105521#45
Date:
2025-05-18 10:56:14 UTC
From:
To:
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

#1105521#50
Date:
2025-05-18 11:39:29 UTC
From:
To:
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.

#1105521#55
Date:
2025-05-18 23:47:50 UTC
From:
To:
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

#1105521#62
Date:
2026-03-15 15:34:00 UTC
From:
To:
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-----