ArcticaProject / nx-libs

nx-libs
Other
119 stars 39 forks source link

Build error depending on $VERBOSE flag #1058

Open realsimix opened 1 year ago

realsimix commented 1 year ago

Hi,

I've just tried to rebuild my packages with latest code and found this strange issue. If $VERBOSE is empty or undefined, I get this build error on RHEL 7:

+ /usr/bin/make CONFIGURE=/home/pkgbuild/rpmbuild/BUILD/nx-libs-3.5.99.27/local_configure \
    LIBDIR=/usr/lib64 'CDEBUGFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \
    -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic' \
    'LOCAL_LDFLAGS=-Wl,-z,relro ' 'SHLIBGLOBALSFLAGS=-Wl,-z,relro ' IMAKE_DEFINES=-DUseTIRPC=NO VERBOSE=
Makefile:36: xkbcomp devel package missing, using imake default values

===> build
Makefile:36: xkbcomp devel package missing, using imake default values

===> imakeconfig
make[3]: xmakefile: No such file or directory
make[3]: *** No rule to make target `xmakefile'.  Stop.
make[2]: *** [VerifyOS] Error 2
make[1]: *** [imakeconfig] Error 2
make: *** [build] Error 2

This was not a problem with 3.5.99.26 and only happens on a bit older distributions.

I didn't dig into details because adding VERBOSE=1 is an easy fix. But, does anyone have an idea where this comes from?

Thanks, Simon

uli42 commented 1 year ago

There are some tests in nx-X11/config/cf/Imake.rules that probably return the wrong result, e.g.

@if [ -f new ]; then test -n "${VERBOSE}" && ...

All these came in with commit 637a170e7c970e480c1ad6bf131698f0919644c7.

So either we need to ensure VERBOSE really has a value before starting build or we need to improve the checks. Or both ;-)

Uli

On Fri, May 26, 2023 at 11:30 AM Simon Matter @.***> wrote:

Hi,

I've just tried to rebuild my packages with latest code and found this strange issue. If $VERBOSE is empty or undefined, I get this build error on RHEL 7:

  • /usr/bin/make CONFIGURE=/home/pkgbuild/rpmbuild/BUILD/nx-libs-3.5.99.27/local_configure \ LIBDIR=/usr/lib64 'CDEBUGFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \ -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' \ 'LOCAL_LDFLAGS=-Wl,-z,relro ' 'SHLIBGLOBALSFLAGS=-Wl,-z,relro ' IMAKE_DEFINES=-DUseTIRPC=NO VERBOSE= Makefile:36: xkbcomp devel package missing, using imake default values

===> build Makefile:36: xkbcomp devel package missing, using imake default values

===> imakeconfig make[3]: xmakefile: No such file or directory make[3]: No rule to make target `xmakefile'. Stop. make[2]: [VerifyOS] Error 2 make[1]: [imakeconfig] Error 2 make: [build] Error 2

This was not a problem with 3.5.99.26 and only happens on a bit older distributions.

I didn't dig into details because adding VERBOSE=1 is an easy fix. But, does anyone have an idea where this comes from?

Thanks, Simon

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

realsimix commented 1 year ago

Things are getting more confusing the deeper I dig. What I found out so far is this:

On certain systems the build fails if no $VERBOSE variable is defined. But, from what I saw, all the test -n ${VERBOSE} && changes should be fine. The reason why building fails is because, without $VERBOSE defined, we are calling

imake -s -s xmakefile...

in nx-X11/Makefile. The issue was introduced with commit https://github.com/ArcticaProject/nx-libs/commit/72f11ee838e67757e235e7216fb82679cc3f7d67 where imake is called with $MFLAGS.

Can it be that $MFLAGS is somehow set to -s automatically if a $VERBOSE variable is not set, to make make silent? -s for make means silent, while for imake, it means naming the output file. Can it be that $MFLAGS should really only be used for make then and not for imake?

My patch nx-libs-3.5.99.27-verbose.patch.txt reverts mentioned commit and also fixes some mostly cosmetic issues. It allows building successfully on all my systems, with or without $VERBOSE being defined.

Regards, Simon

uli42 commented 1 year ago

Thanks for that!

I think MFLAGS is not supposed to be passed to imake because as your comment shows it will contain a single -s sometimes which a standard make will interpret as silent while for imake it designates a the file to be generated. So would say reverting that commit is correct.

$ grep MFLAGS nx-X11/config/cf/README ConstructMFLAGS System V option to set MFLAGS make variable

so it is probably system dependent if is set or not.

The double "test -n" are certainly a search and replace fail and need to be fixed.

Separating "set -e" is also a good finding. Looks like my patch was merged too early and without a proper review ;-)

I think we should merge your patch, but separated to multiple commits. Are you willing to provide a pull request?

One more thing: does it also work now if you define VERBOSE without a value, like in your initial post?

Uli

On Fri, May 26, 2023 at 5:33 PM Simon Matter @.***> wrote:

Things are getting more confusing the deeper I dig. What I found out so far is this:

On certain systems the build fails if no $VERBOSE variable is defined. But, from what I saw, all the test -n ${VERBOSE} && changes should be fine. The reason why building fails is because, without $VERBOSE defined, we are calling

imake -s -s xmakefile...

in nx-X11/Makefile. The issue was introduced with commit 72f11ee where imake is called with $MFLAGS.

Can it be that $MFLAGS is somehow set to -s automatically if a $VERBOSE variable is not set, to make make silent? -s for make means silent, while for imake, it means naming the output file. Can it be that $MFLAGS should really only be used for make then and not for imake?

My patch nx-libs-3.5.99.27-verbose.patch.txt reverts mentioned commit and also fixes some mostly cosmetic issues. It allows building successfully on all my systems, with or without $VERBOSE being defined.

Regards, Simon

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

realsimix commented 1 year ago

I can confirm that it also works on all tested systems with VERBOSE=. That's all on Linux with Bash as standard shell.

As I'm not a developer I'm not using Git so I kindly ask you to split the patch and create the PRs for us :)

Thanks, Simon

realsimix commented 1 year ago

As mentioned above, I'm not a developer and do not use Git at all. Please have a look at the patches below and apply as you like.

nx-libs-3.5.99.26-old_gcc.patch.txt nx-libs-3.5.99.26-no_include_gcstruct.patch.txt nx-libs-3.5.99.26-cosmetic_fixes.patch.txt nx-libs-3.5.99.26-imake_no_mflags.patch.txt nx-libs-3.5.99.26-separating_set_e.patch.txt

At this point let me ask again about a release which would allow more users to test latest code?

Thanks, Simon