mirror of
https://github.com/GXDE-OS/GXDE.git
synced 2026-06-22 07:46:37 +08:00
初步自动构建工程实现
This commit is contained in:
Executable
+199
@@ -0,0 +1,199 @@
|
|||||||
|
name: Building GXDE Testing Package
|
||||||
|
run-name: Building ${{ GITHUB.REPOSITORY }}
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
PASSWD:
|
||||||
|
required: true
|
||||||
|
USERS:
|
||||||
|
required: true
|
||||||
|
HOST:
|
||||||
|
required: true
|
||||||
|
UPATH:
|
||||||
|
required: true
|
||||||
|
UPROGRAM:
|
||||||
|
required: true
|
||||||
|
UPORT:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
REPOSITORY: https://github.com/GXDE-OS/GXDE
|
||||||
|
BOTTLEPATH: system-bottle
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
amd64:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Clone Repository To Get Script
|
||||||
|
run: |
|
||||||
|
git clone $REPOSITORY --depth=1
|
||||||
|
mv $(basename $REPOSITORY)/* . -v
|
||||||
|
mv $(basename $REPOSITORY)/.* . -v | true
|
||||||
|
|
||||||
|
- name: Configure Base System
|
||||||
|
run: |
|
||||||
|
bash .github/workflows/configure-building-enviroment-base-system.sh amd64 bookworm $REPOSITORY
|
||||||
|
|
||||||
|
- name: Building ${{ GITHUB.repository }}
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
|
||||||
|
|
||||||
|
- name: Remove Debug Package
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
|
||||||
|
|
||||||
|
- name: Pack tar
|
||||||
|
run: |
|
||||||
|
cd $BOTTLEPATH
|
||||||
|
sudo tar -cvf ../deb-$(date +%s).tar *.deb
|
||||||
|
|
||||||
|
- name: Push
|
||||||
|
env:
|
||||||
|
UPASSWD: ${{ secrets.PASSWD }}
|
||||||
|
UUSERS: ${{ secrets.USERS }}
|
||||||
|
UHOST: ${{ secrets.HOST }}
|
||||||
|
UPATH: ${{ secrets.UPATH }}
|
||||||
|
UPROGRAM: ${{ secrets.UPROGRAM }}
|
||||||
|
UPORT: ${{ secrets.UPORT }}
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install sshpass -y
|
||||||
|
mkdir -p ~/.ssh/
|
||||||
|
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
|
||||||
|
tarName=$(ls | grep .tar | head -n 1)
|
||||||
|
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
|
||||||
|
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
arm64:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Clone Repository To Get Script
|
||||||
|
run: |
|
||||||
|
git clone $REPOSITORY --depth=1
|
||||||
|
mv $(basename $REPOSITORY)/* . -v
|
||||||
|
mv $(basename $REPOSITORY)/.* . -v | true
|
||||||
|
|
||||||
|
- name: Configure Base System
|
||||||
|
run: |
|
||||||
|
bash .github/workflows/configure-building-enviroment-base-system.sh arm64 bookworm $REPOSITORY
|
||||||
|
|
||||||
|
- name: Building ${{ GITHUB.repository }}
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
|
||||||
|
|
||||||
|
- name: Remove Debug Package
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
|
||||||
|
|
||||||
|
- name: Pack tar
|
||||||
|
run: |
|
||||||
|
cd $BOTTLEPATH
|
||||||
|
sudo tar -cvf ../deb-$(date +%s).tar *.deb
|
||||||
|
|
||||||
|
- name: Push
|
||||||
|
env:
|
||||||
|
UPASSWD: ${{ secrets.PASSWD }}
|
||||||
|
UUSERS: ${{ secrets.USERS }}
|
||||||
|
UHOST: ${{ secrets.HOST }}
|
||||||
|
UPATH: ${{ secrets.UPATH }}
|
||||||
|
UPROGRAM: ${{ secrets.UPROGRAM }}
|
||||||
|
UPORT: ${{ secrets.UPORT }}
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install sshpass -y
|
||||||
|
mkdir -p ~/.ssh/
|
||||||
|
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
|
||||||
|
tarName=$(ls | grep .tar | head -n 1)
|
||||||
|
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
|
||||||
|
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
mips64:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Clone Repository To Get Script
|
||||||
|
run: |
|
||||||
|
git clone $REPOSITORY --depth=1
|
||||||
|
mv $(basename $REPOSITORY)/* . -v
|
||||||
|
mv $(basename $REPOSITORY)/.* . -v | true
|
||||||
|
|
||||||
|
- name: Configure Base System
|
||||||
|
run: |
|
||||||
|
bash .github/workflows/configure-building-enviroment-base-system.sh mips64el bookworm $REPOSITORY
|
||||||
|
|
||||||
|
- name: Building ${{ GITHUB.repository }}
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
|
||||||
|
|
||||||
|
- name: Remove Debug Package
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
|
||||||
|
|
||||||
|
- name: Pack tar
|
||||||
|
run: |
|
||||||
|
cd $BOTTLEPATH
|
||||||
|
sudo tar -cvf ../deb-$(date +%s).tar *.deb
|
||||||
|
|
||||||
|
- name: Push
|
||||||
|
env:
|
||||||
|
UPASSWD: ${{ secrets.PASSWD }}
|
||||||
|
UUSERS: ${{ secrets.USERS }}
|
||||||
|
UHOST: ${{ secrets.HOST }}
|
||||||
|
UPATH: ${{ secrets.UPATH }}
|
||||||
|
UPROGRAM: ${{ secrets.UPROGRAM }}
|
||||||
|
UPORT: ${{ secrets.UPORT }}
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install sshpass -y
|
||||||
|
mkdir -p ~/.ssh/
|
||||||
|
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
|
||||||
|
tarName=$(ls | grep .tar | head -n 1)
|
||||||
|
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
|
||||||
|
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
|
||||||
|
|
||||||
|
loong64:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Clone Repository To Get Script
|
||||||
|
run: |
|
||||||
|
git clone $REPOSITORY --depth=1
|
||||||
|
mv $(basename $REPOSITORY)/* . -v
|
||||||
|
mv $(basename $REPOSITORY)/.* . -v | true
|
||||||
|
|
||||||
|
- name: Configure Base System
|
||||||
|
run: |
|
||||||
|
bash .github/workflows/configure-building-enviroment-base-system.sh loong64 unstable $REPOSITORY https://mirror.sjtu.edu.cn/debian-ports/
|
||||||
|
|
||||||
|
- name: Building ${{ GITHUB.repository }}
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh dpkg-buildpackage -b
|
||||||
|
|
||||||
|
- name: Remove Debug Package
|
||||||
|
run: |
|
||||||
|
env gitPath=$(basename $REPOSITORY) bash .github/workflows/run-command-in-chroot.sh rm -rfv ../*dbg*.deb
|
||||||
|
|
||||||
|
- name: Pack tar
|
||||||
|
run: |
|
||||||
|
cd $BOTTLEPATH
|
||||||
|
sudo tar -cvf ../deb-$(date +%s).tar *.deb
|
||||||
|
|
||||||
|
- name: Push
|
||||||
|
env:
|
||||||
|
UPASSWD: ${{ secrets.PASSWD }}
|
||||||
|
UUSERS: ${{ secrets.USERS }}
|
||||||
|
UHOST: ${{ secrets.HOST }}
|
||||||
|
UPATH: ${{ secrets.UPATH }}
|
||||||
|
UPROGRAM: ${{ secrets.UPROGRAM }}
|
||||||
|
UPORT: ${{ secrets.UPORT }}
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install sshpass -y
|
||||||
|
mkdir -p ~/.ssh/
|
||||||
|
ssh-keyscan -p $UPORT -H $UHOST >> ~/.ssh/known_hosts
|
||||||
|
tarName=$(ls | grep .tar | head -n 1)
|
||||||
|
sshpass -p "$UPASSWD" rsync -e "ssh -p $UPORT" $tarName $UUSERS@$UHOST:$UPATH
|
||||||
|
sshpass -p "$UPASSWD" ssh $UUSERS@$UHOST -p $UPORT $UPROGRAM $UPATH/$tarName > /dev/null
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# $1=arm64
|
||||||
|
# $2=buster
|
||||||
|
|
||||||
|
function getd23debootstrap() {
|
||||||
|
git clone https://github.com/deepin-community/debootstrap --depth=1
|
||||||
|
cd debootstrap
|
||||||
|
sudo apt build-dep . -y
|
||||||
|
dpkg-buildpackage -b
|
||||||
|
sudo apt install ../*.deb -y --allow-downgrades
|
||||||
|
cd ..
|
||||||
|
sudo cp deepin-archive-camel-keyring.gpg /etc/apt/trusted.gpg.d/deepin-archive-camel-keyring.gpg -rv
|
||||||
|
}
|
||||||
|
function useDebianPort() {
|
||||||
|
sudo apt install debian-ports-archive-keyring -y
|
||||||
|
sudo cp /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg -v
|
||||||
|
}
|
||||||
|
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install debootstrap qemu-user-static git -y
|
||||||
|
bottlePath=./system-bottle
|
||||||
|
if [[ $2 == "beige" ]]; then
|
||||||
|
getd23debootstrap
|
||||||
|
else
|
||||||
|
if [[ $1 == "loong64" ]]; then
|
||||||
|
useDebianPort
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
sudo debootstrap --arch=$1 $2 $bottlePath $4
|
||||||
|
sudo bash .github/workflows/pardus-chroot $bottlePath
|
||||||
|
# 配置 git
|
||||||
|
sudo chroot $bottlePath apt update
|
||||||
|
sudo chroot $bottlePath apt install git -y
|
||||||
|
sudo chroot $bottlePath git clone $3 --depth=1
|
||||||
|
# 修改版本号
|
||||||
|
#sudo sed -i "s/) UNRELEASED; urgency=medium/~$2) UNRELEASED; urgency=medium/g" $bottlePath/deep-wine-runner-qemu-system/debian/changelog
|
||||||
|
env gitPath=$(basename $3) bash .github/workflows/run-command-in-chroot.sh .github/workflows/configure-building-enviroment.sh
|
||||||
|
exit 0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
|
||||||
|
brew install libffi gettext glib pkg-config autoconf automake pixman ninja
|
||||||
|
exit 0
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate
|
||||||
|
#mkdir -p /etc/apt/sources.list.d/
|
||||||
|
#cp /etc/apt/sources.list /etc/apt/sources.list.d/sources.list
|
||||||
|
#sed -i "s/deb /deb-src /g" /etc/apt/sources.list.d/sources.list
|
||||||
|
#cat /etc/apt/sources.list
|
||||||
|
#cat /etc/apt/sources.list.d/sources.list
|
||||||
|
# 判断系统版本
|
||||||
|
#cat /etc/issue | grep 12
|
||||||
|
#if [[ $? == 0 ]]; then
|
||||||
|
# echo "deb-src http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list.d/debian-sources.list
|
||||||
|
#fi
|
||||||
|
#cat /etc/issue | grep sid
|
||||||
|
#if [[ $? == 0 ]]; then
|
||||||
|
# echo "deb-src http://deb.debian.org/debian sid main" > /etc/apt/sources.list.d/debian-sources.list
|
||||||
|
#fi
|
||||||
|
# 写入 GXDE 源
|
||||||
|
echo "deb [trusted=true] https://repo-gxde.gfdgdxi.top/gxde-os/tianlu ./" >> /etc/apt/sources.list.d/gxde-os.list
|
||||||
|
echo "deb [trusted=true] https://repo-gxde.gfdgdxi.top/gxde-os/bixie ./" >> /etc/apt/sources.list.d/gxde-os.list
|
||||||
|
if [[ $1 == "loong64" ]]; then
|
||||||
|
echo "deb [trusted=true] http://mirror.sjtu.edu.cn/debian-ports unreleased main" > /etc/apt/sources.list.d/debian-unreleased.list
|
||||||
|
fi
|
||||||
|
apt update
|
||||||
|
apt install dpkg-dev sudo neofetch -y
|
||||||
|
neofetch
|
||||||
|
#if [[ `arch` != "x86_64" ]]; then
|
||||||
|
# apt source qemu
|
||||||
|
# cd qemu-*/
|
||||||
|
# sed -i "s/gcc-s390x-linux-gnu,//g" debian/control
|
||||||
|
# sed -i "s/gcc-alpha-linux-gnu,//g" debian/control
|
||||||
|
# sed -i "s/gcc-sparc64-linux-gnu,//g" debian/control
|
||||||
|
# sed -i "s/gcc-powerpc64-linux-gnu,//g" debian/control
|
||||||
|
# sed -i "s/gcc-hppa-linux-gnu,//g" debian/control
|
||||||
|
# sed -i "s/gcc-riscv64-linux-gnu,//g" debian/control
|
||||||
|
# apt build-dep . -y
|
||||||
|
# cd ..
|
||||||
|
#fi
|
||||||
|
#apt build-dep qemu -y
|
||||||
|
# 如果是 Debian10 就需要安装 Python3 的依赖
|
||||||
|
#apt build-dep python3.7 -y
|
||||||
|
apt build-dep . -y
|
||||||
|
exit 0
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
CPU_CORES=$(($(grep -c processor < /proc/cpuinfo)*2))
|
||||||
|
make build-python -j$CPU_CORES
|
||||||
|
make install-to-qemu-python -j$CPU_CORES
|
||||||
|
exit 0
|
||||||
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set +e
|
||||||
|
DESTDIR="$1"
|
||||||
|
if [[ $UID -ne 0 ]] ; then
|
||||||
|
echo "You must be root!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -b "$1" ]] ; then
|
||||||
|
DESTDIR=$(mktemp -d)
|
||||||
|
mount "$1" "$DESTDIR"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
if [[ "$DESTDIR" == "" || ! -f "$DESTDIR/etc/os-release" ]] ; then
|
||||||
|
echo "Target filesystem is invalid: $DESTDIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mount --bind /dev "$DESTDIR/dev"
|
||||||
|
mount --bind /run "$DESTDIR/run"
|
||||||
|
mount --bind /media "$DESTDIR/media"
|
||||||
|
mount -t devpts devpts "$DESTDIR/dev/pts"
|
||||||
|
mount -t sysfs sysfs "$DESTDIR/sys"
|
||||||
|
mount -t proc proc "$DESTDIR/proc"
|
||||||
|
mount -t tmpfs tmpfs "$DESTDIR/dev/shm"
|
||||||
|
mount --bind /tmp "$DESTDIR/tmp"
|
||||||
|
#if [[ -d /sys/firmware/efi/ ]] ; then
|
||||||
|
# mount -t efivarfs efivarfs "$DESTDIR/sys/firmware/efi/efivars"
|
||||||
|
#fi
|
||||||
|
#cat /etc/resolv.conf > $DESTDIR/etc/resolv.conf
|
||||||
|
#SHELL=/bin/bash unshare --fork --pid chroot "$DESTDIR" "$@"
|
||||||
|
#exit
|
||||||
|
# 下面的因为有问题,不使用
|
||||||
|
#if [[ -d /sys/firmware/efi/ ]] ; then
|
||||||
|
# while umount "$DESTDIR/sys/firmware/efi/efivars" 2>/dev/null ; do : ;done
|
||||||
|
#fi
|
||||||
|
#for dir in dev/pts dev/shm dev sys proc run media ; do
|
||||||
|
# while umount "$DESTDIR/$dir" 2>/dev/null; do : ;done
|
||||||
|
#done
|
||||||
|
#umount -lf "$DESTDIR" 2>/dev/null
|
||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
bottlePath=./system-bottle
|
||||||
|
#gitPath=
|
||||||
|
sudo chroot $bottlePath bash -c "cd $gitPath ; $*"
|
||||||
Reference in New Issue
Block a user