Skip to content

Commit

Permalink
CI/CD: Rearranged some parts of the logic, many details and design fl…
Browse files Browse the repository at this point in the history
…aws were changed during the deployment to the other repositories
  • Loading branch information
Jj0YzL5nvJ committed May 11, 2024
1 parent fe284b1 commit bc0707d
Show file tree
Hide file tree
Showing 9 changed files with 83 additions and 76 deletions.
26 changes: 12 additions & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,26 @@ jobs:
- uses: actions/checkout@v4
- name: Get build dependencies and arrange the environment
run: |
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
export BUILD_DEPS="libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libsdl1.2-dev libsdl2-dev libvulkan-dev zlib1g-dev"
./.github/workflows/scripts/ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }}
- name: Build and related stuff, backup binaries
run: |
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
export PATH="$(pwd)/.github/workflows/scripts:${PATH}"
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl-config\"" POSTFIX="-old"
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl-config\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl-config\""
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl2-config\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl2-config\"" POSTFIX="-old"
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl2-config\"" MAKE_PKG=1
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl-config\" POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl2-config\" POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg
- name: Upload artifact
if: matrix.cc == 'GCC'
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-linux-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*.tar.gz

MSYS2:
Expand Down Expand Up @@ -91,22 +91,20 @@ jobs:
mingw-w64-${{ matrix.cross }}-SDL2
mingw-w64-${{ matrix.cross }}-vulkan-headers
mingw-w64-${{ matrix.cross }}-zlib
mingw-w64-${{ matrix.cross }}-vulkan-headers
- name: Build and related stuff, backup binaries
run: |
export PATH="$(pwd)/.github/workflows/scripts:${PATH}"
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0" POSTFIX="-old"
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1"
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1"
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
- name: Backup dependencies, etc...
run: |
./.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-msys2-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*

MSVC:
Expand Down Expand Up @@ -140,7 +138,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-msvc-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*

Nightly-build:
Expand Down
27 changes: 13 additions & 14 deletions .github/workflows/schedule.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Core
name: Core - Scheduled

on:
schedule:
Expand Down Expand Up @@ -26,26 +26,26 @@ jobs:
- uses: actions/checkout@v4
- name: Get build dependencies and arrange the environment
run: |
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
export BUILD_DEPS="libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libsdl1.2-dev libsdl2-dev libvulkan-dev zlib1g-dev"
./.github/workflows/scripts/ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }}
- name: Build and related stuff, backup binaries
run: |
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
export PATH="$(pwd)/.github/workflows/scripts:${PATH}"
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl-config\"" POSTFIX="-old"
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl-config\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl-config\""
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl2-config\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl2-config\"" POSTFIX="-old"
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1 SDL_CONFIG=\"sdl2-config\"" MAKE_PKG=1
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl-config\" POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 SDL_CONFIG=\"sdl2-config\" POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg
- name: Upload artifact
if: matrix.cc == 'GCC'
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-linux-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*.tar.gz

MSYS2:
Expand Down Expand Up @@ -89,18 +89,17 @@ jobs:
- name: Build and related stuff, backup binaries
run: |
export PATH="$(pwd)/.github/workflows/scripts:${PATH}"
export BUILD_CONFIG="ACCURATE_FPU=0 NEW_DYNAREC=0" POSTFIX="-old"
export CONFIG_OVERRIDE="ACCURATE_FPU=1 NEW_DYNAREC=1"
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
export BUILD_CONFIG="ACCURATE_FPU=1 NEW_DYNAREC=1"
unset POSTFIX
export CONFIG_OVERRIDE="ACCURATE_FPU=0 NEW_DYNAREC=0 POSTFIX=\"-old\""
ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
- name: Backup dependencies, etc...
run: |
./.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-msys2-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*

MSVC:
Expand Down Expand Up @@ -135,7 +134,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mupen64plus-core-msvc-${{ matrix.arch }}-g${{ env.G_REV }}
name: ${{ env.PKG_NAME }}
path: pkg/*

Nightly-build:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/scripts/ci_backup_mingw_deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ set -e +u

if [[ ${#} -ne 1 ]]; then exit 9; fi

export ENV_MSYS="$(echo "${1}" | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/)"
export DEPS="$(LC_ALL=C grep "${ENV_MSYS}" "pkg/ldd.log" | sort | cut -d ' ' -f1)"
export ENV_MSYS="$(echo "${1}" | tr [A-Z] [a-z])"
export DEPS="$(LC_ALL=C grep "${ENV_MSYS}" pkg/ldd.log | tr -s '\t' ' ' | sort | cut -d ' ' -f4 | tr '\\' '/' | tr -d ':')"

if [[ "${DEPS}" == "" ]]; then exit 0; fi

for LIB in ${DEPS}; do
echo ":: Copying ${LIB}"
cp "/${ENV_MSYS}/bin/${LIB}" pkg/
echo ":: Copying ${LIB##*/}"
cp "/${LIB}" pkg/
done

rm -f pkg/ldd.log
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scripts/ci_backup_msvc_deps.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ cd ..\mupen64plus-win32-deps
if errorlevel 1 exit /b 4
for %%D in (%DEPS%) do (
for /f "tokens=*" %%T in ('dir /b /s %%D ^| findstr "%ARCH%"') do (
if exist "%%T" copy "%%T" "%PKG%\"
if exist "%%T" xcopy "%%T" "%PKG%\"
if errorlevel 1 exit /b 3
)
)
Expand Down
40 changes: 25 additions & 15 deletions .github/workflows/scripts/ci_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@ set -e +u
if [[ ${#} -lt 2 ]]; then exit 9; fi

unset ARCH_ARG CC_ARG
export MULTILIB=0
export ENV_ARGS="$(echo "${*}" | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/)"
export MAKE_PKG=0 MULTILIB=0
export ENV_ARGS="$(echo "${*}" | tr [A-Z] [a-z])"

for ARG in ${ENV_ARGS}; do
case "${ARG}" in
clang )
export CC_ARG="Clang" CC="clang" CXX="clang++"
export CC_ARG="Clang" CC="clang${C_CLANG_SUFFIX}" CXX="clang++${C_CLANG_SUFFIX}"
;;
gcc )
export CC_ARG="GCC" CC="gcc" CXX="g++"
export CC_ARG="GCC" CC="gcc${C_GCC_SUFFIX}" CXX="g++${C_GCC_SUFFIX}"
;;
makepkg )
export MAKE_PKG=1
;;
multilib )
export MULTILIB=1
Expand All @@ -33,7 +36,7 @@ if [[ -z ${CC_ARG} ]]; then exit 7; fi
export REPO="${PWD##*/}"
if [[ "${REPO}" == "" ]]; then exit 6; fi

export BIN_OS="$(uname -s | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/)"
export BIN_OS="$(uname -s | tr [A-Z] [a-z])"
if [[ ! -z ${MSYSTEM} ]]; then export BIN_OS="msys2"; fi
export ENV_NAME="$(uname -s)"
export LDD="ldd"
Expand All @@ -48,47 +51,54 @@ if [[ "${ENV_NAME}" == *"Linux"* ]]; then
if [[ "${ARCH_ARG}" == "x86" ]]; then export PIC=1 PIE=1; fi
if [[ ${MULTILIB} -eq 0 ]]; then
if [[ "${CC_ARG}" == "GCC" ]]; then
if [[ "${ARCH_ARG}" == "x86" ]]; then export CC="i686-linux-gnu-gcc" CXX="i686-linux-gnu-g++"; fi
if [[ "${ARCH_ARG}" == "x86" ]]; then export CC="i686-linux-gnu-${CC}" CXX="i686-linux-gnu-${CXX}"; fi
fi
fi
fi

if [[ "${ENV_NAME}" == *"MINGW"* ]]; then
export INSTALL_OVERRIDE="PLUGINDIR=\"\" SHAREDIR=\"\" BINDIR=\"\" MANDIR=\"\" LIBDIR=\"\" APPSDIR=\"\" ICONSDIR=\"icons\" INCDIR=\"api\""
export LDD="ntldd"
export LDD="ntldd -R"
unset PKG_PATH
fi

export G_REV="$(git rev-parse --short HEAD)"
export PKG_NAME="${REPO}-${BIN_OS}-${ARCH_ARG}-g${G_REV}"
if [[ -f "${GITHUB_ENV}" ]]; then
set +e
grep "G_REV=${G_REV}" "${GITHUB_ENV}" > /dev/null
if [[ ${?} -ne 0 ]]; then echo "G_REV=${G_REV}" >> "${GITHUB_ENV}"; fi
grep "PKG_NAME=${PKG_NAME}" "${GITHUB_ENV}" > /dev/null
if [[ ${?} -ne 0 ]]; then echo "PKG_NAME=${PKG_NAME}" >> "${GITHUB_ENV}"; fi
set -e
fi

if [[ -z ${OPTFLAGS} ]]; then export OPTFLAGS="-O3 -flto ${CPU_TUNE}"; fi

echo ":: CC=\"${CC}\" CXX=\"${CXX}\" BITS=${BITS} ${CONFIG_OVERRIDE} ::"
echo ""
${CC} --version
echo ""

make CC="${CC}" CXX="${CXX}" BITS="${BITS}" ${BUILD_CONFIG} -C projects/unix clean
echo ""
make CC="${CC}" CXX="${CXX}" BITS="${BITS}" ${BUILD_CONFIG} -C projects/unix all -j4
make_clean () {
make CC="${CC}" CXX="${CXX}" BITS=${BITS} ${CONFIG_OVERRIDE} -C projects/unix clean
echo ""
}

make_clean
make CC="${CC}" CXX="${CXX}" BITS=${BITS} ${CONFIG_OVERRIDE} -C projects/unix all -j4
echo ""

if [[ ! -d pkg ]]; then
mkdir pkg
chmod -R 755 pkg
fi

pushd projects/unix > /dev/null
export ARTIFACT="$(find *mupen64plus* -type f 2> /dev/null | head -n 1)"
popd > /dev/null

make CC="${CC}" CXX="${CXX}" BITS=${BITS} ${CONFIG_OVERRIDE} -C projects/unix install ${INSTALL_OVERRIDE} DESTDIR="$(pwd)/pkg/"
echo ""
make CC="${CC}" CXX="${CXX}" BITS="${BITS}" ${BUILD_CONFIG} -C projects/unix install ${INSTALL_OVERRIDE} DESTDIR="$(pwd)/pkg/"
echo ""
make_clean

if [[ -z ${ARTIFACT} ]]; then
exit 5
Expand All @@ -99,7 +109,7 @@ else
${LDD} "${PKG_PATH}${ARTIFACT}" > ldd.log
cat ldd.log
echo ""
if [[ "${MAKE_PKG}" == "1" ]]; then tar --owner=0 --group=0 --mode='og-w' -czf "${REPO}-${BIN_OS}-${ARCH_ARG}-g${G_REV}.tar.gz" usr; fi
if [[ ${MAKE_PKG} -eq 1 ]]; then tar --owner=0 --group=0 --mode='og-w' -czf "${PKG_NAME}.tar.gz" usr; fi
fi

exit 0
11 changes: 6 additions & 5 deletions .github/workflows/scripts/ci_install_ubuntu_deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ set -e +u
if [[ ${#} -lt 2 ]]; then exit 9; fi

unset ARCH_DEP CC_DEP
export BUILD_DEPS_I386="crossbuild-essential-i386 libc6-i386"
export BUILD_DEPS_I386="crossbuild-essential-i386 g++${C_GCC_SUFFIX}-i686-linux-gnu gcc${C_GCC_SUFFIX}-i686-linux-gnu libc6-i386"
export HOTFIX_I386="libatomic1:i386 libgcc-s1:i386 libstdc++6:i386 ${HOTFIX_I386}"
export ENV_ARGS="$(echo "${*}" | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/)"
export ENV_ARGS="$(echo "${*}" | tr [A-Z] [a-z])"

for ARG in ${ENV_ARGS}; do
case "${ARG}" in
clang )
export CC_DEP="clang"
export CC_DEP="clang${C_CLANG_SUFFIX}"
;;
gcc )
export CC_DEP="g++ gcc"
export CC_DEP="g++${C_GCC_SUFFIX} gcc${C_GCC_SUFFIX}"
;;
multilib )
export BUILD_DEPS_I386="g++-multilib gcc-multilib libc6-dev-i386"
export BUILD_DEPS_I386="g++${C_GCC_SUFFIX}-multilib gcc${C_GCC_SUFFIX}-multilib libc6-dev-i386"
;;
x64 )
export ARCH_DEP="x64"
Expand All @@ -31,6 +31,7 @@ done
if [[ -z ${ARCH_DEP} ]]; then exit 8; fi
if [[ -z ${CC_DEP} ]]; then exit 7; fi

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
if [[ "${ARCH_DEP}" == "x86" ]]; then sudo dpkg --add-architecture i386; fi
sudo apt-get update
sudo apt-get -y install build-essential git nasm pkg-config ${CC_DEP} ${BUILD_DEPS}
Expand Down
23 changes: 14 additions & 9 deletions .github/workflows/scripts/ci_msvc_build.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,26 @@ set ARCH=
set CONF=Release
if "%*" == "" exit /b 8
for %%P in (%*) do (
if /i "%%P" == "x86" set ARCH=Win32
if /i "%%P" == "x64" set ARCH=x64
if /i "%%P" == "x86" set ARCH_ARG=x86& set ARCH=Win32
if /i "%%P" == "x64" set ARCH_ARG=x64& set ARCH=x64
if /i "%%P" == "newdyn" set CONF=New_Dynarec_Release
)

if not defined ARCH exit /b 7

for %%T in (.) do set REPO=%%~nxT
if not defined REPO exit /b 6

set ARTIFACT=
set FPROJ=
if not defined EXT set EXT=dll
if not defined TOOLSET set TOOLSET=v143

for /f "tokens=1" %%R in ('git rev-parse --short HEAD') do set G_REV=%%R
set PKG_NAME=%REPO%-msvc-%ARCH_ARG%-g%G_REV%
if exist "%GITHUB_ENV%" (
type "%GITHUB_ENV%" | findstr "G_REV=%G_REV%" >nul 2>&1
if errorlevel 1 echo G_REV=%G_REV%>> "%GITHUB_ENV%"
type "%GITHUB_ENV%" | findstr "PKG_NAME=%PKG_NAME%" >nul 2>&1
if errorlevel 1 echo PKG_NAME=%PKG_NAME%>> "%GITHUB_ENV%"
)

echo.
Expand All @@ -33,23 +38,23 @@ if not exist "..\mupen64plus-win32-deps\" git clone --depth 1 https://github.com
pushd projects\msvc\
for /f "tokens=*" %%F in ('dir /b *.vcxproj') do set FPROJ=%%F
popd
if not defined FPROJ exit /b 6
if not defined FPROJ exit /b 5

echo.
msbuild "projects\msvc\%FPROJ%" /p:Configuration=%CONF%;Platform=%ARCH%;PlatformToolset=%TOOLSET% /t:Rebuild
if errorlevel 1 exit /b 5
if errorlevel 1 exit /b 4
echo.

if exist "projects\msvc\%ARCH%\Release\mupen64plus.dll" ren "projects\msvc\%ARCH%\Release\mupen64plus.dll" mupen64plus-old.dll

pushd projects\msvc\%ARCH%\%CONF%\
for /f "tokens=*" %%S in ('dir /b mupen64plus*%EXT%') do set ARTIFACT=%%S
popd
if not defined ARTIFACT exit /b 4
if not defined ARTIFACT exit /b 3

md pkg 2>nul
copy "projects\msvc\%ARCH%\%CONF%\%ARTIFACT%" pkg\
if errorlevel 1 exit /b 3
xcopy "projects\msvc\%ARCH%\%CONF%\%ARTIFACT%" pkg\
if errorlevel 1 exit /b 2
dir "pkg\%ARTIFACT%"

exit /b 0
Loading

0 comments on commit bc0707d

Please sign in to comment.