Add experimental Raspbian aarch64 build
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -13,3 +13,6 @@
|
||||
[submodule "FFmpeg-rpi"]
|
||||
path = FFmpeg-rpi
|
||||
url = https://github.com/cgutman/FFmpeg.git
|
||||
[submodule "rpi-userland"]
|
||||
path = rpi-userland
|
||||
url = https://github.com/cgutman/userland.git
|
||||
|
||||
26
Dockerfile.rpi.buster64
Normal file
26
Dockerfile.rpi.buster64
Normal file
@@ -0,0 +1,26 @@
|
||||
FROM arm64v8/debian:buster
|
||||
|
||||
ENV TARGET=rpi64
|
||||
|
||||
COPY scripts/install-base-deps.sh /opt/scripts/
|
||||
RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \
|
||||
apt-get install -y --no-install-recommends gnupg && \
|
||||
echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list && \
|
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends linux-libc-dev && \
|
||||
apt-get clean -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY rpi-userland /opt/rpi-userland
|
||||
COPY FFmpeg-rpi /opt/FFmpeg
|
||||
COPY SDL2 /opt/SDL2
|
||||
COPY SDL_ttf /opt/SDL_ttf
|
||||
|
||||
COPY scripts/build-deps.sh /opt/scripts/
|
||||
RUN /bin/bash -c /opt/scripts/build-deps.sh
|
||||
|
||||
COPY scripts/build-package.sh /opt/scripts/
|
||||
|
||||
VOLUME "/out"
|
||||
ENTRYPOINT [ "/bin/bash", "-c", "/opt/scripts/build-package.sh" ]
|
||||
@@ -8,6 +8,8 @@ environment:
|
||||
BUILD_SCRIPT: ./build-amd64.sh
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004
|
||||
BUILD_SCRIPT: ./build-rpi.sh
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004
|
||||
BUILD_SCRIPT: ./build-rpi64.sh
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004
|
||||
BUILD_SCRIPT: ./build-l4t.sh
|
||||
|
||||
|
||||
24
build-rpi64.sh
Executable file
24
build-rpi64.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
TARGET_NAME="rpi-buster64"
|
||||
DOCKERFILE="Dockerfile.rpi.buster64"
|
||||
|
||||
TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16`
|
||||
TAG_NAME="${TARGET_NAME}_${TAG_UNIQUE_ID}"
|
||||
OUT_DIR="out_$TARGET_NAME"
|
||||
|
||||
docker pull cgutman/moonlight-packaging:$TAG_NAME
|
||||
PULL_EXIT_CODE=$?
|
||||
|
||||
rm -rf $OUT_DIR
|
||||
|
||||
set -e
|
||||
mkdir $OUT_DIR
|
||||
|
||||
if [ $PULL_EXIT_CODE -eq 0 ]; then
|
||||
echo Using pre-built Docker image - cgutman/moonlight-packaging:$TAG_NAME
|
||||
else
|
||||
echo Pre-built image not available - building cgutman/moonlight-packaging:$TAG_NAME
|
||||
docker build -f $DOCKERFILE -t cgutman/moonlight-packaging:$TAG_NAME .
|
||||
echo Built Docker image - cgutman/moonlight-packaging:$TAG_NAME
|
||||
fi
|
||||
|
||||
docker run --rm --mount type=bind,source="$(pwd)"/$OUT_DIR,target=/out --mount type=bind,source="$(pwd)"/debian,target=/opt/debian -e COMMIT="$1" cgutman/moonlight-packaging:$TAG_NAME
|
||||
@@ -14,11 +14,14 @@ set -e
|
||||
# Build the packages
|
||||
./build-l4t.sh
|
||||
./build-rpi.sh
|
||||
./build-rpi64.sh
|
||||
|
||||
# Push the moonlight-qt packages to Cloudsmith repos
|
||||
cloudsmith push deb moonlight-game-streaming/moonlight-l4t/ubuntu/bionic out_l4t-bionic/moonlight-qt_*.deb
|
||||
cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster/moonlight-qt_*.deb
|
||||
#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster64/moonlight-qt_*.deb
|
||||
|
||||
# Push the moonlight-qt-dbgsym packages to Cloudsmith repos
|
||||
cloudsmith push deb moonlight-game-streaming/moonlight-l4t/ubuntu/bionic out_l4t-bionic/moonlight-qt-dbgsym_*.ddeb
|
||||
cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster/moonlight-qt-dbgsym_*.deb
|
||||
#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster64/moonlight-qt-dbgsym_*.deb
|
||||
|
||||
@@ -3,9 +3,11 @@ set -e
|
||||
TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16`
|
||||
|
||||
docker build -f Dockerfile.rpi.buster -t cgutman/moonlight-packaging:rpi-buster_$TAG_UNIQUE_ID .
|
||||
docker build -f Dockerfile.rpi.buster64 -t cgutman/moonlight-packaging:rpi-buster64_$TAG_UNIQUE_ID .
|
||||
docker build -f Dockerfile.amd64.buster -t cgutman/moonlight-packaging:amd64-buster_$TAG_UNIQUE_ID .
|
||||
docker build -f Dockerfile.l4t.bionic -t cgutman/moonlight-packaging:l4t-bionic_$TAG_UNIQUE_ID .
|
||||
|
||||
docker push cgutman/moonlight-packaging:rpi-buster_$TAG_UNIQUE_ID
|
||||
docker push cgutman/moonlight-packaging:rpi-buster64_$TAG_UNIQUE_ID
|
||||
docker push cgutman/moonlight-packaging:amd64-buster_$TAG_UNIQUE_ID
|
||||
docker push cgutman/moonlight-packaging:l4t-bionic_$TAG_UNIQUE_ID
|
||||
|
||||
1
rpi-userland
Submodule
1
rpi-userland
Submodule
Submodule rpi-userland added at 5c051a9208
@@ -3,11 +3,24 @@ set -e
|
||||
BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm"
|
||||
|
||||
echo "Building dependencies for $TARGET"
|
||||
if [ "$TARGET" == "rpi" ]; then
|
||||
if [ "$TARGET" == "rpi" ] || [ "$TARGET" == "rpi64" ]; then
|
||||
# We have to build MMAL libraries for aarch64
|
||||
if [ "$TARGET" == "rpi64" ]; then
|
||||
cd /opt/rpi-userland
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DARM64=ON -DLIBRARY_TYPE=STATIC -DVCOS_PTHREADS_BUILD_SHARED=OFF ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
# We also have to patch the FFmpeg configure script since it doesn't use pkg-config
|
||||
sed -i 's|add_ldflags -L/opt/vc/lib/|add_ldflags -L/opt/vc/lib/ -pthread|g' /opt/FFmpeg/configure
|
||||
fi
|
||||
|
||||
# Copy libraspberrypi-dev pkgconfig files into the default location
|
||||
mkdir -p /usr/local/lib/pkgconfig
|
||||
cp /opt/vc/lib/pkgconfig/* /usr/local/lib/pkgconfig/
|
||||
# Enable MMAL decoders
|
||||
# Enable MMAL and VL42 stateless decoders
|
||||
EXTRA_FFMPEG_ARGS="--enable-mmal --enable-decoder=h264_mmal --disable-rpi --enable-sand --enable-libudev --enable-v4l2-request --enable-hwaccel=h264_v4l2request --enable-hwaccel=hevc_v4l2request"
|
||||
elif [ "$TARGET" == "l4t" ]; then
|
||||
# Enable NVMPI decoders
|
||||
|
||||
@@ -16,6 +16,9 @@ VERSION=`cat app/version.txt`
|
||||
if [ "$TARGET" == "rpi" ]; then
|
||||
EXTRA_BUILD_DEPS="libraspberrypi-dev | rbp-userland-dev-osmc"
|
||||
EXTRA_DEPS="libraspberrypi0 | rbp-userland-osmc"
|
||||
elif [ "$TARGET" == "rpi64" ]; then
|
||||
EXTRA_BUILD_DEPS=""
|
||||
EXTRA_DEPS=""
|
||||
elif [ "$TARGET" == "l4t" ]; then
|
||||
EXTRA_BUILD_DEPS="libnvmpi1.0.0"
|
||||
elif [ "$TARGET" == "desktop" ]; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
set -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y curl g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libfreetype6-dev libasound2-dev libdbus-1-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libibus-1.0-dev libpulse-dev libudev-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev
|
||||
apt-get install -y curl g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libfreetype6-dev libasound2-dev libdbus-1-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libibus-1.0-dev libpulse-dev libudev-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev cmake
|
||||
apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libopus-dev
|
||||
|
||||
Reference in New Issue
Block a user