Your message dated Sat, 24 Apr 2021 23:41:35 -0700 (PDT)
with message-id <60850f1f.1c69fb81.fda96.7...@mx.google.com>
and subject line Closing this bug (BTS maintenance for src:linux bugs)
has caused the Debian Bug report #744904,
regarding KBUILD_OUTPUT setting not respected for (at least) one component of 
"make deb-pkg"
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
744904: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744904
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: linux-source-3.2                
Version: 3.2.54-2

When attempting to build a kernel package with "make deb-pkg" and specifying 
KBUILD_OUTPUT, the build process (attempts to) write to the source directory 
rather than the build directory, at some point during the make process.

I am attempting to build a clean amd64/x86_64 kernel directly from the 
Debian-provided source, with only the EXTRAVERSION and KBUILD_OUTPUT variables 
set directly in the top-level Makefile (and also KBUILD_VERBOSE=1 on the 
command line for the log below, in an attempt to get more information).  The 
source resides on a read-only filesystem; the output directory is (obviously) 
on a read-write filesystem.  The initial steps of "make menuconfig" and "make" 
succeed without error, but "make deb-pkg" fails when it cannot write a 
particular file into the read-only filesystem.  The last several lines of 
output from the make are copied below (-j16 specified to the make command in 
this instance):

make -f /path/to/source/linux-3.2.54-custom/scripts/Makefile.fwinst 
obj=firmware __fw_modinst
  /bin/bash /path/to/source/linux-3.2.54-custom/scripts/depmod.sh /sbin/depmod 
3.2.54-custom
make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make 
rule.
set -e; : '  CHK     include/linux/version.h'; mkdir -p include/linux/;         
(echo \#define LINUX_VERSION_CODE 197174; echo '#define KERNEL_VERSION(a,b,c) 
(((a) << 16) + ((b) << 8) + (c))';) < 
/path/to/source/linux-3.2.54-custom/Makefile > include/linux/version.h.tmp; if 
[ -r include/linux/version.h ] && cmp -s include/linux/version.h 
include/linux/version.h.tmp; then rm -f include/linux/version.h.tmp; else : '  
UPD     include/linux/version.h'; mv -f include/linux/version.h.tmp 
include/linux/version.h; fi
/bin/sh: 1: cannot create include/linux/version.h.tmp: Read-only file system
make[4]: *** [include/linux/version.h] Error 2
make[3]: *** [all] Error 2
make[2]: *** [deb-pkg] Error 2
make[1]: *** [deb-pkg] Error 2
make: *** [sub-make] Error 2

Apparently, somewhere in the kbuild process, KBUILD_OUTPUT is not being passed 
along correctly, and this particular component of the build process is being 
run from the source directory (since the "> include/linux/version.h.tmp" 
portion is whatseems to be failing).

Additional details from my own investigation:

- When I build from a non-read-only filesystem and without KBUILD_OUTPUT 
specified, the build process completes normally and the kernel package works as 
expected.

- I inserted a "pwd" command into the "filechk" definition (in 
scripts/KBuild.include) to verify that the working directory had not been 
changed in that particular instance where the make failed -- and indeed it had 
not.

- Kernel version 3.13.7 (again, the version directly from the Debian-provided 
source) builds cleanly when the source is on a read-only filesystem and 
KBUILD_OUTPUT is set.  Comparing the build logs, I see the following from the 
3.13.7 build (keeping in mind that version.h has been moved between kernel 
versions):

make -f /path/to/source/test-linux-3.13.7/scripts/Makefile.fwinst obj=firmware 
__fw_modinst
  /bin/bash /path/to/source/test-linux-3.13.7/scripts/depmod.sh /sbin/depmod 
3.13.7-custom ""
make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make 
rule.
make -C /path/to/output_directory/test-linux-3.13.7 \
    KBUILD_SRC=/path/to/source/test-linux-3.13.7 \
    KBUILD_EXTMOD="" -f /path/to/source/test-linux-3.13.7/Makefile \
    headers_check
set -e; : '  CHK     include/generated/uapi/linux/version.h'; mkdir -p 
include/generated/uapi/linux/;   (echo \#define LINUX_VERSION_CODE 199943; echo 
'#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) < 
/path/to/source/test-linux-3.13.7/Makefile > 
include/generated/uapi/linux/version.h.tmp; if [ -r 
include/generated/uapi/linux/version.h ] && cmp -s 
include/generated/uapi/linux/version.h 
include/generated/uapi/linux/version.h.tmp; then rm -f 
include/generated/uapi/linux/version.h.tmp; else : '  UPD     
include/generated/uapi/linux/version.h'; mv -f 
include/generated/uapi/linux/version.h.tmp 
include/generated/uapi/linux/version.h; fi
make -f /path/to/source/test-linux-3.13.7/scripts/Makefile.build 
obj=scripts/basic
[...continues...]

It appears as if the 3.2.54 version doesn't have that "make -C 
/path/to/output_directory/ [etc.]" command in the sequence.  However, in my 
exploration of the comparative source trees for the two kernel versions, I 
haven't managed to figure out the exact path by which that point is reached, so 
I can't suggest a fix.

Thanks.

--- End Message ---
--- Begin Message ---
Hi

This bug was filed for a very old kernel or the bug is old itself
without resolution.

If you can reproduce it with

- the current version in unstable/testing
- the latest kernel from backports

please reopen the bug, see https://www.debian.org/Bugs/server-control
for details.

Regards,
Salvatore

--- End Message ---

Reply via email to