diff --git a/.github/workflows/deb-buildd.yml b/.github/workflows/deb-buildd.yml new file mode 100644 index 00000000..4312ba8b --- /dev/null +++ b/.github/workflows/deb-buildd.yml @@ -0,0 +1,199 @@ +on: + workflow_call: + inputs: + deb-src-artifact-id: + required: true + type: string + runs-on: + required: true + type: string + arch: + required: true + type: string + dist: + required: true + type: string + secrets: + GPG_SECRET_SUBKEYS: + GPG_SIGNING_SUBKEY_FINGERPRINT: + +jobs: + linux: + runs-on: ${{ inputs.runs-on }} + container: + image: debian:unstable-slim + options: --cap-add=SYS_ADMIN --security-opt=apparmor:unconfined --tmpfs /tmp:exec --tmpfs /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}:exec + env: + DEBFULLNAME: apt.bcachefs.org CI bot + DEBEMAIL: linux-bcachefs@vger.kernel.org + DEB_SIGN_KEYID: "${{ secrets.GPG_SIGNING_SUBKEY_FINGERPRINT }}" + permissions: + id-token: write + contents: read + attestations: write + steps: + - name: Install necessary packages + timeout-minutes: 1 + run: | + set -xe + tee /etc/dpkg/dpkg.cfg.d/force-unsafe-io > /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null <> ~/.gnupg/gpg-agent.conf + echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf + gpgconf --kill gpg-agent + gpgconf --launch gpg-agent + export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) + echo "SSH_AUTH_SOCK=$(echo ${SSH_AUTH_SOCK})" >> $GITHUB_ENV + echo "" >> /etc/ssh/ssh_known_hosts + echo "${{ secrets.SSH_SERVER_KEYS }}" >> /etc/ssh/ssh_known_hosts + - name: Import GPG key + timeout-minutes: 1 + if: github.event_name != 'pull_request' + uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0 + with: + gpg_private_key: ${{ secrets.GPG_SECRET_SUBKEYS }} + fingerprint: ${{ secrets.GPG_SIGNING_SUBKEY_FINGERPRINT }} + trust_level: 5 + - name: Configure GPG + timeout-minutes: 1 + run: | + set -xe + gpg-connect-agent 'keyattr ${{ secrets.GPG_AUTH_SUBKEY_KEYGRIP }} Use-for-ssh: true' /bye + gpg --output /etc/apt/trusted.gpg.d/apt.bcachefs.org.asc --armor --export ${{ secrets.GPG_SIGNING_SUBKEY_FINGERPRINT }} + gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --import /etc/apt/trusted.gpg.d/apt.bcachefs.org.asc + tee -a ~/.gnupg/gpg.conf > /dev/null < /dev/null < /dev/null < /dev/null < "$REPO_ROOT/README.txt" < "/etc/apt/sources.list.d/apt.bcachefs.org.sources" < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < Tue, 16 Sep 2025 12:50:36 +0300 + bcachefs-tools (1:1.13.0-1~exp1) experimental; urgency=medium * QA Upload diff --git a/debian/control b/debian/control index 45ac0a6d..9beb0cbb 100644 --- a/debian/control +++ b/debian/control @@ -1,19 +1,16 @@ Source: bcachefs-tools -Maintainer: Debian QA Group +Maintainer: Roman Lebedev Section: utils Priority: optional Standards-Version: 4.7.0 Rules-Requires-Root: no Build-Depends: debhelper-compat (= 13), cargo, - rustfmt, - python3:native, - pkgconf, - python3-docutils, - python3-pytest, + jq, libaio-dev, - libfuse3-dev, libblkid-dev, + libclang-dev, + libfuse3-dev, libkeyutils-dev, liblz4-dev, libscrypt-dev, @@ -21,39 +18,14 @@ Build-Depends: debhelper-compat (= 13), libudev-dev, liburcu-dev, libzstd-dev, + pkgconf, + python3-docutils, + python3-pytest, + python3:native, + rustfmt, systemd-dev, uuid-dev, zlib1g-dev, -# -- Cargo.toml - librust-atty-0.2-dev (>= 0.2.14-~~), - librust-log-0.4-dev, - librust-log-0+std-dev, - librust-clap-4-dev (>= 4.0.32-~~), - librust-clap-4+derive-dev, - librust-clap-4+wrap-help-dev, - librust-clap-complete-4-dev (>= 4.3.2-~~), - librust-chrono-dev, - librust-gag-dev, - librust-getset-dev, - librust-anyhow-1.0-dev, - librust-libc-0.2-dev, - librust-udev-0-dev (>= 0.7-~~), - librust-uuid-1-dev (>= 1.2.2-~~), - librust-errno-0-dev (>= 0.2), - librust-either-1-dev (>= 1.5), - librust-rpassword-7-dev, - librust-byteorder-1-dev (>= 1.3), - librust-owo-colors-dev, - librust-strum-dev (>= 0.26), - librust-env-logger-dev, -# -- bch_bindgen/Cargo.toml -# anyhow, uuid, byteorder are covered above - librust-bitfield-0-dev (>= 0.14.0-~~), - librust-memoffset-dev, - librust-bitflags-1-dev (>= 1.3.2-~~), - librust-paste-1.0-dev, - librust-pkg-config-0.3-dev, - librust-bindgen-0.70-dev Homepage: https://bcachefs.org/ Vcs-Git: https://salsa.debian.org/debian/bcachefs-tools.git Vcs-Browser: https://salsa.debian.org/debian/bcachefs-tools diff --git a/debian/gbp.conf b/debian/gbp.conf index 27e23cb0..30d3213d 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -2,4 +2,10 @@ pristine-tar = False upstream-tag = v%(version)s ignore-branch = True +cleaner = +export-dir = ../bcachefs-tools-deb-export-dir +postexport = cargo vendor +compression = xz +compression-level = 9 +[buildpackage] diff --git a/debian/rules b/debian/rules index 17729457..2360f6c1 100755 --- a/debian/rules +++ b/debian/rules @@ -3,6 +3,8 @@ include /usr/share/dpkg/architecture.mk include /usr/share/rustc/architecture.mk +export DH_VERBOSE=1 + export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE export DEB_BUILD_MAINT_OPTIONS=hardening=+all @@ -10,6 +12,12 @@ export CARGO=/usr/share/cargo/bin/cargo export CARGO_HOME=$(CURDIR)/debian/cargo_home export DEB_CARGO_CRATE=bcachefs-tools_$(DEB_VERSION_UPSTREAM) +NUMJOBS = 1 +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + PREFIX := /usr ROOT_SBINDIR := /usr/sbin @@ -19,23 +27,30 @@ ifeq ($(DEB_BUILD_ARCH),amd64) DEB_BUILD_MAINT_OPTIONS += optimize=-lto endif -%: - dh $@ +export CARGO_ARGS = "--frozen" -override_dh_auto_configure: - $(CARGO) prepare-debian $(CURDIR)/vendor --link-from-system +%: + dh $@ --parallel + +override_dh_clean: + # HACK: breaks cargo checksumming by deleting some vendored files. + +cargo_config: + rm -rf .cargo + mkdir -p .cargo + cp debian/cargo.config .cargo/config.toml override_dh_auto_build: - $(RM) Cargo.lock - dh_auto_build -- CARGO="$(CARGO)" - -override_dh_auto_install: - dh_auto_install -- "PREFIX=$(PREFIX)" "ROOT_SBINDIR=$(ROOT_SBINDIR)" + $(MAKE) -f debian/rules cargo_config + dh_auto_build override_dh_auto_clean: - ! [ -d $(CURDIR)/vendor ] || $(RM) -r $(CURDIR)/vendor - ! [ -d $(CARGO_HOME) ] || $(RM) -r $(CARGO_HOME) - $(RM) Cargo.lock + $(MAKE) -f debian/rules cargo_config dh_auto_clean + rm -rf .cargo + +override_dh_usrlocal: + # FIXME: fails with + # dh_usrlocal: error: debian/bcachefs-tools/usr/local/libexec/bcachefsck_all is not a directory override_dh_auto_test: diff --git a/debian/source/format b/debian/source/format index 163aaf8d..89ae9db8 100644 --- a/debian/source/format +++ b/debian/source/format @@ -1 +1 @@ -3.0 (quilt) +3.0 (native) diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 00000000..8d288259 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,36 @@ +tar-ignore=*.a +tar-ignore=*.la +tar-ignore=*.o +tar-ignore=*.so +tar-ignore=.*.sw? +tar-ignore=*/*~ +tar-ignore=,,* +tar-ignore=.[#~]* +tar-ignore=.arch-ids +tar-ignore=.arch-inventory +tar-ignore=.be +tar-ignore=.bzr +tar-ignore=.bzr.backup +tar-ignore=.bzr.tags +tar-ignore=.bzrignore +tar-ignore=.cvsignore +tar-ignore=.deps +tar-ignore=.git +tar-ignore=.gitattributes +#tar-ignore=.gitignore +#tar-ignore=.gitmodules +tar-ignore=.gitreview +tar-ignore=.hg +tar-ignore=.hgignore +tar-ignore=.hgsigs +tar-ignore=.hgtags +tar-ignore=.mailmap +tar-ignore=.mtn-ignore +tar-ignore=.shelf +tar-ignore=.svn +tar-ignore=CVS +tar-ignore=DEADJOE +tar-ignore=RCS +tar-ignore=_MTN +tar-ignore=_darcs +tar-ignore={arch}