Opened 4 years ago

Last modified 2 years ago

#6939 reopened defect

make install clean regression

Reported by: Carl Eugen Hoyos Owned by:
Priority: important Component: build system
Version: git-master Keywords: regression
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by Carl Eugen Hoyos)

http://ffmpeg.org/pipermail/ffmpeg-user/2017-December/038318.html
Running make install clean is broken since cbe181c8e1611aaee2a85ab522e17b1322bdd4de

$ ./configure --prefix=~/installationtest && make install clean

...

./ffbuild/pkgconfig_generate.sh: line 21: libavfilter/libavfilter.version: No such file or directory
make: *** [libavdevice/libavdevice.pc] Error 1

Change History (4)

comment:1 by Elon Musk, 2 years ago

Resolution: invalid
Status: newclosed

The command does not work.

comment:2 by Carl Eugen Hoyos, 2 years ago

Description: modified (diff)
Resolution: invalid
Status: closedreopened

comment:3 by Balling, 2 years ago

You must be kidding me.

comment:4 by Alexander Strasser, 2 years ago

Wow, I finally understand what magic is happening here. At least I hope so.

I wonder if those commits (the one quoted in the description and the similar one that came after):

were really correct. I mean they completely disable the creation of *.version files if one of the make command's goals were config or anything that ends in clean.

The -include is triggering the generation of the *.version files. To be exact the DOSUBDIR-loop in the main Makefile includes all library.mak for all sub directories which in turn includes the corresponding lib<name>.version which if it couldn't be included at first will be created and included.
See GNU Make documenation for include.

If the only advantage is to hide a few GEN lines, to not generate the .version files and saving around half a second for the degenerate case of invoking make clean on clean directories, I'm not sure we really need that. Not entirely sure about the config case. Is that goal for configure development? Or when do we need it? Or is it more of a convenience goal for re-configuring without having to re-create the command line one used in the build before?

Note: See TracTickets for help on using tickets.