Added basic CI-CD (en_US and ru_RU) #112
174
.gitea/workflows/build.yaml
Normal file
174
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
# SPDX-FileCopyrightText: 2025 KolibriOS team
|
||||||
|
|
||||||
|
name: 'Build system'
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
codestyle:
|
||||||
|
name: "Check kernel codestyle"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt update && sudo apt install perl -y
|
||||||
|
|
||||||
|
- name: Check codestyle
|
||||||
|
run: |
|
||||||
|
find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \;
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: 'Build'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get describe
|
||||||
|
id: vars
|
||||||
|
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Setup dependencies
|
||||||
|
run: |
|
||||||
|
cd /tmp
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install p7zip-full fasm nasm make gcc gcc-multilib g++ g++-multilib mtools mkisofs parted gdisk -y
|
||||||
|
wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tup/tup_0.8-1_amd64.deb
|
||||||
|
sudo apt install ./tup_0.8-1_amd64.deb -y
|
||||||
|
|
||||||
|
- name: Install GCC toolchain
|
||||||
|
run: |
|
||||||
|
chmod +x ${{ gitea.workspace }}/.gitea/workflows/install_kgcc
|
||||||
|
${{ gitea.workspace }}/.gitea/workflows/install_kgcc
|
||||||
|
|
||||||
|
- name: Install JWasm
|
||||||
|
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--
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}/programs/develop/cmm/
|
||||||
|
make -f Makefile.lin32
|
||||||
|
chmod +x c--
|
||||||
|
mv c-- /home/autobuild/tools/win32/bin/c--
|
||||||
|
cp ${{ gitea.workspace }}/programs/cmm/c--/c--.ini /home/autobuild/tools/win32/bin/c--.ini
|
||||||
|
make -f Makefile.lin32 clean
|
||||||
|
|
||||||
|
- name: Install TCC
|
||||||
|
run: |
|
||||||
|
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
|
||||||
|
|
||||||
|
- name: Compile objconv
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}/programs/develop/objconv/
|
||||||
|
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
|
||||||
|
chmod +x /home/autobuild/tools/win32/bin/objconv
|
||||||
|
|
||||||
|
- name: Compile kerpack
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
|
||||||
|
make
|
||||||
|
chmod +x kerpack
|
||||||
|
mv kerpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
|
- name: Compile kpack
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}/programs/other/kpack/linux/
|
||||||
|
bash build.sh
|
||||||
|
chmod +x kpack
|
||||||
|
mv kpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
|
- name: Compile clink
|
||||||
|
run: |
|
||||||
|
cd ${{ github.workspace }}/programs/develop/clink
|
||||||
|
gcc main.c -o clink
|
||||||
|
chmod a+x clink
|
||||||
|
mv clink /home/autobuild/tools/win32/bin/clink
|
||||||
|
|
||||||
|
- name: Configure tup
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}
|
||||||
|
export ROOT=${{ gitea.workspace }}
|
||||||
|
cd $ROOT
|
||||||
|
|
||||||
|
echo "CONFIG_KPACK_CMD=&& kpack --nologo %o" > tup.config
|
||||||
|
echo "CONFIG_KERPACK_CMD=&& kerpack %o" >> tup.config
|
||||||
|
echo "CONFIG_PESTRIP_CMD=&& EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" >> tup.config
|
||||||
|
echo "CONFIG_NO_MSVC=full" >> tup.config
|
||||||
|
echo "CONFIG_INSERT_REVISION_ID=1" >> tup.config
|
||||||
|
|
||||||
|
tup -v
|
||||||
|
tup init
|
||||||
|
|
||||||
|
- name: Build KolibriOS (en_US)
|
||||||
|
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
|
||||||
|
tup generate --config tup.config.en_US build-en_US.sh
|
||||||
|
./build-en_US.sh
|
||||||
|
|
||||||
|
- name: Upload floppy image (en_US)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img
|
||||||
|
path: data/kolibri.img
|
||||||
|
|
||||||
|
- name: Upload CD image (en_US)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso
|
||||||
|
path: data/kolibri.iso
|
||||||
|
|
||||||
|
- name: Upload raw image (en_US)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw
|
||||||
|
path: data/kolibri.raw
|
||||||
|
|
||||||
|
- name: Build KolibriOS (ru_RU)
|
||||||
|
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
|
||||||
|
tup generate --config tup.config.ru_RU build-ru_RU.sh
|
||||||
|
./build-ru_RU.sh
|
||||||
|
|
||||||
|
- name: Upload floppy image (ru_RU)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img
|
||||||
|
path: data/kolibri.img
|
||||||
|
|
||||||
|
- name: Upload CD image (ru_RU)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso
|
||||||
|
path: data/kolibri.iso
|
||||||
|
|
||||||
|
- name: Upload raw image (ru_RU)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw
|
||||||
|
path: data/kolibri.raw
|
54
.gitea/workflows/checker.pl
Normal file
54
.gitea/workflows/checker.pl
Normal file
File diff suppressed because one or more lines are too long
82
.gitea/workflows/install_kgcc
Normal file
82
.gitea/workflows/install_kgcc
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
# SPDX-FileCopyrightText: 2025 KolibriOS Team
|
||||||
|
|
||||||
|
# Written by mxlgv (Maxim Logaev)
|
||||||
|
# Installation steps described by maxcodehack (Maxim Kuzmitsky)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
print_msg(){
|
||||||
|
echo -e "\e[34m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_ok(){
|
||||||
|
echo -e "\e[32m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_err(){
|
||||||
|
echo -e "\e[31m$1\e[0m"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
check_utils(){
|
||||||
|
printf "%s: " $1
|
||||||
|
if command -v $1 &> /dev/null
|
||||||
|
then
|
||||||
|
print_ok "ok\r"
|
||||||
|
else
|
||||||
|
print_err "no\r"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_msg "Checking utilities..."
|
||||||
|
|
||||||
|
check_utils wget
|
||||||
|
check_utils 7z
|
||||||
|
|
||||||
|
print_msg "Create the /home/autobuild folder..."
|
||||||
|
sudo rm -rf ~/autobuild /home/autobuild
|
||||||
|
mkdir -p ~/autobuild/tools
|
||||||
|
sudo ln -sf ~/autobuild /home/autobuild
|
||||||
|
print_ok "Successfully!"
|
||||||
|
|
||||||
|
print_msg "Download the kos32-gcc toolchain..."
|
||||||
|
wget http://ftp.kolibrios.org/users/Serge/new/Toolchain/x86_64-linux-kos32-5.4.0.7z -O ~/autobuild/tools/kos32-toolchain.7z
|
||||||
|
print_ok "Successfully!"
|
||||||
|
|
||||||
|
print_msg "Extracting files ..."
|
||||||
|
cd ~/autobuild/tools/
|
||||||
|
7z x -y kos32-toolchain.7z
|
||||||
|
rm -rf kos32-toolchain.7z
|
||||||
|
print_ok "Successfully!"
|
||||||
|
|
||||||
|
print_msg "Downloading libisl..."
|
||||||
|
cd /tmp
|
||||||
|
sudo wget http://board.kolibrios.org/download/file.php?id=8301libisl.so.10.2.2.7z -O /tmp/libisl.so.10.2.2.7z
|
||||||
|
sudo 7z x -y libisl.so.10.2.2.7z
|
||||||
|
|
||||||
|
if ! [ -d /usr/lib/x86_64-linux-gnu/ ]; then
|
||||||
|
sudo mkdir -p /usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_msg "Fixing libisl..."
|
||||||
|
sudo mv /tmp/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2
|
||||||
|
sudo ln -sf /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10
|
||||||
|
sudo ln -sf /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/libisl.so.10
|
||||||
|
sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10
|
||||||
|
sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2
|
||||||
|
print_ok "Successfully!"
|
||||||
|
|
||||||
|
print_msg "Fixing libmpfr..."
|
||||||
|
sudo ln -sf /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
|
||||||
|
sudo ln -sf /usr/lib/libmpfr.so.6 /usr/lib/libmpfr.so.4
|
||||||
|
print_ok "Successfully!"
|
||||||
|
|
||||||
|
if ! grep -q 'export PATH=$PATH:/home/autobuild/tools/win32/bin' ~/.bashrc; then
|
||||||
|
export PATH=$PATH:/home/autobuild/tools/win32/bin
|
||||||
|
print_msg "Adding '/home/autobuild/tools/win32/bin' to '~/.bashrc'"
|
||||||
|
echo 'export PATH=$PATH:/home/autobuild/tools/win32/bin' >> ~/.bashrc
|
||||||
|
fi
|
||||||
|
print_ok "Installation was successful!"
|
@@ -100,5 +100,4 @@ compile_gcc(MBEDTLS_SRC);
|
|||||||
table.insert(OBJS,"mbedtls_export.o");
|
table.insert(OBJS,"mbedtls_export.o");
|
||||||
table.insert(OBJS,"mbedtls_init.o");
|
table.insert(OBJS,"mbedtls_init.o");
|
||||||
|
|
||||||
tup.rule(OBJS, "clink -o %o %f" .. " && kos32-strip %o --strip-unneeded " .. tup.getconfig("KPACK_CMD"), "mbedtls.obj");
|
tup.rule(OBJS, "clink -o %o %f" .. " && strip %o --strip-unneeded " .. tup.getconfig("KPACK_CMD"), "mbedtls.obj");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user