You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In ffspart we assign this make variable:
FFSPART_VERSION ?= $(shell ./make_version.sh $(EXE))
However, ./make_version.sh is actually a make target, and whether it
exists or not at the time of this assignment is by chance, depending on
how the make concurrency works out.
In practice, this intermittently causes CI build failure:
make -j${MAKE_J} check
+ make -j4 check
...
[ RUN-TEST ] check-ffspart
...
make[1]: ./make_version.sh: No such file or directory
...
make[1]: *** [Makefile:13: check] Error 1
make[1]: Entering directory '/build/external/ffspart'
...
running test/tests/00-usage
running test/tests/01-param-sanity
Fatal error, cannot execute binary './ffspart'. Did you make?
make[1]: Leaving directory '/build/external/ffspart'
make: *** [/build/external/Makefile.check:21: check-ffspart] Error 2
make: *** Waiting for unfinished jobs....
The rule for make_version.sh is just a symlink:
make_version.sh:
$(Q_LN)ln -sf ../../make_version.sh
To avoid the race, call make_version.sh from its actual location instead
of relying on the link to be created. The same thing was done for gard
in commit 8ab0caf ("external/gard: Fix make dist target").
Signed-off-by: Reza Arbab <[email protected]>
0 commit comments