Re: con3270.o is built twice, leading to errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 14, 2023 at 3:33 PM Jiri Slaby <jirislaby@xxxxxxxxxx> wrote:
>
> Hi,
>
> if I create an s390 defconfig:
> mkdir /tmp/s390/
> make O=/tmp/s390/ ARCH=s390 CROSS_COMPILE=s390x-suse-linux- defconfig
>
> And then if I try for a couple times:
> make O=/tmp/s390/ -j17 ARCH=s390 CROSS_COMPILE=s390x-suse-linux-
> drivers/s390/char/con3270.o
>
> Most of the time, I get:
> make[1]: Entering directory '/tmp/s390'
>    GEN     Makefile
>    CALL    /home/latest/linux/scripts/checksyscalls.sh
>    CC      drivers/s390/char/con3270.o
>    CC      drivers/s390/char/con3270.o
>
> I.e. it is built twice.
>
> Sometimes, I also get an error:
> fixdep: error opening file: drivers/s390/char/.con3270.o.d: No such file
> or directory
> make[4]: *** [/home/latest/linux/scripts/Makefile.build:243:
> drivers/s390/char/con3270.o] Error 2
> make[4]: *** Deleting file 'drivers/s390/char/con3270.o'
> make[3]: *** [/home/latest/linux/scripts/Makefile.build:477: drivers]
>
> Obviously due to some race.
>
> Any ideas what is going on?



The reason is because ARCH=s390 descends into
drivers/s390/ in a non-standard way.

See arch/s390/Makefile line 122.



This is a corner case in single builds, and I
do not know how to make it work.



I really hope arch maintainers will follow the standard
obj-y syntax unless there is a strong reason to opt out.


The following patch will fix the issue.








diff --git a/arch/s390/Makefile b/arch/s390/Makefile
index 5ed242897b0d..a53a36ee0731 100644
--- a/arch/s390/Makefile
+++ b/arch/s390/Makefile
@@ -119,7 +119,6 @@ export KBUILD_CFLAGS_DECOMPRESSOR
 OBJCOPYFLAGS   := -O binary

 libs-y         += arch/s390/lib/
-drivers-y      += drivers/s390/

 boot           := arch/s390/boot
 syscalls       := arch/s390/kernel/syscalls
diff --git a/drivers/Makefile b/drivers/Makefile
index 7241d80a7b29..a7459e77df37 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -195,3 +195,5 @@ obj-$(CONFIG_PECI)          += peci/
 obj-$(CONFIG_HTE)              += hte/
 obj-$(CONFIG_DRM_ACCEL)                += accel/
 obj-$(CONFIG_CDX_BUS)          += cdx/
+
+obj-$(CONFIG_S390)             += s390/






-- 
Best Regards
Masahiro Yamada




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux