Follow-up Comment #35, bug #66583 (group groff): [comment #34 comment #34:] > [...] >> Follow-up Comment #33, bug #66583 (group groff): >> I disagree. The purpose of a "configure" script is to probe the system >> for properties upon which a source code projects depends to build (or >> which it can fruitfully and optionally exercise). > > That can be probed within `make`. No need to run a separate > `./configure`, which will get out-of-date when I upgrade the system. > > [...] > > Also, probing the system would be nice, but in reality, it does more > than that. It also tries to decide what the actual build will do. For > example, it sets the prefix, or other variables. I suspect this will > produce broken programs in many projects: > ./configure --prefix=/foo > make prefix=/bar > make install > > (Although, I must admit that the alternative isn't ideal, since you're > forced to specify it twice, and must repeat it exactly: > make prefix=/bar > make install prefix=/bar
You can work around that: export MAKEFLAGS=-e PREFIX=/bar make make install > [..] > I don't see it in the makefiles (god save me from trying to read them). :) > [...] >>>> I would characterize my own solution... >> [snip] >>>> +all: $(GROFF_INFO) $(GROFF_TXT) $(GROFF_HTML) $(GROFF_DVI) $(GROFF_PDF) >> [snip] >>>> ...as straightforward, but I dare not say idiomatic. >> >>> This patch is bad. IMO. >> >> What about it is bad? > > That it doesn't seem to address the bug I experience, which I can only > explain as a wrong dependency somewhere. Can you try the patches I posted? It should at the very least allow one to choose what they want to build (automake seems to modify the `all` target, so I am not sure if it will fix your issues with `make all`). I am attaching the first one again with corrections from comment #32, the second one you can find at the bottom of this page as file #56728. > Since I can't reproduce it anywhere except my laptop, I've tried > something there: I touched the files that make(1) is having trouble > building, which were > touch doc/groff.dvi > touch doc/groff.pdf > > and after that, the build run just fine. I see the first thing after > touching those two files is a line saying > make all-recursive > > which makes me suspect of these two lines: > > Makefile:6773:all: $(BUILT_SOURCES) > Makefile:6774: $(MAKE) $(AM_MAKEFLAGS) all-recursive > > So, some part of the build is a dependency of 'all', and other part is > 'all' itself. This is brain damage. That's causing a hidden dependency > where all of the recursive build (whatever that is) depends on all of > the BUILT_SOURCES (whatever that is). That's the bug. (Why can't I > reproduce it elsewhere? I don't know. Probably those guesses that we > mentioned before.) The problem I see with the approach taken by automake in general is that instead of declaring make targets, files are added to make macros which are converted into targets by automake. For instance to build manpages, the filenames of those manpages are added to macro manX_MANS (where X is section number) and automake generates targets for them. Similarly, to build a program, you add its source code to macro X_SOURCES (where X is name of the program) and the names of its binaries in X_PROGRAMS. (I suppose it's a bit more complicated than that, but it illustrates the abuse of make that automake is committing. As for BUILT_SOURCES, I found this: https://www.gnu.org/software/automake/manual/html_node/Sources.html ...and here it is used in an example which illustrates the way automake is supposed to be used: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html I have no words for the above, especially the latter. Just... WTF?? (file #56729) _______________________________________________________ Additional Item Attachment: File name: 0001-Allow-more-granular-selection-of-parts-of-groff-to-b.patch Size: 9KiB <https://file.savannah.gnu.org/file/0001-Allow-more-granular-selection-of-parts-of-groff-to-b.patch?file_id=56729> AGPL NOTICE These attachments are served by Savane. You can download the corresponding source code of Savane at https://savannah.gnu.org/source/savane-d58233b6feaa780411f7f09b695724cabce7bc1d.tar.gz _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?66583> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
signature.asc
Description: PGP signature