Page 1 of 1

Problems cross compiling VLC using Docker for Windows

Posted: 08 Apr 2019 15:57
by mezzode
I'm having issues cross compiling VLC following https://forum.videolan.org/viewtopic.php?f=14&t=146175

I keep running into this:

Code: Select all

[100%] Built target aom_av1_encoder_sse2 make[2]: Leaving directory '/vlc/contrib/contrib-win64/aom/aom_build' make[1]: Leaving directory '/vlc/contrib/contrib-win64/aom/aom_build' cd aom/aom_build && ../../../../contrib/src/pkg-static.sh aom.pc mv: cannot move 'aom.pc.tmp' to 'aom.pc': No such file or directory ../../contrib/src/aom/rules.mak:94: recipe for target '.aom' failed make: *** [.aom] Error 1

Re: Problems cross compiling VLC using Docker for Windows

Posted: 08 Apr 2019 16:00
by unidan
Hi, you should use the extras/package/win32/build.sh script directly ;)
What are the steps that you did ?

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 04:22
by mezzode
I just followed the most recent instructions at the post:
6 sudo docker run -v ~/win64:/win64 -i -t registry.videolan.org:5000/vlc-debian-win64 /bin/bash (...you will now be running the build environment from a docker container as root)
7 apt-get update (updates the docker repositories)
8 apt-get install python (installs python on the docker image. Needed to compile Qt stuff later)
9 cd win64
10 git clone https://git.videolan.org/git/vlc
11 cd vlc
12 ./extras/package/win32/build.sh -a x86_64 -i r

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 09:41
by unidan
First I would say that you should clone vlc before going into the docker container, otherwise you have to start from scratch each time it fails.

You can check this to understand how to build your full environment: https://gitlab.com/garfvl/local-vlc-compile-env

Then, registry.videolan.org:5000/vlc-debian-win64 defaults to registry.videolan.org:5000/vlc-debian-win64:latest, which is not the latest docker image. You can see on the link above how to get the latest one.

Can you try again with these two points fixed ?

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 11:39
by mezzode
I'm using a volume mount so the repo persists anyway.

I got the "real" latest image using the script from the repo:

Code: Select all

apt update && apt install curl -y && curl -X GET "https://registry.videolan.org/v2/vlc-debian-win64/tags/list" | sed 's;";;g' | grep -o 'tags:\[[^\]*]' | sed 's;tags:\[\([^\]*\)];\1;' | tr ',' '\n' | grep -v "latest" | sort | tail -n 1
Which told me to use the 20190408183412 tag, which unfortunately still fails.

Code: Select all

docker run -v D:\projects\vlc2:/vlc -i -t registry.videolan.org:5000/vlc-debian-win64:20190408183412 /bin/bash
In the container:

Code: Select all

./extras/package/win32/build.sh -a x86_64 -i n
Fails at the same place.

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 11:45
by unidan
If you don't find why it fails, you can remove aom from the build in the ../bootstrap for the contribs (pass --disable-aom inside build.sh).

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 13:15
by mezzode
It's getting past the original error now but failing down the line.

Code: Select all

mv: cannot move 'source/x265.pc.in.tmp' to 'source/x265.pc.in': No such file or directory ../../contrib/src/x265/rules.mak:28: recipe for target 'x265' failed make: *** [x265] Error 1 make: Target 'all' not remade because of errors. + make -j1 rm -f -R aribb24 && tar xvzfo ../../contrib/tarballs/aribb24-1.0.3.tar.gz aribb24-1.0.3/ aribb24-1.0.3/.gitignore aribb24-1.0.3/COPYING aribb24-1.0.3/Makefile.am aribb24-1.0.3/README.md aribb24-1.0.3/bootstrap aribb24-1.0.3/configure.ac aribb24-1.0.3/src/ aribb24-1.0.3/src/aribb24.c aribb24-1.0.3/src/aribb24.pc.in aribb24-1.0.3/src/aribb24/ aribb24-1.0.3/src/aribb24/aribb24.h aribb24-1.0.3/src/aribb24/bits.h aribb24-1.0.3/src/aribb24/decoder.h aribb24-1.0.3/src/aribb24/parser.h aribb24-1.0.3/src/aribb24_private.h aribb24-1.0.3/src/convtable.h aribb24-1.0.3/src/decoder.c aribb24-1.0.3/src/decoder_macro.h aribb24-1.0.3/src/decoder_private.h aribb24-1.0.3/src/drcs.c aribb24-1.0.3/src/drcs.h aribb24-1.0.3/src/md5.c aribb24-1.0.3/src/md5.h aribb24-1.0.3/src/parser.c aribb24-1.0.3/src/parser_private.h (cd aribb24-1.0.3 && patch -fp1) < ../../contrib/src/aribb24/libm.patch patching file configure.ac patching file src/aribb24.pc.in (cd aribb24-1.0.3 && ../../../contrib/src/pkg-static.sh "src/aribb24.pc.in") mv: cannot move 'src/aribb24.pc.in.tmp' to 'src/aribb24.pc.in': No such file or directory ../../contrib/src/aribb24/rules.mak:21: recipe for target 'aribb24' failed make: *** [aribb24] Error 1
I tried using prebuilt contrib (for 4.X) as recommended by https://gitlab.com/garfvl/local-vlc-compile-env but that didn't fix it.
Tip 2: use prebuilt contrib
```bash
$ mkdir -p contrib/contrib-win64 && cd contrib/contrib-win64
$ export URLPREFIX="http://nightlies.videolan.org/build/win ... 4-mingw32-" # for vlc 3.X
$ export URLPREFIX="http://nightlies.videolan.org/build/win ... 4-mingw32-" # for vlc 4.X
$ wget ${URLPREFIX}`date +%Y%m%d`.tar.bz2 -O vlc-contrib-x86_64-w64-mingw32-latest.tar.bz2 || wget ${URLPREFIX}`date --date=yesterday +%Y%m%d`.tar.bz2 -O vlc-contrib-x86_64-w64-mingw32-latest.tar.bz2
$ cd ../..
$ compile-vlc-win64 extras/package/win32/build.sh -p -a x86_64
```

Re: Problems cross compiling VLC using Docker for Windows

Posted: 09 Apr 2019 13:21
by unidan
If you want to use prebuilt, first remove the contrib/contrib-win64 and contrib/x86_64-.... directories.
But something looks weird in your configuration. do you compile from vlc's root directory ?

Did you clean up everything before doing so ?

Re: Problems cross compiling VLC using Docker for Windows

Posted: 10 Apr 2019 13:33
by mezzode
I am compiling from the root directory. Wasn't sure what I needed to be cleaning up between compiles, I ended up just re-cloning the repo and using prebuilt and it didnt error out! Not sure what to do next though, I can't run win64/vlc.exe, do I need to package it like https://wiki.videolan.org/Win32Compile#Packaging_VLC or something else?

Re: Problems cross compiling VLC using Docker for Windows

Posted: 10 Apr 2019 14:37
by unidan
After used build.sh, you can do

Code: Select all

make package-win-common
to have a directory that you can share.