Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Occasional build failures during FriBidi build #108

Closed
TheOneric opened this issue Jul 23, 2021 · 7 comments
Closed

Occasional build failures during FriBidi build #108

TheOneric opened this issue Jul 23, 2021 · 7 comments
Labels

Comments

@TheOneric
Copy link
Member

I never experienced this locally, even when using Docker and the very same Dockerfile, but the GHA-CI jobs keep failing during the FriBidi build from time to time. Rerunning (if needed multiple times) resolves this. See eg this for an example where the build of the very same commit both failed and succeeded.
I'm not sure why that's happening; it shouldn't be due to the exec-order of different Make-jobs, since the Makefile is only invoked in serial mode (because parallel mode is currently completely broken).

@TheOneric TheOneric changed the title Seemingly random build failures during FriBidi build Occasional build failures during FriBidi build Jul 23, 2021
@nopol10
Copy link

nopol10 commented Oct 30, 2021

I'm getting this on Mac with and without Docker but rerunning it does not fix the problem. Just to confirm, is this the error mentioned in this issue?

make: make distdir
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
  GEN      ChangeLog
if test -d "fribidi-1.0.10"; then find "fribidi-1.0.10" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "fribidi-1.0.10" || { sleep 5 && rm -rf "fribidi-1.0.10"; }; else :; fi
test -d "fribidi-1.0.10" || mkdir "fribidi-1.0.10"
 (cd gen.tab && /Applications/Xcode.app/Contents/Developer/usr/bin/make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/gen.tab \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
 (cd lib && /Applications/Xcode.app/Contents/Developer/usr/bin/make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/lib \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
 (cd bin && /Applications/Xcode.app/Contents/Developer/usr/bin/make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/bin \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
 (cd doc && /Applications/Xcode.app/Contents/Developer/usr/bin/make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/doc \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
 (cd test && /Applications/Xcode.app/Contents/Developer/usr/bin/make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/test \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
testcase="test_CapRTL_explicit.input" && \
	charset="`echo "test_CapRTL_explicit.input" | sed 's/_[^_]*$//;s/.*_//'`" && \
	../bin/fribidi --test --charset "$charset" "test_CapRTL_explicit.reference" > "test_CapRTL_explicit.input" \
	|| (rm -f "test_CapRTL_explicit.input"; false)
/bin/sh: ../bin/fribidi: No such file or directory
make[4]: *** [test_CapRTL_explicit.input] Error 1
make[3]: *** [distdir] Error 2
make[2]: *** [distdir-am] Error 1
make[1]: *** [distdir] Error 2
emmake: error: 'make distdir' failed (returned 2)
make: *** [/Users/nopol/JavascriptSubtitlesOctopus/dist/libraries/lib/libfribidi.a] Error 1

@TheOneric
Copy link
Member Author

TheOneric commented Oct 30, 2021

Oh, the linked logs already expired. Copying the full log of another instance here for future reference:

FriBiDi build failure
  (cd bin && make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/bin \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[3]: Entering directory '/code/build/lib/fribidi/bin'
make  distdir-am
make[4]: Entering directory '/code/build/lib/fribidi/bin'
make[4]: Leaving directory '/code/build/lib/fribidi/bin'
make[3]: Leaving directory '/code/build/lib/fribidi/bin'
 (cd doc && make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/doc \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[3]: Entering directory '/code/build/lib/fribidi/doc'
make  distdir-am
make[4]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[5]: Entering directory '/code/build/lib/fribidi/doc'
Running c2man
../missing: 81: c2man: not found
WARNING: 'c2man' is missing on your system.
         You might have modified some files without having the proper
         tools for further handling them.  Check the 'README' file, it
         often tells you about the needed prerequisites for installing
         this package.  You may also peek at any GNU archive site, in
         case some other package contains this missing 'c2man' program.
make[5]: Leaving directory '/code/build/lib/fribidi/doc'
make[4]: Leaving directory '/code/build/lib/fribidi/doc'
make[3]: Leaving directory '/code/build/lib/fribidi/doc'
 (cd test && make  top_distdir=../fribidi-1.0.10 distdir=../fribidi-1.0.10/test \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[3]: Entering directory '/code/build/lib/fribidi/test'
make  distdir-am
make[4]: Entering directory '/code/build/lib/fribidi/test'
testcase="test_ISO8859-8_hebrew.input" && \
charset="`echo "test_ISO8859-8_hebrew.input" | sed 's/_[^_]*$//;s/.*_//'`" && \
../bin/fribidi --test --charset "$charset" "test_ISO8859-8_hebrew.reference" > "test_ISO8859-8_hebrew.input" \
|| (rm -f "test_ISO8859-8_hebrew.input"; false)
/bin/bash: line 2: ../bin/fribidi: No such file or directory
make[4]: *** [Makefile:1043: test_ISO8859-8_hebrew.input] Error 1
make[4]: Leaving directory '/code/build/lib/fribidi/test'
make[3]: *** [Makefile:858: distdir] Error 2
make[2]: *** [Makefile:608: distdir-am] Error 1
make[1]: *** [Makefile:601: distdir] Error 2
make[3]: Leaving directory '/code/build/lib/fribidi/test'
make[2]: Leaving directory '/code/build/lib/fribidi'
make[1]: Leaving directory '/code/build/lib/fribidi'
emmake: error: 'make distdir' failed (2)

And yes, your failure looks similar to the ones we occasionaly get on GHA.
I'm still not sure why this happens and why only sometimes (eventhough we run everything fully sequentially), but since you can reliably reproduce this we now have a chance to at least test other approaches.

@nopol10: Can you try if it builds for you with the following change? This seems to give me the same result, but is simpler (hopefully making it less fragile). If that works, to be extra sure, can you revert the patch again and verify that it once again fails? Before every attempt run make clean (inside Docker if needed) to get the same starting conditions.

diff --git a/Makefile b/Makefile
index a7fa0c7..aedbae7 100644
--- a/Makefile
+++ b/Makefile
@@ -37,10 +37,7 @@ $(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure
                --disable-dependency-tracking \
                --disable-debug \
        && \
-       emmake make distdir && \
-       cd lib && \
-       emmake make install-libLTLIBRARIES install-pkgincludeHEADERS install-nodist_pkgincludeHEADERS && \
-       cd .. && \
+       emmake make -C lib/ install && \
        emmake make install-pkgconfigDATA
 
 build/lib/expat/configured: lib/expat

@nopol10
Copy link

nopol10 commented Oct 31, 2021

Docker

After the fix: builds completely fine and generates the outputs. 🎉
After reverting the fix (and make clean): the error reported above happens consistently.

So looks like this works for Docker.

Mac (no Docker)

After the fix: The build progresses much further but I now get this error:

make: make distdir install-libLTLIBRARIES
  GEN      fcalias.h
  GEN      fcftalias.h
cd ../fc-case && /Applications/Xcode.app/Contents/Developer/usr/bin/make  fccase.h
  GEN      fccase.h
cd ../fc-lang && /Applications/Xcode.app/Contents/Developer/usr/bin/make  fclang.h
  GEN      fclang.h
  GEN      stamp-fcstdint
config.status: executing src/fcstdint.h commands
config.status: creating src/fcstdint.h : _FONTCONFIG_SRC_FCSTDINT_H
config.status: src/fcstdint.h is unchanged
  GEN      stamp-fcobjshash.gperf
clang-14: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated [-Wdeprecated]
  GEN      stamp-fcobjshash.gperf
clang-14: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated [-Wdeprecated]
  GEN      fcobjshash.h
/Applications/Xcode.app/Contents/Developer/usr/bin/make  distdir-am
cp: /Makefile.am: Read-only file system
make[2]: *** [distdir-am] Error 1
make[1]: *** [distdir] Error 2
emmake: error: 'make distdir install-libLTLIBRARIES' failed (returned 2)
make: *** [/Users/nopol/JavascriptSubtitlesOctopus/dist/libraries/lib/libfontconfig.a] Error 1

After reverting the fix (and make clean): The error reported in my previous comment doesn't happen now. Instead, I get the same error that I get if the fix is applied. 🤔

@TheOneric
Copy link
Member Author

@nopol10, can you try this change?:

diff --git a/Makefile b/Makefile
index a7fa0c7..553633f 100644
--- a/Makefile
+++ b/Makefile
@@ -37,10 +37,7 @@ $(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure
                --disable-dependency-tracking \
                --disable-debug \
        && \
-       emmake make distdir && \
-       cd lib && \
-       emmake make install-libLTLIBRARIES install-pkgincludeHEADERS install-nodist_pkgincludeHEADERS && \
-       cd .. && \
+       emmake make -C lib/ install && \
        emmake make install-pkgconfigDATA
 
 build/lib/expat/configured: lib/expat
@@ -231,11 +228,8 @@ $(DIST_DIR)/lib/libfontconfig.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/l
                --disable-docs \
                --with-default-fonts=/fonts \
        && \
-       cd src && \
-       emmake make distdir install-libLTLIBRARIES && \
-       cd ../fontconfig && \
-       emmake make distdir install-fontconfigincludeHEADERS && \
-       cd ../ && \
+       emmake make -C src/ install && \
+       emmake make -C fontconfig/ install && \
        emmake make install-pkgconfigDATA
 
 # libass --

Also, @cawa-93 does building in MS Windows WSL with DOcker work for you, when you apply the above diff?

@nopol10
Copy link

nopol10 commented Nov 1, 2021

On Mac, I get the following error now:

Concatenate extracted license info...
mv dist/license/all dist/license/all.tmp
build/license_lint.awk dist/license/all.tmp build/license_fullnotice
Superfluous full text for 'FTL'!
Superfluous full text for 'MIT~old'!
Superfluous full text for 'NTP'!
Superfluous full text for 'Zlib'!
Superfluous full text for 'BSL-1'!
Superfluous full text for 'LGPL-2.1'!
make: *** [dist/license/all] Error 1

No issues after the change on Docker on Mac.

Also want to add that previously I had issues building on WSL with Docker. After applying the emmake make -C lib/ install && \ change, it now runs and generates the output fine.

@TheOneric
Copy link
Member Author

Great, thanks for your help in testing this!
It seems the patch is a clear improvement, so I'll push it to master shortly. I'm not sure though if this completely fixed it, so let's leave this issue open for a while and see if our CI-builds fails again.

On Mac, I get the following error now:

You need to install licensecheck from your regular package manager if available or from CPAN. It wasn't listed in the README yet, will add it there.

TheOneric added a commit that referenced this issue Nov 1, 2021
We do not create dist-tarballs, and calling it first sometimes causes
build failures: #108
Also simplify the multiple install-* targets.
@TheOneric
Copy link
Member Author

The CI builds didn't fail like this anymore, so I'm assuming this was indeed fixed. Thanks for your help debugging this nopol10!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants