diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..21a6458 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,106 @@ +name: GitHub Pages + +on: + push: + branches: + - main + +env: + CI_XBPS_PACKAGES: "xdeb-install" + XBPS_BUILD_ENVIRONMENT: "void-packages-ci" + XBPS_ALLOW_RESTRICTED: "yes" + XBPS_CHROOT_CMD: "ethereal" + XBPS_ALLOW_CHROOT_BREAKOUT: "yes" + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + config: + - arch: x86_64 + platform: linux/amd64 + - arch: i686 + platform: linux/i386 + - arch: aarch64 + platform: linux/arm64 + permissions: + contents: read + packages: read + container: + image: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ matrix.config.arch }} + options: --platform=${{ matrix.config.platform }} + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: ${{ matrix.config.platform }} + + - name: Create XBPS packages + run: ./scripts/create_packages.sh "${{ matrix.config.arch }}" "${{ matrix.config.sha256 }}" + + - name: Create XBPS repository + run: | + echo -n "${{ secrets.XBPS_REPOSITORY_KEY }}" > private.pem + ./scripts/sign_repository.sh "${{ matrix.config.arch }}" "${{ github.repository_owner }}" "${{ github.event.pusher.email }}" + + - name: Upload repository as artifacts + uses: actions/upload-artifact@v3 + with: + name: "repository-${{ matrix.config.arch }}" + path: "repository-${{ matrix.config.arch }}" + + merge: + runs-on: ubuntu-latest + needs: build + permissions: + contents: read + packages: read + container: + image: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:x86_64 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Merge artifacts + run: | + mkdir -p repository + mv repository-x86_64/* repository + mv repository-i686/* repository + mv repository-aarch64/* repository + + - name: Build apindex + run: | + cd apindex + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/apindex + make install + + - name: Generate index.html + run: cd repository && /tmp/apindex/bin/apindex . + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v2 + with: + path: repository + + deploy: + needs: merge + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..95df38a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +repository* +private.key diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b73acb3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "apindex"] + path = apindex + url = https://github.com/libthinkpad/apindex.git +[submodule "void-packages"] + path = void-packages + url = https://github.com/void-linux/void-packages.git diff --git a/apindex b/apindex new file mode 160000 index 0000000..7f3ab79 --- /dev/null +++ b/apindex @@ -0,0 +1 @@ +Subproject commit 7f3ab793abd3eca5a28a5a759f08ebf13b420395 diff --git a/checksums/aarch64.txt b/checksums/aarch64.txt new file mode 100644 index 0000000..c9130b4 --- /dev/null +++ b/checksums/aarch64.txt @@ -0,0 +1 @@ +ad824802093be7f406e4b14d1d2b260c7bbb1f45101ef4a4cd040613619a02ae diff --git a/checksums/i686.txt b/checksums/i686.txt new file mode 100644 index 0000000..719083f --- /dev/null +++ b/checksums/i686.txt @@ -0,0 +1 @@ +df44bc2b269d7ca139a8afe765b3f37b1ee2bf16b94fb8965345695485001a76 diff --git a/checksums/x86_64.txt b/checksums/x86_64.txt new file mode 100644 index 0000000..01dcc2d --- /dev/null +++ b/checksums/x86_64.txt @@ -0,0 +1 @@ +a4be5ba732d076a06645b666593109016d7fac49764ffff5886473ff97d07dd7 diff --git a/scripts/create_packages.sh b/scripts/create_packages.sh new file mode 100755 index 0000000..15eefd6 --- /dev/null +++ b/scripts/create_packages.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +REPOSITORY_ARCH="${1}" +XDEB_INSTALL_BINARY_SHA256=$(cat ./checksums/${REPOSITORY_ARCH}.txt) + +repository_dir="repository-${REPOSITORY_ARCH}" +mkdir -p ${repository_dir} + +cd void-packages +ln -s / masterdir + +for xbps_pkg in ${CI_XBPS_PACKAGES}; do + mkdir -p srcpkgs/${xbps_pkg} + cp -r ../srcpkgs/${xbps_pkg} srcpkgs/${xbps_pkg} + + sed -i "s/%XDEB_INSTALL_BINARY_ARCH%/${REPOSITORY_ARCH}/" srcpkgs/${xbps_pkg}/template + sed -i "s/%XDEB_INSTALL_BINARY_SHA256%/${XDEB_INSTALL_BINARY_SHA256}" srcpkgs/${xbps_pkg}/template + + xlint ${xbps_pkg} || exit 1 + ./xbps-src pkg -Q ${xbps_pkg} || exit 1 +done + +mv hostdir/binpkgs/*.xbps ../${repository_dir} diff --git a/scripts/sign_repository.sh b/scripts/sign_repository.sh new file mode 100755 index 0000000..77efdc1 --- /dev/null +++ b/scripts/sign_repository.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +REPOSITORY_ARCH="${1}" +USER_NAME="${2}" +USER_EMAIL="${3}" + +repository_dir="repository-${REPOSITORY_ARCH}" + +xbps-rindex -a ${repository_dir}/*.xbps +xbps-rindex --sign \ + --signedby "${USER_NAME} <${USER_EMAIL}>" \ + --privkey private.pem \ + ${repository_dir} + +for pkg in $(ls -d -1 ${repository_dir}/*.xbps); do + xbps-rindex --privkey private.pem --sign-pkg ${pkg} +done diff --git a/srcpkgs/xdeb-install/template b/srcpkgs/xdeb-install/template new file mode 100644 index 0000000..ab721e2 --- /dev/null +++ b/srcpkgs/xdeb-install/template @@ -0,0 +1,26 @@ +# Template file for 'xdeb-install' +pkgname=xdeb-install +version=1.0.1 +revision=2 +archs="%XDEB_INSTALL_BINARY_ARCH%" +create_wrksrc=required +short_desc="Simple tool to automate the awesome xdeb tool" +maintainer="Timo Reichl " +license="MIT" +homepage="https://github.com/thetredev/xdeb-install" +distfiles="${homepage}/releases/download/v${version}/xdeb-install-linux-${archs} https://raw.githubusercontent.com/thetredev/xdeb-install/v${version}/LICENSE" +checksum="%XDEB_INSTALL_BINARY_SHA256% 78dc220b8c0cb8341a9da3efaa33ff87483b81db5f9e0b94c81241a15582bc11" + +do_extract() { + # nothing to do here, it's a prebuilt go binary + # satisfy xbps-src using 'true' + true +} + +do_install() { + bindir="${XBPS_SRCDISTDIR}/${pkgname}-${version}" + mv ${bindir}/xdeb-install-linux-${archs} ${bindir}/xdeb-install + + vbin ${bindir}/xdeb-install + vlicense ${bindir}/LICENSE +} diff --git a/void-packages b/void-packages new file mode 160000 index 0000000..9a7b55d --- /dev/null +++ b/void-packages @@ -0,0 +1 @@ +Subproject commit 9a7b55dc50076827ea2ba07bb94c8cbdd9dd9272