[PATCH] debian: packaging syzkaller
Initially packaging works for syzkaller
Signed-off-by: Yunseong Kim <yskelg@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 <yskelg@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 <yskelg@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)
--
2.43.0
Reply to: