Hi debian mentor and debian-go member, This is my first time working on Debian packaging, so I need some advice.
This link is my syzkaller repository on salsa. Link: https://salsa.debian.org/yunseongkim/syzkaller/-/tree/debian?ref_type=heads This is the dpkg-buildpackage log. Link: https://paste.debian.net/1327693/ On 8/28/24 3:10 오전, Yunseong Kim wrote: > Initially packaging works for syzkaller > > Signed-off-by: Yunseong Kim <ysk...@gmail.com> > --- > debian/.gitignore | 3 ++ > debian/changelog | 5 +++ > debian/compat | 1 + > debian/control | 12 +++++++ > debian/copyright | 26 ++++++++++++++ > debian/files | 2 ++ > debian/rules | 84 ++++++++++++++++++++++++++++++++++++++++++++ > debian/source/format | 1 + > 8 files changed, 134 insertions(+) > create mode 100644 debian/.gitignore > create mode 100644 debian/changelog > create mode 100644 debian/compat > create mode 100644 debian/control > create mode 100644 debian/copyright > create mode 100644 debian/files > create mode 100755 debian/rules > create mode 100644 debian/source/format > > diff --git a/debian/.gitignore b/debian/.gitignore > new file mode 100644 > index 000000000..29aca38cb > --- /dev/null > +++ b/debian/.gitignore > @@ -0,0 +1,3 @@ > +syzkaller/ > +syzkaller.substvars > +syzkaller.debhelper.log > diff --git a/debian/changelog b/debian/changelog > new file mode 100644 > index 000000000..e4d028bb5 > --- /dev/null > +++ b/debian/changelog > @@ -0,0 +1,5 @@ > +syzkaller (20240826+e4f3ea1bc2e0) unstable; urgency=medium > + > + * New upstream release) > + > + -- Yunseong Kim <ysk...@gmail.com> Sat, 24 Aug 2024 14:47:08 +0800 > diff --git a/debian/compat b/debian/compat > new file mode 100644 > index 000000000..ec635144f > --- /dev/null > +++ b/debian/compat > @@ -0,0 +1 @@ > +9 > diff --git a/debian/control b/debian/control > new file mode 100644 > index 000000000..8cc29056b > --- /dev/null > +++ b/debian/control > @@ -0,0 +1,12 @@ > +Source: syzkaller > +Section: main > +Priority: optional > +Maintainer: Yunseong Kim <ysk...@gmail.com> > +Build-Depends: debhelper (>= 9), dh-golang, golang-go:native (>= 1.3.0) > +Standards-Version: 3.9.6 > + > +Package: syzkaller > +Architecture: arm64 > +Depends: ${shlibs:Depends}, ${misc:Depends} > +Built-Using: ${misc:Built-Using} > +Description: syzkaller is an unsupervised coverage-guided kernel fuzzer > diff --git a/debian/copyright b/debian/copyright > new file mode 100644 > index 000000000..855f4c5bf > --- /dev/null > +++ b/debian/copyright > @@ -0,0 +1,26 @@ > +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ > +Upstream-Name: syzkaller > +Source: https://github.com/google/syzkaller > + > +Files: * > +Copyright: 2024 Yunseong Kim > +License: Apache License 2.0 > + Copyright (c) 2024 Yunseong Kim > + . > + Permission is hereby granted, free of charge, to any person obtaining a copy > + of this software and associated documentation files (the "Software"), to > deal > + in the Software without restriction, including without limitation the rights > + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > + copies of the Software, and to permit persons to whom the Software is > + furnished to do so, subject to the following conditions: > + . > + The above copyright notice and this permission notice shall be included in > all > + copies or substantial portions of the Software. > + . > + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > + SOFTWARE. > diff --git a/debian/files b/debian/files > new file mode 100644 > index 000000000..d77937778 > --- /dev/null > +++ b/debian/files > @@ -0,0 +1,2 @@ > +syzkaller_20240826+e4f3ea1bc2e0_arm64.buildinfo main optional > +syzkaller_20240826+e4f3ea1bc2e0_arm64.deb main optional > diff --git a/debian/rules b/debian/rules > new file mode 100755 > index 000000000..eacb4e9a5 > --- /dev/null > +++ b/debian/rules > @@ -0,0 +1,84 @@ > +#!/usr/bin/make -f > + > +export DH_OPTIONS > + > +## > +# From git-lfs/git-lfs repo: > +# Looks like dh_golang doesn't set diffrent archs, so you have to do them > semi-manually. > +## > + > +## This if-structure is decided on what is passed by the -a flag by > dpkg-buildpackage command. > +ifeq ($(DEB_HOST_ARCH), i386) > + export GOARCH := 386 > +else ifeq ($(DEB_HOST_ARCH), amd64) > + export GOARCH := amd64 > +else ifeq ($(DEB_HOST_ARCH), armhf) > + export GOARCH := arm > + # May need to set GOARM as well if your going to target ARM. But for > now this works. > +else ifeq ($(DEB_HOST_ARCH), arm64) > + export GOARCH := arm64 > +endif > + > +# Or add your arch that your targeting, these are just examples. > + > +# Directory where compiled binary is placed + debian setup files. > +# Note: If your doing building thru git, you may want to add obj-* to > .gitignore > +BUILD_DIR := obj-$(DEB_HOST_GNU_TYPE) > + > +# Required: Put the url (without http://) of your git repo. > +export DH_GOPKG := github.com/google/syzkaller > + > +# Required: Put the name of your git repo below. > +GIT_REPO_NAME := syzkaller > + > +export PATH := $(CURDIR)/$(BUILD_DIR)/bin:$(PATH) > + > +## > +# by-default, dh_golang only copies *.go and other source - this upsets a > bunch of vendor test routines > +## > +export DH_GOLANG_INSTALL_ALL := 1 > + > +%: > + dh $@ --buildsystem=golang --with=golang > + > +override_dh_clean: > + rm -f debian/debhelper.log > + dh_clean > + > +override_dh_auto_build: > + #dh_auto_build > + make CFLAGS="" > + ## > + # From git-lfs/git-lfs repo: > + # dh_golang doesn't do anything here in deb 8, and it's needed in both > + ## > + if [ "$(DEB_HOST_GNU_TYPE)" != "$(DEB_BUILD_GNU_TYPE)" ]; then\ > + cp -rf $(BUILD_DIR)/bin/*/* $(BUILD_DIR)/bin/; \ > + fi > + > +override_dh_strip: > + ## > + # From git-lfs/git-lfs repo: > + # strip disabled as golang upstream doesn't support it and it makes go > crash. > + # See https://launchpad.net/bugs/1200255. > + ## > + > +override_dh_golang: > + ## > + # From git-lfs/git-lfs repo: > + # The dh_golang is used to add the Built-using field to the deb. This > is only for reference. > + # As of > https://anonscm.debian.org/cgit/collab-maint/dh-golang.git/commit/script/dh_golang?id=7c3fbec6ea92294477fa8910264fe9bd823f21c3 > + # dh_golang errors out because the go compiler used was not installed > via a package. Therefore the step is skipped > + ## > + > +override_dh_auto_test: > + make -j1 test > + > +override_dh_auto_install: > + # This is making a "fakeroot" so that when the deb is installed the > binary will be placed in /usr/bin. > + mkdir -p debian/$(GIT_REPO_NAME)/usr/bin/ > + mkdir -p debian/$(GIT_REPO_NAME)/usr/share/doc/syzkaller/ > + # This is copying the binary and placing it in the fake root path. > + cp -r docs/ debian/$(GIT_REPO_NAME)/usr/share/doc/syzkaller/ > + cp bin/*_*/syz-* bin/syz-* debian/$(GIT_REPO_NAME)/usr/bin/ > + > diff --git a/debian/source/format b/debian/source/format > new file mode 100644 > index 000000000..89ae9db8f > --- /dev/null > +++ b/debian/source/format > @@ -0,0 +1 @@ > +3.0 (native) Please feel free to let me know if there are any improvements needed after reviewing the code. Thank you! Warm regards, Yunseong Kim