Re: [PATCH] include/buildrules: substitute ".o" for ".lo" only at the very end

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

 



On Fri, 12 Feb 2021 at 13:29, Eric Sandeen <sandeen@xxxxxxxxxxx> wrote:
>
> On 2/12/21 2:51 PM, Markus Mayer wrote:
> >> To prevent issues when the ".o" extension appears in a directory path,
> >> ensure that the ".o" -> ".lo" substitution is only performed for the
> >> final file extension.
> >
> > If the subject should be "[PATCH] xfsprogs: ...", please let me know.
>
> Nah, that's fine, I noticed it.
>
> So did you have a path component that had ".o" in it that got substituted?
> Is that what the bugfix is?

Yes and yes.

Specifically, I was asked to name the build directory in our build
system "workspace.o" (or something else ending in .o) because that
causes the automated backup to skip backing up temporary build
directories, which is what we want. There is an existing exclusion
pattern that skips .o files during backup runs, and they didn't want
to create specialized rules for different projects. Hence the request
for the oddly named directory to make it match the existing pattern.

We also have a symlink without the ".o" extension (workspace ->
workspace.o) which is commonly used to access the work space, but
symlinks  frequently get expanded when scripts run. In the end, the
xfsprogs build system saw the full path without the symlink
(".../workspace.o/.../xfsprogs-5.8.0/...") and started substituting
workspace.o with workspace.lo. And then the build died.

Like this:

>>> xfsprogs 5.8.0 Building
PATH="/local/users/jenkins/workspace.o/buildroot_linux-5.4_llvm/output/arm64/host/bin:/local/users/jenkins/workspace.o/buildroot_linux-5.4_llvm/output/arm64/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
 /usr/bin/make -j33  -C
/local/users/jenkins/workspace.o/buildroot_linux-5.4_llvm/output/arm64/build/xfsprogs-5.8.0/
   [HEADERS] include
   [HEADERS] libxfs
Building include
    [LN]     disk
make[3]: Nothing to be done for 'include'.
Building libfrog
    [CC]     gen_crc32table
    [GENERATE] crc32table.h
make[4]: *** No rule to make target
'/local/users/jenkins/workspace.lo/buildroot_linux-5.4_llvm/output/arm64/target/usr/include/uuid/uuid.h',
needed by 'bitmap.lo'.  Stop.
make[4]: *** Waiting for unfinished jobs....
    [CC]     avl64.lo
include/buildrules:35: recipe for target 'libfrog' failed
make[3]: *** [libfrog] Error 2
Makefile:91: recipe for target 'default' failed
make[2]: *** [default] Error 2
package/pkg-generic.mk:247: recipe for target
'/local/users/jenkins/workspace.o/buildroot_linux-5.4_llvm/output/arm64/build/xfsprogs-5.8.0/.stamp_built'
failed
make[1]: *** [/local/users/jenkins/workspace.o/buildroot_linux-5.4_llvm/output/arm64/build/xfsprogs-5.8.0/.stamp_built]
Error 2

Regards,
-Markus




[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux