On 17. 03. 23, 12:17, Vasily Gorbik wrote:
On Thu, Mar 16, 2023 at 12:14:27PM +0100, Jiri Slaby wrote:
On 27. 06. 22, 14:50, Vasily Gorbik wrote:
With that, expoline.S doesn't require asm-offsets.h and
expoline_prepare target dependency could be removed.
+++ b/arch/s390/Makefile
@@ -166,7 +166,7 @@ vdso_prepare: prepare0
ifdef CONFIG_EXPOLINE_EXTERN
modules_prepare: expoline_prepare
-expoline_prepare: prepare0
+expoline_prepare:
this likely broke s390 build as expolines still depend on
scripts/basic/fixdep. And build of expolines can now race with fixdep build:
make[1]: *** Deleting file 'arch/s390/lib/expoline/expoline.o'
/bin/sh: line 1: scripts/basic/fixdep: Permission denied
make[1]: *** [../scripts/Makefile.build:385:
arch/s390/lib/expoline/expoline.o] Error 126
make: *** [../arch/s390/Makefile:166: expoline_prepare] Error 2
I returned there:
expoline_prepare: prepare0
and it looks good so far. Maybe even:
expoline_prepare: scripts
would be enough.
Hi Jiri, thanks for looking into this!
Probably even scripts_basic would be enough to add explicit dependency
to fixdep. But I just couldn't reproduce missing scripts/basic/fixdep
neither with modules_prepare nor expoline_prepare targets.
Hi,
yes, I could not reproduce locally too. It likely needs a "slow" and
sort of specific machine to happen. This happened randomly only on SUSE
build systems. And only on the internal ones. There are no failures on
public ones:
https://build.opensuse.org/packages/kernel-default/job_history/Kernel:stable/S390/s390x
The kernel is built as:
make prepare # builds scripts/basic and other stuff we use
make clean # remove all but scripts and config
make all # scripts/basic/fixdep is rebuilt
fixdep is rebuilt due to clean-ed .fixdep.o.cmd -- that one is
regenerated and fixdep built anew.
The whole process (make log) is dumped at:
https://build.opensuse.org/package/live_build_log/Kernel:stable/kernel-default/S390/s390x
With which specific build command were you able to get those error
messages? I wonder where
make[1]: *** Deleting file 'arch/s390/lib/expoline/expoline.o'
is coming from. Could it be smth like?
It's from make after the build (fixdep invocation) failure. So that
stale files do not exist.
Note that fixdep likely exist, but it is a stub -- linking phase still runs.
make ARCH=s390 CROSS_COMPILE=s390x-12.2.0- -j64 arch/s390/lib/expoline/expoline.o
Playing around with this build target I found it is broken:
AS arch/s390/lib/expoline/expoline.o
AS arch/s390/lib/expoline/expoline.o
fixdep: error opening file: arch/s390/lib/expoline/.expoline.o.d: No such file or directory
make[3]: *** [scripts/Makefile.build:374: arch/s390/lib/expoline/expoline.o] Error 2
make[3]: *** Deleting file 'arch/s390/lib/expoline/expoline.o'
make[2]: *** [scripts/Makefile.build:494: arch/s390/lib/expoline] Error 2
make[1]: *** [scripts/Makefile.build:494: arch/s390/lib] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:2028: .] Error 2
Notice dup AS call, which is probably causing this:
make[3]: *** Deleting file 'arch/s390/lib/expoline/expoline.o'
But that would be a different issue from the one you are trying to fix.
Likely.
thanks,
--
js