From 2da86f0aa2f0451124545bb83e7daa1291253438 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Fri, 30 Aug 2024 16:16:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E8=87=AA=E5=8A=A8=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=B7=A5=E7=A8=8B=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/building-deb.yml | 199 ++++++++++++++++++ ...nfigure-building-enviroment-base-system.sh | 38 ++++ .../configure-building-enviroment-mac.sh | 4 + .../configure-building-enviroment.sh | 42 ++++ .github/workflows/configure-python3.sh | 5 + .github/workflows/pardus-chroot | 38 ++++ .github/workflows/run-command-in-chroot.sh | 4 + 7 files changed, 330 insertions(+) create mode 100755 .github/workflows/building-deb.yml create mode 100755 .github/workflows/configure-building-enviroment-base-system.sh create mode 100755 .github/workflows/configure-building-enviroment-mac.sh create mode 100755 .github/workflows/configure-building-enviroment.sh create mode 100755 .github/workflows/configure-python3.sh create mode 100755 .github/workflows/pardus-chroot create mode 100755 .github/workflows/run-command-in-chroot.sh diff --git a/.github/workflows/building-deb.yml b/.github/workflows/building-deb.yml new file mode 100755 index 0000000..a76e375 --- /dev/null +++ b/.github/workflows/building-deb.yml @@ -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 + \ No newline at end of file diff --git a/.github/workflows/configure-building-enviroment-base-system.sh b/.github/workflows/configure-building-enviroment-base-system.sh new file mode 100755 index 0000000..8bbd2c2 --- /dev/null +++ b/.github/workflows/configure-building-enviroment-base-system.sh @@ -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 \ No newline at end of file diff --git a/.github/workflows/configure-building-enviroment-mac.sh b/.github/workflows/configure-building-enviroment-mac.sh new file mode 100755 index 0000000..53e1958 --- /dev/null +++ b/.github/workflows/configure-building-enviroment-mac.sh @@ -0,0 +1,4 @@ +#!/bin/bash +export DEBIAN_FRONTEND=noninteractive # 防止卡 tzdate +brew install libffi gettext glib pkg-config autoconf automake pixman ninja +exit 0 \ No newline at end of file diff --git a/.github/workflows/configure-building-enviroment.sh b/.github/workflows/configure-building-enviroment.sh new file mode 100755 index 0000000..a5a1f87 --- /dev/null +++ b/.github/workflows/configure-building-enviroment.sh @@ -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 \ No newline at end of file diff --git a/.github/workflows/configure-python3.sh b/.github/workflows/configure-python3.sh new file mode 100755 index 0000000..12394d0 --- /dev/null +++ b/.github/workflows/configure-python3.sh @@ -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 \ No newline at end of file diff --git a/.github/workflows/pardus-chroot b/.github/workflows/pardus-chroot new file mode 100755 index 0000000..0800cbf --- /dev/null +++ b/.github/workflows/pardus-chroot @@ -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 diff --git a/.github/workflows/run-command-in-chroot.sh b/.github/workflows/run-command-in-chroot.sh new file mode 100755 index 0000000..ba8cadc --- /dev/null +++ b/.github/workflows/run-command-in-chroot.sh @@ -0,0 +1,4 @@ +#!/bin/bash +bottlePath=./system-bottle +#gitPath= +sudo chroot $bottlePath bash -c "cd $gitPath ; $*" \ No newline at end of file