Attempt prebuilding for ARM/v6

This commit is contained in:
FriwiDev 2021-11-23 22:55:37 +01:00
parent 672c81ad28
commit b07f47aeb4
5 changed files with 80 additions and 1 deletions

View File

@ -13,6 +13,8 @@ ARG REF
WORKDIR /builder WORKDIR /builder
#Copy existing sources, if any #Copy existing sources, if any
COPY jcef /jcef COPY jcef /jcef
#Copy prebuild classes, if any
COPY out/linux* /prebuild
#Copy and launch run script #Copy and launch run script
COPY scripts/run_linux.sh . COPY scripts/run_linux.sh .

View File

@ -0,0 +1,29 @@
#This file is used to build java classes for ARMv6 distributions before actually running on ARMv6
#This is needed as compilation fails on ARMv6 for some yet unknown reasons (libraries do not get detected there)
FROM friwidev/jcefdocker:linux-latest AS stage
#Declare build type argument (Release or Debug)
ARG BUILD_TYPE
#Declare architecture argument (arm64, 386 or amd64)
ARG TARGETARCH
#Declare git args
ARG REPO
ARG REF
WORKDIR /builder
#Copy existing sources, if any
COPY jcef /jcef
#Copy and launch run script
COPY scripts/run_linux_prebuild.sh .
RUN chmod +x run_linux_prebuild.sh
RUN ./run_linux_prebuild.sh
#Export built files
FROM scratch AS export-stage
COPY --from=stage /jcef/out/linux32 linux32

View File

@ -14,7 +14,15 @@ fi
#Execute buildx with linux dockerfile and output to current directory #Execute buildx with linux dockerfile and output to current directory
if [ $# -eq 2 ] if [ $# -eq 2 ]
then then
if [ $1 == "arm/v6" ]
then
docker buildx build --platform=linux/386 --build-arg TARGETARCH=386 --build-arg BUILD_TYPE=$2 --build-arg REPO=https://bitbucket.org/chromiumembedded/java-cef.git --build-arg REF=master --file DockerfileLinuxARMPrebuild --output out .
fi
docker buildx build --platform=linux/$1 --build-arg TARGETARCH=$1 --build-arg BUILD_TYPE=$2 --build-arg REPO=https://bitbucket.org/chromiumembedded/java-cef.git --build-arg REF=master --file DockerfileLinux --output out . docker buildx build --platform=linux/$1 --build-arg TARGETARCH=$1 --build-arg BUILD_TYPE=$2 --build-arg REPO=https://bitbucket.org/chromiumembedded/java-cef.git --build-arg REF=master --file DockerfileLinux --output out .
else else
if [ $1 == "arm/v6" ]
then
docker buildx build --platform=linux/386 --build-arg TARGETARCH=386 --build-arg BUILD_TYPE=$2 --build-arg REPO=$3 --build-arg REF=$4 --file DockerfileLinuxARMPrebuild --output out .
fi
docker buildx build --platform=linux/$1 --build-arg TARGETARCH=$1 --build-arg BUILD_TYPE=$2 --build-arg REPO=$3 --build-arg REF=$4 --file DockerfileLinux --output out . docker buildx build --platform=linux/$1 --build-arg TARGETARCH=$1 --build-arg BUILD_TYPE=$2 --build-arg REPO=$3 --build-arg REF=$4 --file DockerfileLinux --output out .
fi fi

View File

@ -49,7 +49,8 @@ if [ ${TARGETARCH} == 'amd64' ] || [ ${TARGETARCH} == 'arm64' ]; then
elif [ ${TARGETARCH} == '386' ]; then elif [ ${TARGETARCH} == '386' ]; then
./compile.sh linux32 ./compile.sh linux32
else else
echo "Can not compile java classes under arm/v6 currently. WIP" echo "Can not compile java classes under arm/v6 currently. So we copy from prebuild directory."
cp -r /prebuild/linux32 /jcef/out
fi fi
#Generate distribution #Generate distribution

View File

@ -0,0 +1,39 @@
#!/bin/bash
# This file prebuilds the java classes for arm/v6 under another architecture, as compilation of those fails
# on arm/v6. They can be used on the platform nontheless.
# Determine architecture
echo "Prebuilding java classes with $TARGETARCH"
# Print some debug info
echo "-------------------------------------"
echo "JAVA_HOME: $JAVA_HOME"
echo "PATH: $PATH"
java -version
echo "-------------------------------------"
# Fetch sources
if [ ! -f "/jcef/README.md" ]; then
echo "Did not find existing files to build - cloning..."
rm -rf /jcef
git clone ${REPO} /jcef
cd /jcef
git checkout ${REF}
#Temporary CMakeLists patching - beautify in the future
rm CMakeLists.txt
curl -o CMakeLists.txt https://raw.githubusercontent.com/jcefmaven/jcefbuild/master/CMakeLists.txt
else
echo "Found existing files to build"
cd /jcef
fi
# Create and enter the `jcef_build` directory.
# The `jcef_build` directory name is required by other JCEF tooling
# and should not be changed.
mkdir jcef_build && cd jcef_build
#Compile JCEF java classes
cd ../tools
chmod +x compile.sh
./compile.sh linux32