CI/CD: Used kolibri-toolchain and fuse. Added es_ES build #125

Merged
Sweetbread merged 3 commits from tup-fuse into main 2025-03-10 21:36:19 +01:00

View File

@@ -4,33 +4,26 @@
name: 'Build system' name: 'Build system'
on: on:
push:
branches:
- 'main'
pull_request: pull_request:
branches: branches:
- '**' - 'main'
jobs: jobs:
codestyle: codestyle:
name: "Check kernel codestyle" name: "Check kernel codestyle"
runs-on: ubuntu-latest runs-on: kolibri-toolchain
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup dependencies
run: |
sudo apt update && sudo apt install perl -y
- name: Check codestyle - name: Check codestyle
run: | run: |
find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \; find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \;
build: build:
name: 'Build' name: 'Build'
runs-on: ubuntu-latest runs-on: kolibri-toolchain
steps: steps:
- name: Checkout - name: Checkout
@@ -38,29 +31,28 @@ jobs:
- name: Get describe - name: Get describe
id: vars id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITEA_OUTPUT
- name: Setup dependencies - name: Get toolchain hash
id: toolchain-hash
run: | run: |
cd /tmp a=$(find ${{ gitea.workspace }}/programs/develop/cmm/ -type f -print0 | sort -z | xargs -0 sha1sum)
sudo apt update b=$(sha1sum ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc)
sudo apt install p7zip-full fasm nasm make gcc gcc-multilib g++ g++-multilib mtools mkisofs parted gdisk -y c=$(find ${{ gitea.workspace }}/programs/develop/objconv/ -type f -print0 | sort -z | xargs -0 sha1sum)
wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tup/tup_0.8-1_amd64.deb d=$(find ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
sudo apt install ./tup_0.8-1_amd64.deb -y e=$(find ${{ gitea.workspace }}/programs/other/kpack/linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
f=$(find ${{ gitea.workspace }}/programs/develop/clink/ -type f -print0 | sort -z | xargs -0 sha1sum)
echo hash=$(echo $a $b $c $d $e $f | sha1sum | awk '{print $1}') >> $GITEA_OUTPUT
- name: Install GCC toolchain - name: Restore toolchain
run: | id: cache-toolchain
chmod +x ${{ gitea.workspace }}/.gitea/workflows/install_kgcc uses: actions/cache/restore@v4
${{ gitea.workspace }}/.gitea/workflows/install_kgcc with:
path: /home/autobuild
- name: Install JWasm key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
run: |
cd /tmp
wget -O JWasm211bl.zip https://sourceforge.net/projects/jwasm/files/JWasm%20Linux%20binary/JWasm211bl.zip/download
unzip JWasm211bl.zip "jwasm" -d /home/autobuild/tools/win32/bin/
chmod +x /home/autobuild/tools/win32/bin/jwasm
- name: Build and install C-- - name: Build and install C--
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cd ${{ gitea.workspace }}/programs/develop/cmm/ cd ${{ gitea.workspace }}/programs/develop/cmm/
make -f Makefile.lin32 make -f Makefile.lin32
@@ -70,105 +62,152 @@ jobs:
make -f Makefile.lin32 clean make -f Makefile.lin32 clean
- name: Install TCC - name: Install TCC
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc
chmod +x /home/autobuild/tools/win32/bin/kos32-tcc chmod +x /home/autobuild/tools/win32/bin/kos32-tcc
- name: Compile objconv - name: Build and install objconv
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cd ${{ gitea.workspace }}/programs/develop/objconv/ cd ${{ gitea.workspace }}/programs/develop/objconv/
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
chmod +x /home/autobuild/tools/win32/bin/objconv chmod +x /home/autobuild/tools/win32/bin/objconv
- name: Compile kerpack - name: Build and install kerpack
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/ cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
make make
chmod +x kerpack chmod +x kerpack
mv kerpack /home/autobuild/tools/win32/bin/. mv kerpack /home/autobuild/tools/win32/bin/.
- name: Compile kpack - name: Build and install kpack
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cd ${{ gitea.workspace }}/programs/other/kpack/linux/ cd ${{ gitea.workspace }}/programs/other/kpack/linux/
bash build.sh bash build.sh
chmod +x kpack chmod +x kpack
mv kpack /home/autobuild/tools/win32/bin/. mv kpack /home/autobuild/tools/win32/bin/.
- name: Compile clink - name: Build and install clink
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: | run: |
cd ${{ github.workspace }}/programs/develop/clink cd ${{ gitea.workspace }}/programs/develop/clink
gcc main.c -o clink gcc main.c -o clink
chmod a+x clink chmod a+x clink
mv clink /home/autobuild/tools/win32/bin/clink mv clink /home/autobuild/tools/win32/bin/clink
- name: Prepare cache folder
run: |
rm /home/autobuild
mv /root/autobuild /home/autobuild
if: steps.cache-toolchain.outputs.cache-hit != 'true'
- name: Save toolchain
if: steps.cache-toolchain.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: /home/autobuild
key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
- name: Configure tup - name: Configure tup
run: | run: |
cd ${{ gitea.workspace }} cd ${{ gitea.workspace }}
export ROOT=${{ gitea.workspace }}
cd $ROOT
echo "CONFIG_KPACK_CMD=&& kpack --nologo %o" > tup.config export ROOT=${{ gitea.workspace }}
echo "CONFIG_KERPACK_CMD=&& kerpack %o" >> tup.config echo "CONFIG_KPACK_CMD= && kpack --nologo %o" | tee en_US.config ru_RU.config es_ES.config
echo "CONFIG_PESTRIP_CMD=&& EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" >> tup.config echo "CONFIG_KERPACK_CMD= && kerpack %o" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_NO_MSVC=full" >> tup.config echo "CONFIG_PESTRIP_CMD= && EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_INSERT_REVISION_ID=1" >> tup.config echo "CONFIG_NO_MSVC=full" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_INSERT_REVISION_ID=1" | tee -a en_US.config ru_RU.config es_ES.config
tup -v tup -v
tup init tup init
- name: Build KolibriOS (en_US) # Configure en_US
echo "CONFIG_LANG=en_US" >> en_US.config
echo "CONFIG_BUILD_TYPE=en_US" >> en_US.config
tup variant en_US.config
# Configure ru_RU
echo "CONFIG_LANG=ru_RU" >> ru_RU.config
echo "CONFIG_BUILD_TYPE=ru_RU" >> ru_RU.config
tup variant ru_RU.config
# Configure es_ES
echo "CONFIG_LANG=es_ES" >> es_ES.config
echo "CONFIG_BUILD_TYPE=es_ES" >> es_ES.config
tup variant es_ES.config
# -------------------------- Build en_US ------------------------- #
- name: (en_US) Build KolibriOS
run: | run: |
cp tup.config tup.config.en_US
echo "CONFIG_LANG=en_US" >> tup.config.en_US
echo "CONFIG_BUILD_TYPE=en_US" >> tup.config.en_US
export PATH=/home/autobuild/tools/win32/bin:$PATH export PATH=/home/autobuild/tools/win32/bin:$PATH
tup generate --config tup.config.en_US build-en_US.sh tup build-en_US
./build-en_US.sh
- name: Upload floppy image (en_US) - name: (en_US) Upload floppy image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img
path: data/kolibri.img path: build-en_US/data/kolibri.img
- name: Upload CD image (en_US) - name: (en_US) Upload CD image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso
path: data/kolibri.iso path: build-en_US/data/kolibri.iso
- name: Upload raw image (en_US) - name: (en_US) Upload raw image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw
path: data/kolibri.raw path: build-en_US/data/kolibri.raw
- name: Build KolibriOS (ru_RU) # -------------------------- Build ru_RU ------------------------- #
- name: (ru_RU) Build KolibriOS
run: | run: |
git clean -d -x -f -e tup.config
cp tup.config tup.config.ru_RU
echo "CONFIG_LANG=ru_RU" >> tup.config.ru_RU
echo "CONFIG_BUILD_TYPE=ru_RU" >> tup.config.ru_RU
export PATH=/home/autobuild/tools/win32/bin:$PATH export PATH=/home/autobuild/tools/win32/bin:$PATH
tup generate --config tup.config.ru_RU build-ru_RU.sh tup build-ru_RU
./build-ru_RU.sh
- name: Upload floppy image (ru_RU) - name: (ru_RU) Upload floppy image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img
path: data/kolibri.img path: build-ru_RU/data/kolibri.img
- name: Upload CD image (ru_RU) - name: (ru_RU) Upload CD image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso
path: data/kolibri.iso path: build-ru_RU/data/kolibri.iso
- name: Upload raw image (ru_RU) - name: (ru_RU) Upload raw image
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw
path: data/kolibri.raw path: build-ru_RU/data/kolibri.raw
# -------------------------- Build es_ES ------------------------- #
- name: (es_ES) Build KolibriOS
run: |
export PATH=/home/autobuild/tools/win32/bin:$PATH
tup build-es_ES
- name: (es_ES) Upload floppy image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.img
path: build-es_ES/data/kolibri.img
- name: (es_ES) Upload CD image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.iso
path: build-es_ES/data/kolibri.iso
- name: (es_ES) Upload raw image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.raw
path: build-es_ES/data/kolibri.raw