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

Can't Build with Docker on MS Windows #96

Closed
cawa-93 opened this issue May 13, 2021 · 18 comments
Closed

Can't Build with Docker on MS Windows #96

cawa-93 opened this issue May 13, 2021 · 18 comments
Labels

Comments

@cawa-93
Copy link
Contributor

cawa-93 commented May 13, 2021

First of all, I note that I have no experience with docker. So I clearly followed instructions.

  1. I have installed Docker for Windows.
  2. Run docker build -t libass/javascriptsubtitlesoctopus .. It looks like success.
  3. But when executing the command "" I get an error:
    $ docker run -it --rm -v ${PWD}:/code libass/javascriptsubtitlesoctopus:latest
      make: *** No targets specified and no makefile found.  Stop.
    

And I do not have any idea what to do with it.

@TFSThiagoBR98
Copy link
Collaborator

Try docker run -it --rm -v "full project path:/code" libass/javascriptsubtitlesoctopus:latest

@cawa-93
Copy link
Contributor Author

cawa-93 commented May 13, 2021

@TFSThiagoBR98 Thanks. It really helped. However now there is another error :(

$ docker run -it --rm -v "C:/Users/kozac/Dev/libass-web:/code" libass/javascriptsubtitlesoctopus:latest
rm -rf build/lib/fribidi
mkdir -p build/lib
cp -r lib/fribidi build/lib/fribidi
true
cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh
/bin/sh: 1: ./autogen.sh: not found
make: *** [Makefile:19: build/lib/fribidi/configure] Error 127

@TFSThiagoBR98
Copy link
Collaborator

You forget to clone with --recurse-submodules
To fix it, run:

cd C:/Users/kozac/Dev/libass-web
git submodule update --init --recursive -f

@cawa-93
Copy link
Contributor Author

cawa-93 commented May 13, 2021

Before I used:

 git clone --recursive https://github.com/libass/JavascriptSubtitlesOctopus.git libass-web

As described in readme.

Now, as you say, i run

git submodule update --init --recursive -f
$ git submodule update --init --recursive -f
Submodule path 'lib/brotli': checked out '924b2b2b9dc54005edbcd85a1b872330948cdd9e'
Submodule path 'lib/brotli/research/esaxx': checked out 'ca7cb332011ec37a8436487f210f396b84bd8273'
Submodule path 'lib/brotli/research/libdivsufsort': checked out '5f60d6f026c30fb4ac296f696b3c8b0eb71bd428'
Submodule path 'lib/expat': checked out 'c0bfb97ddd8d3beb7912b877b6a4278148b2a0a4'
Submodule path 'lib/fontconfig': checked out '6def66164a36eed968aae872d76acfac3173d44a'
Submodule path 'lib/freetype': checked out '1fd3148713def5fe72ff6844a33e4fc896a80780'
Submodule path 'lib/fribidi': checked out 'f9e8e71a6fbf4a4619481284c9f484d10e559995'
Submodule path 'lib/harfbuzz': checked out '761695264b309693346dd027d38e6bc53056c3ab'
Submodule path 'lib/libass': checked out '0527f023f764976a6848b54af542c1141ae3f09e'

Not sure if it's needed, but I ran:

docker build -t libass/javascriptsubtitlesoctopus .
$ docker build -t libass/javascriptsubtitlesoctopus .
[+] Building 3.2s (7/7) FINISHED
=> [internal] load build definition from Dockerfile                                                               0.4s
=> => transferring dockerfile: 32B                                                                                0.0s
=> [internal] load .dockerignore                                                                                  0.6s
=> => transferring context: 2B                                                                                    0.0s
=> [internal] load metadata for docker.io/emscripten/emsdk:2.0.20                                                 1.7s
=> [1/3] FROM docker.io/emscripten/emsdk:2.0.20@sha256:052d71743ca6d4be41b87a3b2fdff9622e4ab7cdfb6d1c3205385ddfc  0.0s
=> CACHED [2/3] RUN apt-get update && apt-get install -y --no-install-recommends         build-essential          0.0s
=> CACHED [3/3] WORKDIR /code                                                                                     0.0s
=> exporting to image                                                                                             0.6s
=> => exporting layers                                                                                            0.0s
=> => writing image sha256:0270666ce8c2d147d00c73db5bc19cf5a907bd37036f79791c7178c16b2de605                       0.1s
=> => naming to docker.io/libass/javascriptsubtitlesoctopus                                                       0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

And then:

docker run -it --rm -v "C:/Users/kozac/Dev/libass-web:/code" libass/javascriptsubtitlesoctopus:latest

Which gave the same error

$ docker run -it --rm -v "C:/Users/kozac/Dev/libass-web:/code" libass/javascriptsubtitlesoctopus:latest
rm -rf build/lib/fribidi
mkdir -p build/lib
cp -r lib/fribidi build/lib/fribidi
true
cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh
/bin/sh: 1: ./autogen.sh: not found
make: *** [Makefile:19: build/lib/fribidi/configure] Error 127

@TheOneric
Copy link
Member

The missing autogen.sh is part of the fribidi repo.
My first guesses would be that either something went silently wrong during checkout or the old work-copy wasn't removed properly.
Please run make clean (outside of Docker, or temporarily edit the Dockerfile to CMD["make, "clean"] instead) then show the contents of build/lib/fribidi and lib/fribidi.
If the former doesn't exists and the latter contains autogen.sh, please try the Docker-build again by using the run-docker-build.sh-shell-script included in JSO's repo.

@cawa-93
Copy link
Contributor Author

cawa-93 commented May 15, 2021

@TheOneric Please correct me if I did something wrong.

  1. I cleaned Dockerfile and set in CMD ["make", "clean"]
  2. Runed docker build -t libass/javascriptsubtitlesoctopus .
    $ ls build/lib/fribidi
    appveyor.yml  bin/           COPYING        gen.tab/  lib/         meson.build        README     THANKS
    AUTHORS       ChangeLog.old  doc/           git.mk    m4/          meson_options.txt  README.md  TODO
    autogen.sh*   configure.ac   fribidi.pc.in  HISTORY   Makefile.am  NEWS               test/      USERS
    
    $ ls lib/fribidi
    appveyor.yml  autogen.sh*  ChangeLog.old  COPYING  fribidi.pc.in  git.mk   lib/  Makefile.am  meson_options.txt  README     test/   TODO
    AUTHORS       bin/         configure.ac   doc/     gen.tab/       HISTORY  m4/   meson.build  NEWS               README.md  THANKS  USERS
    
    It seems that autogen.sh is present in both directories.
  3. I restore original Dockerfile. And run
$ ./run-docker-build.sh
[+] Building 1.6s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                              0.0s
 => => transferring dockerfile: 512B                                                                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                                                 0.0s
 => => transferring context: 2B                                                                                                                                                   0.0s
 => [internal] load metadata for docker.io/emscripten/emsdk:2.0.20                                                                                                                1.4s
 => [1/3] FROM docker.io/emscripten/emsdk:2.0.20@sha256:052d71743ca6d4be41b87a3b2fdff9622e4ab7cdfb6d1c3205385ddfc238c08a                                                          0.0s
 => CACHED [2/3] RUN apt-get update && apt-get install -y --no-install-recommends         build-essential         cmake         git         ragel         patch         libtool   0.0s
 => CACHED [3/3] WORKDIR /code                                                                                                                                                    0.0s
 => exporting to image                                                                                                                                                            0.0s
 => => exporting layers                                                                                                                                                           0.0s
 => => writing image sha256:0270666ce8c2d147d00c73db5bc19cf5a907bd37036f79791c7178c16b2de605                                                                                      0.0s
 => => naming to docker.io/libass/javascriptsubtitlesoctopus                                                                                                                      0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
make: *** No targets specified and no makefile found.  Stop.

This is a problem I faced from the beginning. So I changed run-docker-build.sh and specify full path. After rerun:

$ ./run-docker-build.sh
[+] Building 0.8s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                              0.0s
 => => transferring dockerfile: 512B                                                                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                                                 0.0s
 => => transferring context: 2B                                                                                                                                                   0.0s
 => [internal] load metadata for docker.io/emscripten/emsdk:2.0.20                                                                                                                0.7s
 => [1/3] FROM docker.io/emscripten/emsdk:2.0.20@sha256:052d71743ca6d4be41b87a3b2fdff9622e4ab7cdfb6d1c3205385ddfc238c08a                                                          0.0s
 => CACHED [2/3] RUN apt-get update && apt-get install -y --no-install-recommends         build-essential         cmake         git         ragel         patch         libtool   0.0s
 => CACHED [3/3] WORKDIR /code                                                                                                                                                    0.0s
 => exporting to image                                                                                                                                                            0.0s
 => => exporting layers                                                                                                                                                           0.0s
 => => writing image sha256:0270666ce8c2d147d00c73db5bc19cf5a907bd37036f79791c7178c16b2de605                                                                                      0.0s
 => => naming to docker.io/libass/javascriptsubtitlesoctopus                                                                                                                      0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
rm -rf build/lib/fribidi
mkdir -p build/lib
cp -r lib/fribidi build/lib/fribidi
true
cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh
/bin/sh: 1: ./autogen.sh: not found
make: *** [Makefile:19: build/lib/fribidi/configure] Error 127

I also tried build in WSL 2 (Ubuntu). I cloned the repo again and run run-docker-build.sh. Building has really begun. However, it still ended with Error, the meaning of which I do not understand.

Full log
kozack@Toph:/mnt/c/Users/kozac/Dev/libass-wasm-ubuntu$ bash ./run-docker-build.sh
[+] Building 2.1s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                                           0.1s
 => => transferring dockerfile: 495B                                                                                           0.0s
 => [internal] load .dockerignore                                                                                              0.1s
 => => transferring context: 2B                                                                                                0.0s
 => [internal] load metadata for docker.io/emscripten/emsdk:2.0.20                                                             1.9s
 => [1/3] FROM docker.io/emscripten/emsdk:2.0.20@sha256:052d71743ca6d4be41b87a3b2fdff9622e4ab7cdfb6d1c3205385ddfc238c08a       0.0s
 => CACHED [2/3] RUN apt-get update && apt-get install -y --no-install-recommends         build-essential         cmake        0.0s
 => CACHED [3/3] WORKDIR /code                                                                                                 0.0s
 => exporting to image                                                                                                         0.0s
 => => exporting layers                                                                                                        0.0s
 => => writing image sha256:0270666ce8c2d147d00c73db5bc19cf5a907bd37036f79791c7178c16b2de605                                   0.0s
 => => naming to docker.io/libass/javascriptsubtitlesoctopus                                                                   0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
rm -rf build/lib/fribidi
mkdir -p build/lib
cp -r lib/fribidi build/lib/fribidi
true
cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh
checking for pkg-config... /usr/bin/pkg-config
checking for libtoolize... /usr/bin/libtoolize
checking for autoreconf... /usr/bin/autoreconf
running autoreconf --force --install --verbose
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:44: installing './ar-lib'
configure.ac:44: installing './compile'
configure.ac:48: installing './config.guess'
configure.ac:48: installing './config.sub'
configure.ac:41: installing './install-sh'
configure.ac:41: installing './missing'
Makefile.am: installing './INSTALL'
bin/Makefile.am: installing './depcomp'
lib/Headers.mk:25: warning: shell cat $(top_srcdir: non-POSIX variable name
lib/Headers.mk:25: (probably a GNU make extension)
doc/Makefile.am:16:   'lib/Headers.mk' included from here
doc/Makefile.am:21: warning: shell sed '$$d' $(top_srcdir: non-POSIX variable name
doc/Makefile.am:21: (probably a GNU make extension)
gen.tab/Makefile.am:28: warning: 'CFLAGS' is a user variable, you should not override it;
gen.tab/Makefile.am:28: use 'AM_CFLAGS' instead
gen.tab/Makefile.am:29: warning: 'LDFLAGS' is a user variable, you should not override it;
gen.tab/Makefile.am:29: use 'AM_LDFLAGS' instead
lib/Headers.mk:25: warning: shell cat $(top_srcdir: non-POSIX variable name
lib/Headers.mk:25: (probably a GNU make extension)
lib/Makefile.am:17:   'lib/Headers.mk' included from here
parallel-tests: installing './test-driver'
autoreconf: Leaving directory `.'
cd build/lib/fribidi && \
emconfigure ./configure \
        CFLAGS=" \
        -s USE_PTHREADS=0 \
        -O3 \
        -s NO_FILESYSTEM=1 \
        -s NO_EXIT_RUNTIME=1 \
        -DFRIBIDI_ENTRY=extern \
        -s MODULARIZE=1 \
        " \
        --prefix="/code/dist/libraries" \
        --host=x86-none-linux \
        --build=x86_64 \
        --enable-static \
        --disable-shared \
        --disable-dependency-tracking \
        --disable-debug \
&& \
emmake make distdir && \
cd lib && \
emmake make install-libLTLIBRARIES install-pkgincludeHEADERS install-nodist_pkgincludeHEADERS && \
cd .. && \
emmake make install-pkgconfigDATA
configure: ./configure "CFLAGS=         -s USE_PTHREADS=0       -O3     -s NO_FILESYSTEM=1      -s NO_EXIT_RUNTIME=1    -DFRIBIDI_ENTRY=extern      -s MODULARIZE=1         " --prefix=/code/dist/libraries --host=x86-none-linux --build=x86_64 --enable-static --disable-shared --disable-dependency-tracking --disable-debug
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for x86-none-linux-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for x86-none-linux-gcc... /emsdk/upstream/emscripten/emcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /emsdk/upstream/emscripten/emcc accepts -g... yes
checking for /emsdk/upstream/emscripten/emcc option to accept ISO C89... none needed
checking whether /emsdk/upstream/emscripten/emcc understands -c and -o together... yes
checking dependency style of /emsdk/upstream/emscripten/emcc... none
checking for x86-none-linux-ar... /emsdk/upstream/emscripten/emar
checking the archiver (/emsdk/upstream/emscripten/emar) interface... ar
checking build system type... x86_64-pc-none
checking host system type... x86-none-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by /emsdk/upstream/emscripten/emcc... /emsdk/upstream/emscripten/emcc
checking if the linker (/emsdk/upstream/emscripten/emcc) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /emsdk/upstream/bin/llvm-nm
checking the name lister (/emsdk/upstream/bin/llvm-nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-none file names to x86-none-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-none file names to toolchain format... func_convert_file_noop
checking for /emsdk/upstream/emscripten/emcc option to reload object files... -r
checking for x86-none-linux-objdump... no
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for x86-none-linux-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86-none-linux-ar... (cached) /emsdk/upstream/emscripten/emar
checking for archiver @FILE support... @
checking for x86-none-linux-strip... strip
checking for x86-none-linux-ranlib... /emsdk/upstream/emscripten/emranlib
checking command to parse /emsdk/upstream/bin/llvm-nm output from /emsdk/upstream/emscripten/emcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for x86-none-linux-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... /emsdk/upstream/emscripten/emcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /emsdk/upstream/emscripten/emcc supports -fno-rtti -fno-exceptions... yes
checking for /emsdk/upstream/emscripten/emcc option to produce PIC... -fPIC -DPIC
checking if /emsdk/upstream/emscripten/emcc PIC flag -fPIC -DPIC works... yes
checking if /emsdk/upstream/emscripten/emcc static flag -static works... yes
checking if /emsdk/upstream/emscripten/emcc supports -c -o file.o... yes
checking if /emsdk/upstream/emscripten/emcc supports -c -o file.o... (cached) yes
checking whether the /emsdk/upstream/emscripten/emcc linker (/emsdk/upstream/emscripten/emcc) supports shared libraries... emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 2.0.20-git (8ed0f4fee2abd04923c2fd2bf44835169ce2ac2e)
clang version 13.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 642df18f1437b1fffea2343fa471aebfff128c6e)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /emsdk/upstream/bin
yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking for x86-none-linux-gcc... (cached) /emsdk/upstream/emscripten/emcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether /emsdk/upstream/emscripten/emcc accepts -g... (cached) yes
checking for /emsdk/upstream/emscripten/emcc option to accept ISO C89... (cached) none needed
checking whether /emsdk/upstream/emscripten/emcc understands -c and -o together... (cached) yes
checking dependency style of /emsdk/upstream/emscripten/emcc... (cached) none
checking for x86-none-linux-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for native Win32... no
checking for some Win32 platform... no
checking for ANSI C header files... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking asm/page.h usability... no
checking asm/page.h presence... no
checking for asm/page.h... no
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking for an ANSI C-conforming const... yes
checking for preprocessor stringizing operator... yes
checking size of int... 4
checking size of short... 2
checking size of void *... 4
checking size of wchar_t... 4
checking for gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) none
checking how to run the C preprocessor... gcc -E
checking for memmove... yes
checking for memset... yes
checking for strdup... yes
checking return type of signal handlers... void
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating fribidi.pc
config.status: creating lib/fribidi-config.h
config.status: creating Makefile
config.status: creating gen.tab/Makefile
config.status: creating lib/Makefile
config.status: creating bin/Makefile
config.status: creating doc/Makefile
config.status: creating test/Makefile
config.status: creating test/unicode-conformance/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
make: make distdir
make[1]: Entering directory '/code/build/lib/fribidi'
make[1]: Warning: File 'Makefile' has modification time 0.3 s in the future
(cd lib && make  fribidi-unicode-version.h)
make[2]: Entering directory '/code/build/lib/fribidi/lib'
make[2]: Warning: File 'Makefile' has modification time 0.34 s in the future
make[3]: Entering directory '/code/build/lib/fribidi/gen.tab'
make[3]: Warning: File 'Makefile' has modification time 0.28 s in the future
  CC       gen-unicode-version.o
  CCLD     gen-unicode-version
  GEN      fribidi-unicode-version.h
make[3]: warning:  Clock skew detected.  Your build may be incomplete.
make[3]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[2]: warning:  Clock skew detected.  Your build may be incomplete.
make[2]: Leaving directory '/code/build/lib/fribidi/lib'
make  distdir-am
make[2]: Entering directory '/code/build/lib/fribidi'
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /code/build/lib/fribidi/missing autoheader)
rm -f stamp-h1
touch config.h.in
  GEN      ChangeLog
A git checkout and git-log is required to generate ChangeLog
if test -d "fribidi-1.0.9"; then find "fribidi-1.0.9" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "fribidi-1.0.9" || { sleep 5 && rm -rf "fribidi-1.0.9"; }; else :; fi
test -d "fribidi-1.0.9" || mkdir "fribidi-1.0.9"
 (cd gen.tab && make  top_distdir=../fribidi-1.0.9 distdir=../fribidi-1.0.9/gen.tab \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[3]: Entering directory '/code/build/lib/fribidi/gen.tab'
make  distdir-am
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[3]: Leaving directory '/code/build/lib/fribidi/gen.tab'
 (cd lib && make  top_distdir=../fribidi-1.0.9 distdir=../fribidi-1.0.9/lib \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[3]: Entering directory '/code/build/lib/fribidi/lib'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
  GEN      fribidi-unicode-version.h
  CC       gen-arabic-shaping-tab.o
In file included from /usr/include/stdio.h:867,
                 from gen-arabic-shaping-tab.c:32:
In function ‘printf’,
    inlined from ‘gen_arabic_shaping_tab’ at gen-arabic-shaping-tab.c:240:3,
    inlined from ‘main’ at gen-arabic-shaping-tab.c:301:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:107:10: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
  107 |   return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gen-arabic-shaping-tab.c: In function ‘main’:
gen-arabic-shaping-tab.c:241:49: note: format string is defined here
  241 |    FRIBIDI_VERSION ")\n" " * from the files %s, %s of Unicode version "
      |                                                 ^~
In file included from /usr/include/stdio.h:867,
                 from gen-arabic-shaping-tab.c:32:
In function ‘fprintf’,
    inlined from ‘die3’ at gen-arabic-shaping-tab.c:89:3,
    inlined from ‘main’ at gen-arabic-shaping-tab.c:288:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:100:10: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
  100 |   return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  101 |    __va_arg_pack ());
      |    ~~~~~~~~~~~~~~~~~
  CCLD     gen-arabic-shaping-tab
  GEN      arabic-shaping.tab.i
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
make[4]: Warning: File 'fribidi-unicode-version.h' has modification time 0.44 s in the future
  CC       gen_bidi_type_tab-gen-bidi-type-tab.o
  CC       gen_bidi_type_tab-packtab.o
  CCLD     gen-bidi-type-tab
  GEN      bidi-type.tab.i
make[4]: warning:  Clock skew detected.  Your build may be incomplete.
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
  CC       gen_joining_type_tab-gen-joining-type-tab.o
  CC       gen_joining_type_tab-packtab.o
  CCLD     gen-joining-type-tab
  GEN      joining-type.tab.i
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
  CC       gen_mirroring_tab-gen-mirroring-tab.o
  CC       gen_mirroring_tab-packtab.o
  CCLD     gen-mirroring-tab
  GEN      mirroring.tab.i
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
  CC       gen_brackets_tab-gen-brackets-tab.o
  CC       gen_brackets_tab-packtab.o
  CCLD     gen-brackets-tab
  GEN      brackets.tab.i
Reading `unidata/BidiBrackets.txt'
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make[4]: Entering directory '/code/build/lib/fribidi/gen.tab'
  CC       gen_brackets_type_tab-gen-brackets-type-tab.o
  CC       gen_brackets_type_tab-packtab.o
  CCLD     gen-brackets-type-tab
  GEN      brackets-type.tab.i
make[4]: Leaving directory '/code/build/lib/fribidi/gen.tab'
make  distdir-am
make[4]: Entering directory '/code/build/lib/fribidi/lib'
make[4]: Warning: File 'brackets.tab.i' has modification time 0.25 s in the future
make[4]: warning:  Clock skew detected.  Your build may be incomplete.
make[4]: Leaving directory '/code/build/lib/fribidi/lib'
make[3]: Leaving directory '/code/build/lib/fribidi/lib'
 (cd bin && make  top_distdir=../fribidi-1.0.9 distdir=../fribidi-1.0.9/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.9 distdir=../fribidi-1.0.9/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.9 distdir=../fribidi-1.0.9/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_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/bash: line 2: ../bin/fribidi: No such file or directory
make[4]: *** [Makefile:1042: test_CapRTL_explicit.input] Error 1
make[4]: Leaving directory '/code/build/lib/fribidi/test'
make[3]: *** [Makefile:857: distdir] Error 2
make[3]: Leaving directory '/code/build/lib/fribidi/test'
make[2]: *** [Makefile:607: distdir-am] Error 1
make[2]: Leaving directory '/code/build/lib/fribidi'
make[1]: *** [Makefile:600: distdir] Error 2
make[1]: Leaving directory '/code/build/lib/fribidi'
emmake: error: 'make distdir' failed (2)
make: *** [Makefile:22: /code/dist/libraries/lib/libfribidi.a] Error 1

Looks like I just have to wait for the new version published to npm. 😢

@TheOneric
Copy link
Member

Runed docker build -t libass/javascriptsubtitlesoctopus .

You also need to run the built container for make clean to be executed.

It seems that autogen.sh is present in both directories.

Why is there an asterisk after autogen.sh?

Since it partially works with WSL, I suspect you either at somepoint renamed autogen.sh and didn't run make clean properly, or somethings off with your shell (can't help with that).

However, the error you encountered in WSL, is the same our most recent GHA job ran into. However, none of the recently merged commits should affect anything in the build; it were only cosmetic commits and README updates. Also the Docker-build works for me locally.
I'm at a loss as to why this doesn't work in GHA and for you. (The whole point of the Docker-build is to offer the same build env everywhere, eliminiating differences between machines, isn't it?)

@Yay295
Copy link

Yay295 commented May 16, 2021

Why is there an asterisk after autogen.sh?

That just means the file is executable.

@TheOneric
Copy link
Member

Looking at this again, the last error in WSL appears to be the same as described in #108. I'm afraid I can't help with the errors with Docker in Windows, but they seem very odd and since the supposedly non-existing files are reported to do in fact exists, I'm inclined to guess it's an issue with Docker-on-Windows or the way its configured rather than the build setup.
If there's any new info on this suggesting it is in fact our issue it can be reopened.

@TheOneric TheOneric changed the title Can't Build with Docker Can't Build with Docker on MS Windows Oct 17, 2021
@lewisakura
Copy link

TL;DR disable core.autocrlf in Git temporarily and it should work fine.

Came across this issue today. The error from sh is a bit misleading. It can read and load the file, but if you're on Windows (and cloned on the Windows side of things), your line endings are most likely CRLF. sh is trying to read the interpreter as /bin/sh<CR> which doesn't exist, hence why the 'not found' error flags up.

I successfully built this on Windows by (temporarily) disabling autocrlf in Git (git config --global core.autocrlf false), recloning the repository from scratch as normal, then running wsl ./run-docker-build.sh. As long as your Docker integration is set up correctly, the build should run fine.

@Yay295
Copy link

Yay295 commented Jun 16, 2022

That could be managed with a .gitattributes file.

@lewisakura
Copy link

Definitely.

@TheOneric
Copy link
Member

.gitattributes does not work, see PR.

Can someone running Windows check if the below works? I want to add a note about this to the readme, but would like to avoid the need to change global git settings.

git clone https://github.com/libass/JavascriptSubtitlesOctopus.git
cd JavascriptSubtitlesOctopus
git config core.autocrlf false
git add --renormalize .
git submodule update --init --recursive --force

@lewisakura
Copy link

I have tested and it does not work. I believe it's because of the same reasons why .gitattributes doesn't work -- it won't carry on to submodules. It might be best to just tell people to switch it during their clone, and then reverting the option back.

The only other (realistic) alternative is to put the submodules cloning into the build process itself which has to run under Linux anyway. Instead of cloning on the (Windows) host first, it'd be cloned when the buildscripts are ran (so either in a Linux Docker container or a Linux host).

@TheOneric
Copy link
Member

TheOneric commented Jun 19, 2022

Am I inferring correctly that the renormalisation worked and all files in the root repo were using LF afterwards?

In that case, can you try:

git clone --recursive https://github.com/libass/JavascriptSubtitlesOctopus.git
cd JavascriptSubtitlesOctopus
git config core.autocrlf false
git add --renormalize .
git submodule foreach --recursive 'git config core.autocrlf false && git add --renormalize .'

EDIT: Changed the last few commands, previous version was faulty.

@eli-schwartz
Copy link

Came across this issue today. The error from sh is a bit misleading. It can read and load the file, but if you're on Windows (and cloned on the Windows side of things), your line endings are most likely CRLF. sh is trying to read the interpreter as /bin/sh<CR> which doesn't exist, hence why the 'not found' error flags up.

Incidentally, bash has a vastly superior error message here:

[eschwartz@localhost /tmp]$ ./badscript.sh
bash: ./badscript.sh: /bin/sh^M: bad interpreter: No such file or directory
[eschwartz@localhost /tmp]$ sh
$ ./badscript.sh
sh: 1: ./badscript.sh: not found

Benefits of launching with a proper shell. :D

@huanghaiyang
Copy link

Not working on Windows, always output:

What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview
make: *** No targets specified and no makefile found. Stop.

@huanghaiyang
Copy link

huanghaiyang commented Jun 2, 2024

the final solution :

  1. edit run-docker-build.sh
  #! /bin/sh
  set -e
  cd "$(dirname "$0")"
  
  . ./run-common.sh
  
  if [ "$FAST" -eq 0 ] ; then
      docker build -t "$IMAGE" .
  fi
  if [ "$#" -eq 0 ] ; then
      # docker run --rm --env LC_ALL=C.UTF-8 -v "${PWD}":/code --name "$CONTAINER" "$IMAGE":latest
      docker run --rm --env LC_ALL=C.UTF-8 -v "D:/work/github/JavascriptSubtitlesOctopus":/code --name "$CONTAINER" "$IMAGE":latest
  else
      docker run --rm --env LC_ALL=C.UTF-8 -v "${PWD}":/code --name "$CONTAINER" "$IMAGE":latest "$@"
  fi
  1. run command

git submodule update --init --recursive -f

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

7 participants