make 3.82 has changed with respect to internal behavior quite a bit, and
is getting more strict regarding POSIX compliancy. Thus a number of
packages fail.
make 3.82 is currently tested in openSUSE:Factory:Staging.
The following shows the majority of typical errors, and how to fix them:
*** mixed implicit and normal rules. Stop.
In previous versions of make it was sometimes not flagged as an error for
explicit and pattern targets to appear in the same rule. Now it's always an
error.
Example: busybox:
config %config: scripts_basic outputmakefile FORCE
Either the recipe has to be duplicated for both config and %config, or
something like %onfig has to be used. Which is more hacky.
*** missing separator. Stop.
- Recipes with spaces instead of TABs, which were silently ignored before.
E.g. in at-spi:
install-data-local:
if test -z "$(DESTDIR)" ; then \
Spaces were always illegal as command separator - use TABs.
- You have an action with a space in its names.
You need to put the action in a variable, escaping no longer works.
Or rename files with spaces (ugh!) and use underscores like every good citizen.
Or make sure that autmatic variable expansion is behaving nicely.
E.g. in package kvm: gpxe-0.9.9/src/bin/deps/drivers/net/sis190.c.d:
DRIVER_SiS 190 = sis190
- Broken Makefiles like for f-spot:
dnl $(TRANSLATOR_EXTRACTOR_ASSEMBLY): TranslatorExtractor.cs
dnl if [ "x$(top_srcdir)" = "x$(top_builddir)" ]; then \
I do not know why this ever worked, but it's clearly not Makefile syntax.
I assume that an m4 run is missed or automake behaved differently before.
Comment out lines in Makefiles with '#' instead.
- There are also more complex cases, e.g. for dmidecode
see http://savannah.nongnu.org/bugs/?30827
*** No rule to make target *, needed by *. Stop.
- Rules using archive members, A(M) syntax.
Known regression, make Savannah bug #30612.
(Hopefully) fixed make is submitted.
The other package failures are probably not related to the make update.
HTH
Matthias
--
Matthias Hopf