diff --git a/.github/workflows/busybox b/.github/workflows/busybox new file mode 100755 index 00000000000000..56b151fcfe0ac6 Binary files /dev/null and b/.github/workflows/busybox differ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000000..93992cb165045e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,109 @@ +on: + push: + branches: + - '**' + pull_request: + branches: + - master + +jobs: + tests: + runs-on: ${{ matrix.runs_on }} + strategy: + fail-fast: false + matrix: + include: + - displayTargetName: ubuntu-22.04 + os: unix + runs_on: ubuntu-22.04 + shell: bash + defconfig: defconfig + - displayTargetName: ubuntu-22.04 (nommu) + os: unix + runs_on: ubuntu-22.04 + shell: bash + defconfig: x86_64_nommu_defconfig + timeout-minutes: 100 + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + USE_CCACHE: 1 + + defaults: + run: + shell: ${{ matrix.shell }} + + steps: + - name: Set env + shell: bash + run: | + echo "/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin" >> $GITHUB_PATH + echo "export PATH=/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin:$PATH" >> $HOME/.bashrc + + - name: Checkout + uses: actions/checkout@v4 + - name: Run a multi-line script + shell: 'script -q -e -c "bash {0}"' + run: | + perl -E 'say "Is STDOUT a TTY?: ", -t STDOUT ? "yes" : "no"' + - uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ runner.os }}-${{ matrix.defconfig }}-ccache-build-${{ github.sha }} + restore-keys: ${{ runner.os }}-${{ matrix.defconfig }}-ccache-build- + - name: Install packages + if: runner.os == 'Linux' + run: | + sudo apt update -y + sudo apt install -y ccache libseccomp-dev + - name: Build + run: | + make ARCH=um ${{ matrix.defconfig }} + make -j8 ARCH=um + - name: Log in to docker.io + uses: docker/login-action@v3.2.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: image for test + run: | + container_id=$(docker create kollerr/alpine-test:latest) + docker export $container_id > alpine.tar + docker rm $container_id + mnt=$(mktemp -d) + dd if=/dev/zero of=alpine.ext4 bs=1 count=0 seek=1G + sudo chmod og+wr "alpine.ext4" + yes 2>/dev/null | mkfs.ext4 "alpine.ext4" || true + sudo mount "alpine.ext4" $mnt + sudo tar -xf alpine.tar -C $mnt + + sudo mknod -m 666 $mnt/dev/null c 1 3 + sudo mknod -m 666 $mnt/dev/zero c 1 5 + sudo mknod -m 666 $mnt/dev/ptmx c 5 2 + sudo mknod -m 666 $mnt/dev/tty c 5 0 + sudo mknod -m 444 $mnt/dev/random c 1 8 + sudo mknod -m 444 $mnt/dev/urandom c 1 9 + + sudo cp .github/workflows/busybox $mnt/bin/busybox + sudo cp .github/workflows/init.sh $mnt/ + sudo umount $mnt + - name: Tests + run: | + sudo sh -c "echo 0 > /proc/sys/vm/mmap_min_addr" + ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=8 ssl=pty con0=fd:0,fd:1 con=pts init=/init.sh uname -a || true + #- name: Setup tmate session + # uses: mxschmitt/action-tmate@v3 + + checkpatch: + runs-on: ubuntu-22.04 + name: checkpatch + steps: + - name: Checkout + with: + fetch-depth: 0 + uses: actions/checkout@v4 + - name: Install pip dependencies + run: sudo pip install ply GitPython + - name: Check coding style + run: | + git format-patch -o p1 v6.10..HEAD~1 + for f in `ls p1/*` ; do cat $f | scripts/checkpatch.pl --summary-file --ignore COMMIT_MESSAGE --ignore FILE_PATH_CHANGES - && true ; done diff --git a/.github/workflows/init.sh b/.github/workflows/init.sh new file mode 100755 index 00000000000000..4abfe8a23c2251 --- /dev/null +++ b/.github/workflows/init.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +mount proc /proc -t proc +/sbin/ifconfig lo 127.0.0.1 up +/sbin/ifconfig eth0 10.0.0.2 up +/sbin/ip route add default via 10.0.0.1 dev eth0 +/entropy 100000 + +export PATH=/home:/sbin:/usr/sbin:/bin:/usr/bin + +# hanging +#export PS1="\[$(tput bold)\]\[$(tput setaf 4)\][\[$(tput setaf 5)\]\u\[$(tput setaf 4)\]@\[$(tput setaf 5)\]\h \[$(tput setaf 2)\]\W\[$(tput setaf 4)\]]\\$ \[$(tput sgr0)\]" + +exec "$@"