CI: support including snapshots of FPC (x86_64-linux) from 'fixes_3_2' and 'main' branches with i386-win32 and x86_64-win64 cross-compilers to our build environment image

This commit is contained in:
Maxim Ganetsky 2022-08-23 02:32:43 +03:00
parent 0de5404e17
commit b804996b53
2 changed files with 41 additions and 22 deletions

View File

@ -1,6 +1,9 @@
variables:
FPC_OLDSTABLE_VER: 3.2.0
FPC_STABLE_VER: 3.2.2
FPC_FIXES_VER: 3.2.3
FPC_MAIN_VER: 3.3.1
IMAGE_TAG: $CI_REGISTRY_IMAGE/debian11-x86-64:latest
QT5PAS_SRC: lcl/interfaces/qt5/cbindings
@ -40,7 +43,12 @@ update-build-env: # This job updates building environment image. Run it if FPC
- docker:dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --pull --build-arg FPC_OLDSTABLE_VER=$FPC_OLDSTABLE_VER --build-arg FPC_STABLE_VER=$FPC_STABLE_VER -t $IMAGE_TAG - < Dockerfile.buildenv
- docker build --pull
--build-arg FPC_OLDSTABLE_VER=$FPC_OLDSTABLE_VER
--build-arg FPC_STABLE_VER=$FPC_STABLE_VER
--build-arg FPC_FIXES_VER=$FPC_FIXES_VER
--build-arg FPC_MAIN_VER=$FPC_MAIN_VER
-t $IMAGE_TAG - < Dockerfile.buildenv
- docker push $IMAGE_TAG
when: manual

View File

@ -1,6 +1,9 @@
FROM debian:11
ARG FPC_STABLE_VER
ARG FPC_OLDSTABLE_VER
ARG FPC_FIXES_VER
ARG FPC_MAIN_VER
RUN dpkg --add-architecture i386 && apt-get update && apt-get -y install \
build-essential \
libc6-dev-i386 \
@ -12,13 +15,16 @@ RUN dpkg --add-architecture i386 && apt-get update && apt-get -y install \
SHELL ["/bin/bash", "-c"]
# install compilers
RUN tarballs=( \
"$FPC_OLDSTABLE_VER fpc-$FPC_OLDSTABLE_VER-x86_64-linux" \
"$FPC_STABLE_VER fpc-$FPC_STABLE_VER.x86_64-linux" \
"https://sourceforge.net/projects/freepascal/files/Linux/$FPC_OLDSTABLE_VER/fpc-$FPC_OLDSTABLE_VER-x86_64-linux.tar fpc-$FPC_OLDSTABLE_VER-x86_64-linux" \
"https://sourceforge.net/projects/freepascal/files/Linux/$FPC_STABLE_VER/fpc-$FPC_STABLE_VER.x86_64-linux.tar fpc-$FPC_STABLE_VER.x86_64-linux" \
"https://gitlab.com/freepascal.org/fpc/build/-/jobs/artifacts/fixes_3_2/raw/fpc-$FPC_FIXES_VER.x86_64-linux.tar?job=build-job fpc-$FPC_FIXES_VER.x86_64-linux" \
"https://gitlab.com/freepascal.org/fpc/build/-/jobs/artifacts/main/raw/fpc-$FPC_MAIN_VER.x86_64-linux.tar?job=build-job fpc-$FPC_MAIN_VER.x86_64-linux" \
); \
for tbl in "${tarballs[@]}"; do \
tarball=($tbl); \
wget https://sourceforge.net/projects/freepascal/files/Linux/${tarball[0]}/${tarball[1]}.tar; \
wget --output-document=${tarball[1]}.tar ${tarball[0]}; \
tar xf ${tarball[1]}.tar; \
cd ${tarball[1]}; \
echo -e "\n\n\n\n" | ./install.sh; \
@ -26,18 +32,23 @@ RUN tarballs=( \
exit 1; \
fi; \
cd ..; \
rm -f ${tarball[1]}.tar; \
rm -rf ${tarball[1]}; \
rm -vf ${tarball[1]}.tar; \
rm -vrf ${tarball[1]}; \
done; \
echo; \
echo "Contents of /etc/fpc.cfg:"; \
cat /etc/fpc.cfg; \
# build and install cross-compilers
tarballs=( \
"$FPC_OLDSTABLE_VER fpc-$FPC_OLDSTABLE_VER.source tar.gz win32 i386" \
"$FPC_OLDSTABLE_VER fpc-$FPC_OLDSTABLE_VER.source tar.gz win64 x86_64" \
"$FPC_STABLE_VER fpc-$FPC_STABLE_VER.source tar.gz win32 i386" \
"$FPC_STABLE_VER fpc-$FPC_STABLE_VER.source tar.gz win64 x86_64" \
cat /etc/fpc.cfg;
# build and install cross-compilers
RUN tarballs=( \
"$FPC_OLDSTABLE_VER https://sourceforge.net/projects/freepascal/files/Source/$FPC_OLDSTABLE_VER fpc-$FPC_OLDSTABLE_VER source.tar.gz win32 i386" \
"$FPC_OLDSTABLE_VER https://sourceforge.net/projects/freepascal/files/Source/$FPC_OLDSTABLE_VER fpc-$FPC_OLDSTABLE_VER source.tar.gz win64 x86_64" \
"$FPC_STABLE_VER https://sourceforge.net/projects/freepascal/files/Source/$FPC_STABLE_VER fpc-$FPC_STABLE_VER source.tar.gz win32 i386" \
"$FPC_STABLE_VER https://sourceforge.net/projects/freepascal/files/Source/$FPC_STABLE_VER fpc-$FPC_STABLE_VER source.tar.gz win64 x86_64" \
"$FPC_FIXES_VER https://gitlab.com/freepascal.org/fpc/source/-/archive/fixes_3_2 source-fixes_3_2 tar.gz win32 i386" \
"$FPC_FIXES_VER https://gitlab.com/freepascal.org/fpc/source/-/archive/fixes_3_2 source-fixes_3_2 tar.gz win64 x86_64" \
"$FPC_MAIN_VER https://gitlab.com/freepascal.org/fpc/source/-/archive/main source-main tar.gz win32 i386" \
"$FPC_MAIN_VER https://gitlab.com/freepascal.org/fpc/source/-/archive/main source-main tar.gz win64 x86_64" \
); \
# downloading, building and tarball removal are done in separate steps,
# because several targets can be built from one source
@ -45,11 +56,11 @@ RUN tarballs=( \
# download sources
for tbl in "${tarballs[@]}"; do \
tarball=($tbl); \
if [ ! -f ${tarball[1]}.${tarball[2]} ]; then \
wget https://sourceforge.net/projects/freepascal/files/Source/${tarball[0]}/${tarball[1]}.${tarball[2]}; \
if [ ! -f ${tarball[2]}.${tarball[3]} ]; then \
wget ${tarball[1]}/${tarball[2]}.${tarball[3]}; \
fi; \
if [ ! -d fpc-${tarball[0]} ]; then \
tar zxf ${tarball[1]}.${tarball[2]}; \
if [ ! -d ${tarball[2]} ]; then \
tar zxf ${tarball[2]}.${tarball[3]}; \
fi; \
if [ $? -ne 0 ]; then \
exit 1; \
@ -58,9 +69,9 @@ RUN tarballs=( \
# build and install cross-compilers
for tbl in "${tarballs[@]}"; do \
tarball=($tbl); \
cd fpc-${tarball[0]}; \
make all FPC=/usr/lib/fpc/${tarball[0]}/ppcx64 OS_TARGET=${tarball[3]} CPU_TARGET=${tarball[4]}; \
make crossinstall FPC=/usr/lib/fpc/${tarball[0]}/ppcx64 OS_TARGET=${tarball[3]} CPU_TARGET=${tarball[4]} INSTALL_PREFIX=/usr; \
cd ${tarball[2]}; \
make all FPC=/usr/lib/fpc/${tarball[0]}/ppcx64 OS_TARGET=${tarball[4]} CPU_TARGET=${tarball[5]}; \
make crossinstall FPC=/usr/lib/fpc/${tarball[0]}/ppcx64 OS_TARGET=${tarball[4]} CPU_TARGET=${tarball[5]} INSTALL_PREFIX=/usr; \
if [ $? -ne 0 ]; then \
exit 1; \
fi; \
@ -69,6 +80,6 @@ RUN tarballs=( \
# remove sources
for tbl in "${tarballs[@]}"; do \
tarball=($tbl); \
rm -f ${tarball[1]}.${tarball[2]}; \
rm -rf fpc-${tarball[0]}; \
rm -vf ${tarball[2]}.${tarball[3]}; \
rm -vrf ${tarball[2]}; \
done;