Opened 2 years ago

Last modified 4 months ago

#6939 reopened defect

make install clean regression

Reported by: cehoyos 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 cehoyos)

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 Changed 8 months ago by richardpl

  • Resolution set to invalid
  • Status changed from new to closed

The command does not work.

comment:2 Changed 8 months ago by cehoyos

  • Description modified (diff)
  • Resolution invalid deleted
  • Status changed from closed to reopened

comment:3 Changed 4 months ago by Balling

You must be kidding me.

comment:4 Changed 4 months ago by beastd

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.