[Debian GNUstep maintainers] Bug#1094879: gnustep-gui FTCBFS: configures for the build architecture during dh_auto_clean

Helmut Grohne helmut at subdivi.de
Sat Feb 1 08:54:44 GMT 2025


On Sat, Feb 01, 2025 at 09:35:22AM +0200, Yavor Doganov wrote:
> Helmut Grohne wrote:
> > On Sat, Feb 01, 2025 at 12:53:24AM +0200, Yavor Doganov wrote:
> > > That's realy puzzling, I honestly can't figure out what's going on.
> > 
> > Would you mind sharing a successful build log of yours for me to look
> > into? Diffing build logs is a powerful tool.
> 
> Sure; please find it attached (gzipped).

Being puzzled goes on. The log did not reveal much to me. A few
observations:
 * It actually does not use -nc (as you said) and really does run make
   distclean (as does the failing one).
 * make distclean does not run configure (unlike the failing one).

I added --debug=a to a local test build and this is what I get:

| dh_auto_clean -- --debug=a
|         make -j8 distclean --debug=a
| GNU Make 4.4.1
| Built for x86_64-pc-linux-gnu
| Copyright (C) 1988-2023 Free Software Foundation, Inc.
| License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
| This is free software: you are free to change and redistribute it.
| There is NO WARRANTY, to the extent permitted by law.
| Reading makefiles...
| Reading makefile 'GNUmakefile'...
| Reading makefile '/usr/share/GNUstep/Makefiles/common.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/config-noarch.make' (search path) (no ~ expansion)...
| Reading makefile '/etc/GNUstep/GNUstep.conf' (search path) (don't care) (no ~ expansion)...
| Reading makefile '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf' (search path) (don't care) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/names.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/config.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/library-combo.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/messages.make' (search path) (no ~ expansion)...
| Reading makefile 'gui.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Additional/base.make' (search path) (don't care) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/target.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/filesystem.make' (search path) (no ~ expansion)...
| make[2]: Entering directory '/build/reproducible-path/gnustep-gui-0.31.1'
| This is gnustep-make 2.9.2. Type 'make print-gnustep-make-help' for help.
| Running in gnustep-make version 2 strict mode.
| Reading makefile 'Version' (search path) (no ~ expansion)...
| Reading makefile 'GNUmakefile.preamble' (search path) (don't care) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/aggregate.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Master/serial-subdirectories.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/rules.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Master/rules.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Master/source-distribution.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Master/rpm.make' (search path) (no ~ expansion)...
| Reading makefile '/usr/share/GNUstep/Makefiles/Master/deb.make' (search path) (no ~ expansion)...
| Reading makefile 'GNUmakefile.postamble' (search path) (no ~ expansion)...
| Using jobserver controller fifo:/tmp/GMfifo269
| Updating makefiles....
|  Considering target file 'GNUmakefile'.
|   Looking for an implicit rule for 'GNUmakefile'.
|    Trying pattern rule '%: %.m' with stem 'GNUmakefile'.
|    Trying implicit prerequisite 'GNUmakefile.m'.
|    Not found 'GNUmakefile.m'.
|    Trying harder.
|    Trying pattern rule '%: %.m' with stem 'GNUmakefile'.
|    Trying implicit prerequisite 'GNUmakefile.m'.
|    Looking for a rule with intermediate file 'GNUmakefile.m'.
|     Avoiding implicit rule recursion for rule '%: %.m'.
|    No implicit rule found for 'GNUmakefile.m'.
|    Rejecting rule '%: %.m' due to impossible prerequisite 'GNUmakefile.m'.
|   No implicit rule found for 'GNUmakefile'.
|  Finished prerequisites of target file 'GNUmakefile'.
|  No need to remake target 'GNUmakefile'.
|  Considering target file '/usr/share/GNUstep/Makefiles/common.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/common.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/common.make'.
|  Considering target file '/usr/share/GNUstep/Makefiles/config-noarch.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/config-noarch.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/config-noarch.make'.
|  Considering target file '/etc/GNUstep/GNUstep.conf'.
|  Finished prerequisites of target file '/etc/GNUstep/GNUstep.conf'.
|  No need to remake target '/etc/GNUstep/GNUstep.conf'.
|  Considering target file '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf'.
|   File '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf' does not exist.
|  Finished prerequisites of target file '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf'.
|  Must remake target '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf'.
|  Successfully remade target file '/build/reproducible-path/gnustep-gui-0.31.1/debian/.debhelper/generated/_source/home/.GNUstep.conf'.
|  Considering target file '/usr/share/GNUstep/Makefiles/names.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/names.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/names.make'.
|  Considering target file '/usr/share/GNUstep/Makefiles/config.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/config.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/config.make'.
|  Considering target file '/usr/share/GNUstep/Makefiles/library-combo.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/library-combo.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/library-combo.make'.
|  Considering target file '/usr/share/GNUstep/Makefiles/messages.make'.
|  Finished prerequisites of target file '/usr/share/GNUstep/Makefiles/messages.make'.
|  No need to remake target '/usr/share/GNUstep/Makefiles/messages.make'.
|  Considering target file 'gui.make'.
|   File 'gui.make' does not exist.
|   Considering target file 'gui.make.in'.
|    Looking for an implicit rule for 'gui.make.in'.
|     Trying pattern rule '%: %.m' with stem 'gui.make.in'.
|     Trying implicit prerequisite 'gui.make.in.m'.
|     Not found 'gui.make.in.m'.
|     Trying harder.
|     Trying pattern rule '%: %.m' with stem 'gui.make.in'.
|     Trying implicit prerequisite 'gui.make.in.m'.
|     Looking for a rule with intermediate file 'gui.make.in.m'.
|      Avoiding implicit rule recursion for rule '%: %.m'.
|     No implicit rule found for 'gui.make.in.m'.
|     Rejecting rule '%: %.m' due to impossible prerequisite 'gui.make.in.m'.
|    No implicit rule found for 'gui.make.in'.
|   Finished prerequisites of target file 'gui.make.in'.
|   No need to remake target 'gui.make.in'.
|   Considering target file 'Version'.
|    Looking for an implicit rule for 'Version'.
|     Trying pattern rule '%: %.m' with stem 'Version'.
|     Trying implicit prerequisite 'Version.m'.
|     Not found 'Version.m'.
|     Trying harder.
|     Trying pattern rule '%: %.m' with stem 'Version'.
|     Trying implicit prerequisite 'Version.m'.
|     Looking for a rule with intermediate file 'Version.m'.
|      Avoiding implicit rule recursion for rule '%: %.m'.
|     No implicit rule found for 'Version.m'.
|     Rejecting rule '%: %.m' due to impossible prerequisite 'Version.m'.
|    No implicit rule found for 'Version'.
|   Finished prerequisites of target file 'Version'.
|   No need to remake target 'Version'.
|   Considering target file 'configure'.
|    Looking for an implicit rule for 'configure'.
|     Trying pattern rule '%: %.m' with stem 'configure'.
|     Trying implicit prerequisite 'configure.m'.
|     Not found 'configure.m'.
|     Trying harder.
|     Trying pattern rule '%: %.m' with stem 'configure'.
|     Trying implicit prerequisite 'configure.m'.
|     Looking for a rule with intermediate file 'configure.m'.
|      Avoiding implicit rule recursion for rule '%: %.m'.
|     No implicit rule found for 'configure.m'.
|     Rejecting rule '%: %.m' due to impossible prerequisite 'configure.m'.
|    No implicit rule found for 'configure'.
|   Finished prerequisites of target file 'configure'.
|   No need to remake target 'configure'.
|  Finished prerequisites of target file 'gui.make'.
|  Must remake target 'gui.make'.
| Need a job token; we don't have children
| GNUmakefile.postamble:81: update target 'gui.make' due to: target does not exist
| if [ -x config.status ]; then \
|   ./config.status --recheck && ./config.status; \
| else \
|   ./configure; \
| fi

Once configure is invoked, things go bad.

>From what I see, GNUmakefile sets:

| GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES=gui.make

and then does

| include $(GNUSTEP_MAKEFILES)/common.make

which comes from gnustep-make and does

| ifneq ($(GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES),)
| include $(GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES)
| endif

which is combined with GNUmakefile.postamble as included via

| include GNUmakefile.postamble

and contains

| gui.make: gui.make.in Version configure
|         if [ -x config.status ]; then \
|           ./config.status --recheck && ./config.status; \
|         else \
|           ./configure; \
|         fi

and thus remakes gui.make as it does not exist.

Would you happen to see where this chain of logic fails for your build
and why it ends up not remaking gui.make? Consider adding --debug=a to
your make distclean invocation and comparing (or giving me the output to
compare).

Thanks for bearing with me.

Helmut



More information about the pkg-GNUstep-maintainers mailing list