Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/docker-images
  • funman/docker-buildbots
  • chouquette/docker-images
  • rom1v/docker-images
  • ePirat/docker-images
  • haasn/docker-images
  • thresh/docker-images
  • janne/docker-images
  • mstorsjo/docker-images
  • Garf/docker-images
  • 126tufthorn/docker-images
  • f3ndot/docker-images
  • robUx4/docker-images
  • jahan/docker-images
  • jgh-/docker-images
  • mfkl/docker-images
  • jdek/docker-images
  • another/docker-images
  • nullgemm/docker-images
  • mamoru9999/vlc-docker-image
  • Grubshka/docker-images
  • chub/docker-images
  • Luni-4/docker-images
  • b1ue/docker-images
  • poowadolkosuma/docker-images
  • jill/docker-images
  • tguillem/docker-images
  • bbbui/docker-images
  • r8420/docker-images
  • asenat/docker-images
  • saschaschumachers857/docker-images
  • bravo696/docker-images
  • JohannesKauffmann/docker-images
  • dholeey7/docker-images
  • kasper93/docker-images
  • alexandre-janniaux/docker-images
  • fcartegnie/docker-images
  • huynhsontung/docker-images
  • HecaiYuan/docker-images
  • fuzun/docker-images
40 results
Show changes
Commits on Source (183)
Showing
with 303 additions and 147 deletions
.build-images: &build-images |
stages:
- generate
- triggers
- build
.generate-jobs: &generate-jobs |
set -x
DATE=`date +'%Y%m%d%H%M%S'`
DIRS=""
if [ "$CI_COMMIT_BEFORE_SHA" = "0000000000000000000000000000000000000000" ]; then
BASE_SHA=$CI_MERGE_REQUEST_DIFF_BASE_SHA
......@@ -17,38 +23,101 @@
esac
done
echo "Changed images: '$DIRS'"
for d in $DIRS; do
[ -d "$d" -a -f "$d/Dockerfile" ] || continue
DATE=`date +'%Y%m%d%H%M%S'`
docker build --build-arg CORES=`nproc` -t registry-mgmt.videolan.org/$d:$DATE $d/
if [ "$CI_PROJECT_NAMESPACE" = "videolan" -a -z "$CI_MERGE_REQUEST_ID" ]; then
docker login -u=$REGISTRY_LOGIN -p=$REGISTRY_AUTH registry-mgmt.videolan.org
docker push registry-mgmt.videolan.org/$d:$DATE
echo "Done: docker pull registry.videolan.org/$d:$DATE"
fi
done
cat > generated-config.jsonnet << __EOF__
local job(j) =
{
image: "docker:27.5.1",
stage: "build",
tags: [ "dind-amd64" ],
rules: [ { "if": "\$CI_PIPELINE_SOURCE == \"parent_pipeline\"" } ],
script: j.script
};
__EOF__
a="["
if [ -n "$DIRS" ]; then
for d in $DIRS; do
[ -d "$d" -a -f "$d/Dockerfile" ] || continue
script="docker build --build-arg CORES=`nproc` -t registry-mgmt.videolan.org/$d:$DATE $d/"
if [ "$CI_PROJECT_NAMESPACE" = "videolan" -a -z "$CI_MERGE_REQUEST_ID" ]; then
script="$script\ndocker login -u=\$REGISTRY_LOGIN -p=\$REGISTRY_AUTH registry-mgmt.videolan.org"
script="$script\ndocker push registry-mgmt.videolan.org/$d:$DATE"
script="$script\necho Done: docker pull registry.videolan.org/$d:$DATE"
fi
a="$a{\"name\":\"$d\", \"script\":\"$script\"},"
done
else
a="$a{\"name\":\"no-op\", \"script\":\"/bin/true\"}"
fi
a="$a];"
cat >> generated-config.jsonnet <<__EOF__
local jobs = $a
{
"variables": {
"DOCKER_DRIVER": "overlay2",
"DOCKER_TLS_CERTDIR": "/certs"
},
"default": {
"services": [
"docker:27.5.1-dind"
],
"before_script": [
"docker info",
"apk add git jsonnet"
]
}
}
{
[j.name]: job(j)
for j in jobs
}
__EOF__
cat generated-config.jsonnet
jsonnet generated-config.jsonnet > generated-config.yml
cat generated-config.yml
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
services:
- docker:20.10.12-dind
default:
services:
- docker:27.5.1-dind
before_script:
- docker info
- apk add git jsonnet
before_script:
- docker info
- apk add git
build:
stage: build
interruptible: true
generate:
stage: generate
tags:
- dind-amd64
image:
name: docker:20.10.12
name: docker:27.5.1
script:
- *build-images
- *generate-jobs
only:
refs:
- merge_requests
- master@videolan/docker-images
artifacts:
paths:
- generated-config.yml
trigger:
stage: triggers
needs:
- generate
trigger:
include:
- artifact: generated-config.yml
job: generate
strategy: depend
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
FROM debian:buster-20220801-slim
FROM debian:buster-20240612-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
......@@ -20,7 +20,7 @@ RUN addgroup --quiet --gid ${VIDEOLAN_UID} videolan && \
ca-certificates curl git build-essential python3-pip \
python3-setuptools python3-wheel nasm \
doxygen graphviz ninja-build && \
pip3 install meson==0.49 && \
pip3 install --no-cache-dir meson==0.49 && \
apt-get clean -y && rm -rf /var/lib/apt/lists/*
USER videolan
FROM debian:sid-20220801-slim
FROM debian:sid-20250113-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
......@@ -11,28 +11,43 @@ ENV IMAGE_DATE=202205141200
# - RPM based: <500 (CentOS, RedHat, etc.)
ARG VIDEOLAN_UID=499
RUN addgroup --quiet --gid ${VIDEOLAN_UID} videolan && \
adduser --quiet --uid ${VIDEOLAN_UID} --ingroup videolan videolan && \
RUN groupadd --gid ${VIDEOLAN_UID} videolan && \
useradd --uid ${VIDEOLAN_UID} --gid videolan --create-home --shell /bin/bash videolan && \
echo "videolan:videolan" | chpasswd && \
apt-get update && \
apt-get -y dist-upgrade && \
apt-get install --no-install-suggests --no-install-recommends -y \
lftp ca-certificates curl git build-essential python3-pip \
python3-setuptools python3-wheel nasm clang mold \
wine wine64 procps doxygen graphviz libsdl2-dev ripgrep && \
pip3 install meson ninja gcovr && \
lftp ca-certificates curl git build-essential \
nasm clang-19 libclang-rt-19-dev mold meson ninja-build gcovr \
wine wine64 procps doxygen graphviz libsdl2-dev ripgrep \
zstd && \
ln -s clang-19 /usr/bin/clang && \
ln -s clang++-19 /usr/bin/clang++ && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install --no-install-suggests --no-install-recommends -y \
gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 \
gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools \
gcc-multilib g++-multilib \
libc6-dev:i386 libgcc-10-dev:i386 wine32 qemu-user && \
libc6-dev:i386 libgcc-14-dev:i386 wine32 qemu-user && \
apt-get install --no-install-suggests --no-install-recommends -y \
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dev-riscv64-cross && \
apt-get install --no-install-suggests --no-install-recommends -y \
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross && \
apt-get clean -y && rm -rf /var/lib/apt/lists/*
RUN LOONG_TOOLCHAIN_NAME="x86_64-cross-tools-loongarch64-binutils_2.43.1-gcc_14.2.0-glibc_2.40.tar.xz" && \
LOONG_TOOLCHAIN_SHA256="3405faee1cb757d9e42962013a3fe0dfb62ebf44b4c0739833f4b9528a99a017" && \
curl --location --remote-name "https://github.com/loongson/build-tools/releases/download/2024.11.01/$LOONG_TOOLCHAIN_NAME" && \
echo "$LOONG_TOOLCHAIN_SHA256 $LOONG_TOOLCHAIN_NAME" | sha256sum -c && \
tar -xf "$LOONG_TOOLCHAIN_NAME" -C /opt && \
rm "$LOONG_TOOLCHAIN_NAME"
USER videolan
COPY scripts/wait_process.sh /opt/wine/
RUN wine wineboot --init && \
/opt/wine/wait_process.sh wineserver && \
rm -rf /tmp/wine-*
ENV PATH="/opt/cross-tools/bin:$PATH"
FROM ubuntu:jammy-20220531
FROM ubuntu:jammy
ENV IMAGE_DATE=202207280000
ENV IMAGE_DATE=202307300000
# If someone wants to use VideoLAN docker images on a local machine and does
# not want to be disturbed by the videolan user, we should not take an uid/gid
......@@ -9,7 +9,10 @@ ENV IMAGE_DATE=202207280000
# - RPM based: <500 (CentOS, RedHat, etc.)
ARG VIDEOLAN_UID=499
ENV SDK_VERSION=1.3.216
ENV SDK_VERSION=1.3.236 \
SPIRV_CROSS_BRANCH=sdk-1.3.236.0
COPY crossfiles/ /opt/crossfiles/
RUN set -x && \
apt-get update && apt-get --no-install-suggests --no-install-recommends -y install udev && \
......@@ -19,12 +22,12 @@ RUN set -x && \
usermod --append --groups video,render videolan && \
echo "videolan:videolan" | chpasswd && \
apt-get install --no-install-suggests --no-install-recommends -y \
apt-utils git-core build-essential gnupg clang clang-tools llvm gdb lcov \
python3-pip python3-setuptools python3-wheel python3-mako \
apt-utils git-core build-essential gnupg clang clang-tools lld llvm gdb lcov \
python3-pip python3-setuptools python3-wheel python3-mako libglfw3-dev libsdl2-dev libsdl2-image-dev \
libepoxy-dev libgles1 libgles2 liblcms2-dev curl mesa-vulkan-drivers \
libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev \
gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 \
g++-mingw-w64-i686 mingw-w64-tools wine systemd-coredump && \
g++-mingw-w64-i686 mingw-w64-tools cmake wine systemd-coredump && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install --no-install-suggests --no-install-recommends -y wine32 && \
......@@ -35,8 +38,29 @@ RUN set -x && \
apt-get install --no-install-suggests --no-install-recommends -y \
vulkan-headers libvulkan-dev vulkan-validationlayers \
vulkan-tools lunarg-vulkan-layers glslang-dev shaderc && \
apt-get clean -y && rm -rf /var/lib/apt/lists/*
COPY crossfiles/ /opt/crossfiles/
apt-get clean -y && rm -rf /var/lib/apt/lists/* && \
cd /root && \
git clone --depth 1 -b ${SPIRV_CROSS_BRANCH} https://github.com/KhronosGroup/SPIRV-Cross.git && \
cd SPIRV-Cross && \
cmake -H. -Bbuild64 -GNinja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_TOOLCHAIN_FILE=/opt/crossfiles/x86_64-w64-mingw32.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \
-DSPIRV_CROSS_SHARED=ON \
-DSPIRV_CROSS_CLI=OFF \
-DSPIRV_CROSS_ENABLE_TESTS=OFF \
.. && \
ninja -Cbuild64 install && \
cmake -H. -Bbuild -GNinja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_TOOLCHAIN_FILE=/opt/crossfiles/i686-w64-mingw32.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \
-DSPIRV_CROSS_SHARED=ON \
-DSPIRV_CROSS_CLI=OFF \
-DSPIRV_CROSS_ENABLE_TESTS=OFF \
.. && \
ninja -Cbuild install && \
cd /root && \
echo rm -rf SPIRV-Cross
USER videolan
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_SYSTEM_PROCESSOR i686)
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER_INIT i686-w64-mingw32-windres)
SET(CMAKE_ASM_COMPILER i686-w64-mingw32-as)
......@@ -4,14 +4,15 @@ cpp = 'i686-w64-mingw32-g++'
ar = 'i686-w64-mingw32-ar'
strip = 'i686-w64-mingw32-strip'
windres = 'i686-w64-mingw32-windres'
pkgconfig = 'i686-w64-mingw32-pkg-config'
exe_wrapper = 'wine'
[built-in options]
c_link_args = ['-static-libgcc']
cpp_link_args = ['-static-libgcc','-static-libstdc++']
[host_machine]
system = 'windows'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_SYSTEM_PROCESSOR x86_64)
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER_INIT x86_64-w64-mingw32-windres)
SET(CMAKE_ASM_COMPILER x86_64-w64-mingw32-as)
......@@ -4,10 +4,12 @@ cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
strip = 'x86_64-w64-mingw32-strip'
windres = 'x86_64-w64-mingw32-windres'
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
exe_wrapper = 'wine64'
[built-in options]
c_link_args = ['-static-libgcc']
cpp_link_args = ['-static-libgcc','-static-libstdc++']
[host_machine]
system = 'windows'
......
......@@ -2,7 +2,7 @@ FROM debian:sid-20221114-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
ENV IMAGE_DATE=20221214144100
ENV IMAGE_DATE=20231013100000
# If someone wants to use VideoLAN docker images on a local machine and does
# not want to be disturbed by the videolan user, we should not take an uid/gid
......@@ -22,9 +22,9 @@ RUN set -x && \
libavformat-dev libavutil-dev libpostproc-dev libswscale-dev \
gettext pkg-config wget m4 build-essential curl libltdl-dev meson flex bison \
rapidjson-dev libsqlite3-dev lcov libmpg123-dev libtag-extras-dev liba52-dev \
liba52-0.7.4-dev liblua5.1-0-dev zlib1g-dev libjpeg62-turbo-dev libxml2-dev gcovr \
liba52-0.7.4-dev liblua5.1-0-dev zlib1g-dev libjpeg62-turbo-dev libxml2-dev gcovr=6.0-1 \
gdb libid3-tools python3-scipy cmake sqlite3 libtag1-dev libxxhash-dev && \
apt-get install -yq --no-install-suggests clang libc++-dev libc++abi-dev && \
apt-get install -yq --no-install-suggests --install-recommends clang libc++-dev libc++abi-dev && \
apt-get clean -y && rm -rf /var/lib/apt/lists/* && \
addgroup --quiet --gid ${VIDEOLAN_UID} videolan && \
adduser --quiet --uid ${VIDEOLAN_UID} --ingroup videolan videolan && \
......
......@@ -2,7 +2,7 @@ FROM debian:sid-20221114-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
ENV IMAGE_DATE=20221214144100
ENV IMAGE_DATE=20231013100000
# If someone wants to use VideoLAN docker images on a local machine and does
# not want to be disturbed by the videolan user, we should not take an uid/gid
......@@ -22,9 +22,9 @@ RUN set -x && \
libavformat-dev libavutil-dev libpostproc-dev libswscale-dev \
gettext pkg-config wget m4 build-essential curl libltdl-dev meson flex bison \
rapidjson-dev libsqlite3-dev lcov libmpg123-dev libtag-extras-dev liba52-dev \
liba52-0.7.4-dev liblua5.1-0-dev zlib1g-dev libjpeg62-turbo-dev libxml2-dev gcovr \
gdb libid3-tools python3-scipy cmake sqlite3 libtag1-dev libxxhash-dev \
clang libc++-dev libc++abi-dev llvm-13 && \
liba52-0.7.4-dev liblua5.1-0-dev zlib1g-dev libjpeg62-turbo-dev libxml2-dev gcovr=6.0-1 \
gdb libid3-tools python3-scipy cmake sqlite3 libtag1-dev libxxhash-dev && \
apt-get install -yq --no-install-suggests --install-recommends clang libc++-dev libc++abi-dev && \
apt-get clean -y && rm -rf /var/lib/apt/lists/* && \
addgroup --quiet --gid ${VIDEOLAN_UID} videolan && \
adduser --quiet --uid ${VIDEOLAN_UID} --ingroup videolan videolan && \
......
FROM registry.videolan.org/vlc-debian-win32:20221214121630
ENV IMAGE_DATE=20221214144100
ENV IMAGE_DATE=20231009100000
USER root
......
FROM registry.videolan.org/vlc-debian-llvm-msvcrt:20221214101739
FROM registry.videolan.org/vlc-debian-llvm-msvcrt:20230525055044
ENV IMAGE_DATE=202212140826
ENV IMAGE_DATE=20231009100000
USER root
......
FROM golangci/golangci-lint:v1.26-alpine
FROM golangci/golangci-lint:v1.51.1-alpine
MAINTAINER VideoLAN roots <roots@videolan.org>
......
FROM node:20.1.0-alpine3.17
MAINTAINER VideoLAN roots <roots@videolan.org>
ENV IMAGE_DATE=202305051600
# If someone wants to use VideoLAN docker images on a local machine and does
# not want to be disturbed by the videolan user, we should not take an uid/gid
# in the user range of main distributions, which means:
# - Debian based: <1000
# - RPM based: <500 (CentOS, RedHat, etc.)
ARG VIDEOLAN_UID=499
RUN addgroup -g ${VIDEOLAN_UID} videolan && \
adduser -u ${VIDEOLAN_UID} -G videolan -h /home/videolan -D videolan && \
echo "videolan:videolan" | chpasswd
RUN apk add git
USER videolan
......@@ -19,7 +19,7 @@ RUN addgroup --quiet --gid ${VIDEOLAN_UID} videolan && \
echo "deb-src http://ftp.fr.debian.org/debian/ buster main" >> /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-suggests --no-install-recommends \
build-essential zlib1g-dev ruby-full bundler \
build-essential git rsync zlib1g-dev ruby-full bundler \
python3-pip python3-setuptools \
graphviz && \
pip3 install Sphinx==4.4.0 'sphinx-intl>=2.0.1' sphinx-rtd-theme==1.0.0 sphinx-tabs==3.3.1 && \
......
FROM debian:stretch-20210927
FROM debian:bookworm-20230522-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
ENV IMAGE_DATE=202110041109
ENV IMAGE_DATE=202306200801
COPY crossfiles/ /opt/crossfiles/
COPY patches /patches
ENV ANDROID_NDK="/sdk/android-ndk" \
ANDROID_SDK="/sdk/android-sdk-linux"
......@@ -16,59 +19,56 @@ ARG VIDEOLAN_CI_UID=499
ARG CORES=8
ENV PATH=/opt/tools/bin:$PATH
ENV PATH=/sdk/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/:/opt/tools/bin:$PATH
RUN addgroup --quiet --gid ${VIDEOLAN_CI_UID} videolan && \
adduser --quiet --uid ${VIDEOLAN_CI_UID} --ingroup videolan videolan && \
RUN groupadd --gid ${VIDEOLAN_CI_UID} videolan && \
useradd --uid ${VIDEOLAN_CI_UID} --gid videolan --create-home --shell /bin/bash videolan && \
echo "videolan:videolan" | chpasswd && \
apt-get update && \
apt-get install --no-install-suggests --no-install-recommends -y \
openjdk-8-jdk-headless ca-certificates autoconf m4 automake ant autopoint bison \
flex build-essential libtool libtool-bin patch pkg-config ragel subversion \
git rpm2cpio libwebkitgtk-1.0-0 yasm ragel g++ protobuf-compiler gettext \
libgsm1-dev wget expect unzip python python3 locales libltdl-dev curl && \
echo "deb http://deb.debian.org/debian testing main" > /etc/apt/sources.list.d/testing.list && \
apt-get update && apt-get -y -t testing --no-install-suggests --no-install-recommends install automake && \
rm -f /etc/apt/sources.list.d/testing.list && \
openjdk-17-jdk-headless ca-certificates autoconf m4 automake ant autopoint bison \
flex build-essential libtool libtool-bin patch pkg-config cmake meson \
git yasm ragel g++ gettext ninja-build \
wget expect unzip python3 \
locales libltdl-dev curl nasm && \
apt-get clean -y && rm -rf /var/lib/apt/lists/* && \
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \
echo "export ANDROID_NDK=${ANDROID_NDK}" >> /etc/profile.d/vlc_env.sh && \
echo "export ANDROID_SDK=${ANDROID_SDK}" >> /etc/profile.d/vlc_env.sh && \
mkdir sdk && cd sdk && \
wget -q https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip && \
ANDROID_NDK_SHA256=4f61cbe4bbf6406aa5ef2ae871def78010eed6271af72de83f8bd0b07a9fd3fd && \
echo $ANDROID_NDK_SHA256 android-ndk-r18b-linux-x86_64.zip | sha256sum -c && \
unzip android-ndk-r18b-linux-x86_64.zip && \
rm -f android-ndk-r18b-linux-x86_64.zip && \
ln -s android-ndk-r18b android-ndk && \
ANDROID_NDK_VERSION=21e && \
ANDROID_NDK_SHA256=ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e && \
wget -q https://dl.google.com/android/repository/android-ndk-r$ANDROID_NDK_VERSION-linux-x86_64.zip && \
echo $ANDROID_NDK_SHA256 android-ndk-r$ANDROID_NDK_VERSION-linux-x86_64.zip | sha256sum -c && \
unzip android-ndk-r$ANDROID_NDK_VERSION-linux-x86_64.zip && \
rm -f android-ndk-r$ANDROID_NDK_VERSION-linux-x86_64.zip && \
ln -s android-ndk-r$ANDROID_NDK_VERSION android-ndk && \
mkdir android-sdk-linux && \
cd android-sdk-linux && \
mkdir "licenses" && \
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "licenses/android-sdk-license" && \
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "licenses/android-sdk-license" && \
wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip && \
SDK_TOOLS_SHA256=444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0 && \
echo $SDK_TOOLS_SHA256 sdk-tools-linux-3859397.zip | sha256sum -c && \
unzip sdk-tools-linux-3859397.zip && \
rm -f sdk-tools-linux-3859397.zip && \
tools/bin/sdkmanager "build-tools;26.0.1" "platform-tools" "platforms;android-26" && \
SDK_TOOLS_FILENAME=commandlinetools-linux-9477386_latest.zip && \
wget -q https://dl.google.com/android/repository/$SDK_TOOLS_FILENAME && \
SDK_TOOLS_SHA256=bd1aa17c7ef10066949c88dc6c9c8d536be27f992a1f3b5a584f9bd2ba5646a0 && \
echo $SDK_TOOLS_SHA256 $SDK_TOOLS_FILENAME | sha256sum -c && \
unzip $SDK_TOOLS_FILENAME && \
rm -f $SDK_TOOLS_FILENAME && \
cd / && \
cd sdk/android-sdk-linux && \
cmdline-tools/bin/sdkmanager --sdk_root=/sdk/android-sdk-linux/ "build-tools;26.0.1" "platform-tools" "platforms;android-26" && \
chown -R videolan /sdk && \
mkdir /build && cd /build && \
CMAKE_VERSION=3.17.0 && \
CMAKE_SHA256=b74c05b55115eacc4fa2b77a814981dbda05cdc95a53e279fe16b7b272f00847 && \
wget -q http://www.cmake.org/files/v3.17/cmake-$CMAKE_VERSION.tar.gz && \
echo $CMAKE_SHA256 cmake-$CMAKE_VERSION.tar.gz | sha256sum -c && \
tar xzf cmake-$CMAKE_VERSION.tar.gz && \
cd cmake-$CMAKE_VERSION && ./configure --prefix=/opt/tools/ --parallel=$CORES --no-qt-gui -- \
-DCMAKE_USE_OPENSSL:BOOL=OFF -DBUILD_TESTING:BOOL=OFF && make -j$CORES && make install && \
cd /build && \
PROTOBUF_VERSION=3.1.0 && \
PROTOBUF_SHA256=51ceea9957c875bdedeb1f64396b5b0f3864fe830eed6a2d9c066448373ea2d6 && \
wget -q https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.tar.gz && \
echo $PROTOBUF_SHA256 protobuf-cpp-$PROTOBUF_VERSION.tar.gz | sha256sum -c && \
tar xzfo protobuf-cpp-$PROTOBUF_VERSION.tar.gz && \
cd protobuf-$PROTOBUF_VERSION && \
./configure --prefix=/opt/tools/ --disable-shared --enable-static && make -j$CORES && make install && \
patch -p1 < /patches/protobuf-fix-build.patch && \
patch -p1 < /patches/protobuf-include-algorithm.patch && \
cmake -S cmake -B build -DBUILD_SHARED_LIBS=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF && \
cmake --build build --parallel $CORES && cmake --install build --prefix /opt/tools && \
rm -rf /build
ENV LANG en_US.UTF-8
......
--- protobuf/src/google/protobuf/compiler/java/java_file.cc.old 2021-12-13 14:57:55.210153925 +0100
+++ protobuf/src/google/protobuf/compiler/java/java_file.cc 2021-12-13 14:58:03.734181392 +0100
@@ -65,7 +65,7 @@
namespace {
struct FieldDescriptorCompare {
- bool operator ()(const FieldDescriptor* f1, const FieldDescriptor* f2) {
+ bool operator ()(const FieldDescriptor* f1, const FieldDescriptor* f2) const {
if(f1 == NULL) {
return false;
}
--- protobuf/src/google/protobuf/repeated_field.h.orig 2022-02-17 12:44:54.526527423 +0200
+++ protobuf/src/google/protobuf/repeated_field.h 2022-02-17 12:44:58.190446363 +0200
@@ -46,11 +46,7 @@
#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__
#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__
-#ifdef _MSC_VER
-// This is required for min/max on VS2013 only.
#include <algorithm>
-#endif
-
#include <string>
#include <iterator>
#include <google/protobuf/stubs/casts.h>
FROM debian:bullseye-20221114-slim
FROM debian:bookworm-20240311-slim
MAINTAINER VideoLAN roots <roots@videolan.org>
ENV IMAGE_DATE=202211290000
COPY crossfiles/ /opt/crossfiles/
ENV IMAGE_DATE=202306021100
ENV ANDROID_NDK="/sdk/android-ndk" \
ANDROID_SDK="/sdk/android-sdk-linux"
......@@ -18,29 +16,33 @@ ARG VIDEOLAN_CI_UID=499
ARG CORES=8
ENV PATH=/usr/lib/jvm/java-8-openjdk-amd64/bin:/sdk/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/:/opt/tools/bin:$PATH
ENV RUST_HOME=/opt/rust
ENV RUSTUP_HOME=$RUST_HOME/rustup
ENV CARGO_HOME=$RUST_HOME/cargo
ENV PATH=/sdk/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/:/opt/tools/bin:/opt/tools/libexec:$CARGO_HOME/bin:$PATH
RUN addgroup --quiet --gid ${VIDEOLAN_CI_UID} videolan && \
adduser --quiet --uid ${VIDEOLAN_CI_UID} --ingroup videolan videolan && \
RUN groupadd --gid ${VIDEOLAN_CI_UID} videolan && \
useradd --uid ${VIDEOLAN_CI_UID} --gid videolan --create-home --shell /bin/bash videolan && \
echo "videolan:videolan" | chpasswd && \
mkdir -p $RUST_HOME && chown videolan $RUST_HOME && \
mkdir -p /usr/share/man/man1 && \
echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list && \
apt-get update && \
apt-get -y dist-upgrade && \
apt-get install --no-install-suggests --no-install-recommends -y \
ca-certificates autoconf m4 automake ant autopoint bison \
flex build-essential libtool libtool-bin patch pkg-config ragel subversion cmake \
git yasm ragel g++ protobuf-compiler gettext ninja-build \
wget expect unzip python python3 python3-venv python3-setuptools python3-mako \
locales libltdl-dev curl automake nasm && \
apt-get install --no-install-suggests --no-install-recommends -y \
-t buster-backports meson && \
openjdk-17-jdk-headless ca-certificates autoconf m4 automake ant autopoint bison \
flex build-essential libtool libtool-bin patch pkg-config cmake meson \
git yasm g++ gettext ninja-build \
wget expect unzip python3 python3-venv python3-setuptools python3-mako \
locales libltdl-dev curl nasm gperf \
&& \
apt-get clean -y && rm -rf /var/lib/apt/lists/* && \
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \
echo "export ANDROID_NDK=${ANDROID_NDK}" >> /etc/profile.d/vlc_env.sh && \
echo "export ANDROID_SDK=${ANDROID_SDK}" >> /etc/profile.d/vlc_env.sh && \
mkdir sdk && cd sdk && \
ANDROID_NDK_VERSION=25 && \
ANDROID_NDK_SHA256=cd661aeda5d9b7cfb6e64bd80737c274d7c1c0d026df2f85be3bf3327b25e545 && \
mkdir /sdk && cd /sdk && \
ANDROID_NDK_VERSION=26b && \
ANDROID_NDK_SHA256=ad73c0370f0b0a87d1671ed2fd5a9ac9acfd1eb5c43a7fbfbd330f85d19dd632 && \
wget -q https://dl.google.com/android/repository/android-ndk-r$ANDROID_NDK_VERSION-linux.zip && \
echo $ANDROID_NDK_SHA256 android-ndk-r$ANDROID_NDK_VERSION-linux.zip | sha256sum -c && \
unzip android-ndk-r$ANDROID_NDK_VERSION-linux.zip && \
......@@ -52,38 +54,41 @@ RUN addgroup --quiet --gid ${VIDEOLAN_CI_UID} videolan && \
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "licenses/android-sdk-license" && \
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "licenses/android-sdk-license" && \
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "licenses/android-sdk-license" && \
SDK_TOOLS_FILENAME=commandlinetools-linux-7583922_latest.zip && \
SDK_TOOLS_FILENAME=commandlinetools-linux-9477386_latest.zip && \
wget -q https://dl.google.com/android/repository/$SDK_TOOLS_FILENAME && \
SDK_TOOLS_SHA256=124f2d5115eee365df6cf3228ffbca6fc3911d16f8025bebd5b1c6e2fcfa7faf && \
SDK_TOOLS_SHA256=bd1aa17c7ef10066949c88dc6c9c8d536be27f992a1f3b5a584f9bd2ba5646a0 && \
echo $SDK_TOOLS_SHA256 $SDK_TOOLS_FILENAME | sha256sum -c && \
unzip $SDK_TOOLS_FILENAME && \
rm -f $SDK_TOOLS_FILENAME && \
cd / && \
JDK_FILENAME=OpenJDK11U-jdk_x64_linux_11.0.12_7.tar.gz && \
wget -q https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.12%2B7/$JDK_FILENAME && \
JDK_SHA256=06c04b1eccd61dec3849e88f7606d17192c9a713a433ba26f82fe5fe9587d6bb && \
echo $JDK_SHA256 $JDK_FILENAME | sha256sum -c && \
mkdir -p /usr/lib/jvm/java-8-openjdk-amd64 && \
tar -C /usr/lib/jvm/java-8-openjdk-amd64 -xvzf $JDK_FILENAME --strip=1 && \
rm -f $JDK_FILENAME && \
cd sdk/android-sdk-linux && \
cd /sdk/android-sdk-linux && \
cmdline-tools/bin/sdkmanager --sdk_root=/sdk/android-sdk-linux/ "build-tools;26.0.1" "platform-tools" "platforms;android-26" && \
chown -R videolan /sdk && \
mkdir /build && cd /build && \
PROTOBUF_VERSION=3.4.1 && \
PROTOBUF_SHA256=2bb34b4a8211a30d12ef29fd8660995023d119c99fbab2e5fe46f17528c9cc78 && \
wget -q https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.tar.gz && \
echo $PROTOBUF_SHA256 protobuf-cpp-$PROTOBUF_VERSION.tar.gz | sha256sum -c && \
tar xzfo protobuf-cpp-$PROTOBUF_VERSION.tar.gz && \
cd protobuf-$PROTOBUF_VERSION && \
# force include <algorithm> \
sed -i.orig 's,#ifdef _MSC_VER,#if 1,' "src/google/protobuf/repeated_field.h" && \
cmake -S cmake -B build -DBUILD_SHARED_LIBS=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF && \
cmake --build build --parallel $CORES && cmake --install build --prefix /opt/tools && \
mkdir /build && \
cd /build && \
VLC_TOOLS_HASH=0ef4d6151ce7a4443d88269fcb6f78bc0a442e98 && \
git clone -b master https://code.videolan.org/videolan/vlc.git && cd vlc && git checkout ${VLC_TOOLS_HASH} && \
cd contrib && mkdir build-contribs && cd build-contribs && \
TARGET_TUPLE=aarch64-linux-android && \
ANDROID_ABI=arm64-v8a ANDROID_API=21 ../bootstrap --host=$TARGET_TUPLE --prefix=/opt/tools/dummy --enable-ad-clauses && \
make -j$CORES list && \
make -j$CORES tools && \
rm -rf /build
ENV LANG en_US.UTF-8
USER videolan
RUN RUST_TARGETS="aarch64-linux-android x86_64-linux-android i686-linux-android" && \
mkdir $RUST_HOME/build && \
cd $RUST_HOME/build && \
RUST_VERSION=1.79.0 && \
RUSTUP_VERSION=1.27.1 && \
RUSTUP_SHA256=f5ba37f2ba68efec101198dca1585e6e7dd7640ca9c526441b729a79062d3b77 && \
wget -q "https://github.com/rust-lang/rustup/archive/refs/tags/$RUSTUP_VERSION.tar.gz" -O rustup-$RUSTUP_VERSION.tar.gz && \
echo $RUSTUP_SHA256 rustup-$RUSTUP_VERSION.tar.gz | sha256sum -c && \
tar xzfo rustup-$RUSTUP_VERSION.tar.gz && \
cd rustup-$RUSTUP_VERSION && \
./rustup-init.sh --default-toolchain $RUST_VERSION --profile minimal -y --target $RUST_TARGETS && \
rm -rf $RUST_HOME/build
RUN git config --global user.name "VLC Android" && \
git config --global user.email buildbot@videolan.org
# Automatically generated by contrib makefile
[binaries]
c = 'aarch64-linux-android21-clang'
cpp = 'aarch64-linux-android21-clang++'
ar = 'aarch64-linux-android-ar'
strip = 'aarch64-linux-android-strip'
pkgconfig = 'pkg-config'
windres = 'aarch64-linux-android-windres'
[properties]
needs_exe_wrapper = true
c_args = ['-g', '-O2', '-fPIC', '-fdata-sections', '-ffunction-sections', '-funwind-tables', '-fstack-protector-strong', '-no-canonical-prefixes']
cpp_args = ['-g', '-O2', '-fPIC', '-fdata-sections', '-ffunction-sections', '-funwind-tables', '-fstack-protector-strong', '-no-canonical-prefixes', '-fexceptions', '-frtti']
[host_machine]
system = 'android'
cpu_family = 'aarch64'
endian = 'little'
cpu = 'aarch64'