summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-01-15 01:22:10 +0000
committerIgor Pashev <pashev.igor@gmail.com>2013-01-15 01:22:10 +0000
commit43ed8035178f03e25c1a32a25dd6cc0155d4346e (patch)
tree718140dfd00bdc0628be857bab15cf0b2bbd5151
parent4a6d41b0a3c154156b8796b7989bb7f2fdf2e365 (diff)
downloadillumos-packaging-43ed8035178f03e25c1a32a25dd6cc0155d4346e.tar.gz
Basic illumos utilities
-rw-r--r--util-illumos/debian/README.source10
-rw-r--r--util-illumos/debian/changelog5
-rw-r--r--util-illumos/debian/compat1
-rw-r--r--util-illumos/debian/control26
-rw-r--r--util-illumos/debian/copyright27
-rw-r--r--util-illumos/debian/patches/fdisk-amd64.patch13
-rw-r--r--util-illumos/debian/patches/fdisk-avoid-libadm.patch385
-rw-r--r--util-illumos/debian/patches/fdisk-no-libfdisk.patch13
-rw-r--r--util-illumos/debian/patches/prtconf-no-isaexec.patch10
-rw-r--r--util-illumos/debian/patches/prtconf-pointers.patch13
-rw-r--r--util-illumos/debian/patches/series5
-rwxr-xr-xutil-illumos/debian/rules95
-rw-r--r--util-illumos/debian/source/format1
-rw-r--r--util-illumos/debian/util-illumos.install6
-rw-r--r--util-illumos/debian/util-illumos.manpages5
15 files changed, 615 insertions, 0 deletions
diff --git a/util-illumos/debian/README.source b/util-illumos/debian/README.source
new file mode 100644
index 0000000..9988910
--- /dev/null
+++ b/util-illumos/debian/README.source
@@ -0,0 +1,10 @@
+Real sources are in the package illumos-source-X.Y,
+where X and Y are numbers. Exact values of X and Y
+are set in Build-Depends field of debian/control as
+well as in the version string in debian/changelog,
+in a form of X.Y-1.
+
+To add a patch you need first to unpack files from
+illumos-source-X.Y using ./debian/rules unpack
+and, desirably, ./debian/rules patch
+
diff --git a/util-illumos/debian/changelog b/util-illumos/debian/changelog
new file mode 100644
index 0000000..08a33be
--- /dev/null
+++ b/util-illumos/debian/changelog
@@ -0,0 +1,5 @@
+util-illumos (2.10-1) unstable; urgency=low
+
+ * Initial release.
+
+ -- Igor Pashev <pashev.igor@gmail.com> Fri, 04 Jan 2013 19:25:13 +0400
diff --git a/util-illumos/debian/compat b/util-illumos/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/util-illumos/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/util-illumos/debian/control b/util-illumos/debian/control
new file mode 100644
index 0000000..e646a84
--- /dev/null
+++ b/util-illumos/debian/control
@@ -0,0 +1,26 @@
+Source: util-illumos
+Section: admin
+Priority: required
+Maintainer: Igor Pashev <pashev.igor@gmail.com>
+Build-Depends:
+ dh-illumos,
+ illumos-source-2.10,
+ libdevinfo-dev,
+ libnvpair-dev,
+ libefi-dev,
+ libfdisk-dev [illumos-amd64 illumos-i386],
+ quilt,
+Standards-Version: 3.9.3
+Homepage: https://www.illumos.org
+
+Package: util-illumos
+Priority: required
+Essential: yes
+Section: admin
+Architecture: illumos-any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: miscellaneous system utilities
+ This package contains a number of important utilities, most of which
+ are oriented towards maintenance of your system.
+
+
diff --git a/util-illumos/debian/copyright b/util-illumos/debian/copyright
new file mode 100644
index 0000000..92d3a40
--- /dev/null
+++ b/util-illumos/debian/copyright
@@ -0,0 +1,27 @@
+Files: debian/*
+Copyright: 2012, Igor Pashev <pashev.igor@gmail.com>
+License: WTFPL-2
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+ .
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+ .
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+ .
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ .
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+
+Files: *
+License: CDDL
+ Note that sources are not in this package but in the package
+ illumos-source-X.Y. Those sources are covered by Common Development
+ and Distribution License (CDDL).
+ .
+ On Dyson system, the full text of the CDDL license
+ can be found in the file `/usr/share/common-licenses/CDDL-1.0'.
+
diff --git a/util-illumos/debian/patches/fdisk-amd64.patch b/util-illumos/debian/patches/fdisk-amd64.patch
new file mode 100644
index 0000000..e6fc121
--- /dev/null
+++ b/util-illumos/debian/patches/fdisk-amd64.patch
@@ -0,0 +1,13 @@
+Index: util-illumos/usr/src/cmd/fdisk/fdisk.c
+===================================================================
+--- util-illumos.orig/usr/src/cmd/fdisk/fdisk.c 2012-10-08 00:25:23.000000000 +0000
++++ util-illumos/usr/src/cmd/fdisk/fdisk.c 2013-01-14 23:13:25.472375269 +0000
+@@ -1543,7 +1543,7 @@
+ int mDev, i;
+ struct ipart *part;
+
+-#if defined(i386) || defined(sparc)
++#if defined(i386) || defined(sparc) || defined (__amd64__)
+ /*
+ * If the master boot file hasn't been specified, use the
+ * implementation architecture name to generate the default one.
diff --git a/util-illumos/debian/patches/fdisk-avoid-libadm.patch b/util-illumos/debian/patches/fdisk-avoid-libadm.patch
new file mode 100644
index 0000000..df71ae5
--- /dev/null
+++ b/util-illumos/debian/patches/fdisk-avoid-libadm.patch
@@ -0,0 +1,385 @@
+Description: copy functions from libadm.
+ Prepend underscore (__) to function names to
+ avoid conflicts with sys/vtoc.h
+Index: util-illumos/usr/src/cmd/fdisk/Makefile
+===================================================================
+--- util-illumos.orig/usr/src/cmd/fdisk/Makefile 2012-10-08 00:25:23.000000000 +0000
++++ util-illumos/usr/src/cmd/fdisk/Makefile 2013-01-15 00:43:34.651138707 +0000
+@@ -36,7 +36,7 @@
+
+ LDLIBS_i386= -lfdisk
+ LDLIBS_sparc=
+-LDLIBS += -ladm -lefi $(LDLIBS_$(MACH))
++LDLIBS += -lefi $(LDLIBS_$(MACH))
+
+ i386_CFLAGS += -D_LARGEFILE64_SOURCE
+ i386_CFLAGS += -D_FILE_OFFSET_BITS=64
+Index: util-illumos/usr/src/cmd/fdisk/fdisk.c
+===================================================================
+--- util-illumos.orig/usr/src/cmd/fdisk/fdisk.c 2013-01-14 23:13:25.472375269 +0000
++++ util-illumos/usr/src/cmd/fdisk/fdisk.c 2013-01-15 00:53:23.006490537 +0000
+@@ -40,6 +40,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <strings.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <fcntl.h>
+@@ -4400,6 +4401,212 @@
+ }
+
+ /*
++ * To copy each field of vtoc individually for copying extvtoc
++ * to 32 bit vtoc and vs.
++ * Currently bootinfo and timestamp are not really supported.
++ */
++
++#define libadm_vtoc_copy(vs, vd) \
++ { \
++ int i; \
++ vd->v_bootinfo[0] = (unsigned)vs->v_bootinfo[0]; \
++ vd->v_bootinfo[1] = (unsigned)vs->v_bootinfo[1]; \
++ vd->v_bootinfo[2] = (unsigned)vs->v_bootinfo[2]; \
++ vd->v_sanity = (unsigned)vs->v_sanity; \
++ vd->v_version = (unsigned)vs->v_version; \
++ bcopy(vs->v_volume, vd->v_volume, LEN_DKL_VVOL); \
++ vd->v_sectorsz = vs->v_sectorsz; \
++ vd->v_nparts = vs->v_nparts; \
++ vd->v_version = (unsigned)vs->v_version; \
++ for (i = 0; i < 10; i++) \
++ vd->v_reserved[i] = (unsigned)vs->v_reserved[i];\
++ for (i = 0; i < V_NUMPAR; i++) { \
++ vd->v_part[i].p_tag = vs->v_part[i].p_tag; \
++ vd->v_part[i].p_flag = vs->v_part[i].p_flag; \
++ vd->v_part[i].p_start = (unsigned)vs->v_part[i].p_start;\
++ vd->v_part[i].p_size = (unsigned)vs->v_part[i].p_size; \
++ } \
++ for (i = 0; i < V_NUMPAR; i++) \
++ if ((sizeof (vd->timestamp[i]) != sizeof (vs->timestamp[i])) &&\
++ (vs->timestamp[i] > INT32_MAX)) \
++ vd->timestamp[i] = INT32_MAX; \
++ else \
++ vd->timestamp[i] = (unsigned)vs->timestamp[i]; \
++ bcopy(vs->v_asciilabel, vd->v_asciilabel, LEN_DKL_ASCII); \
++ }
++/*
++ * Read VTOC - return partition number.
++ */
++static int
++__read_vtoc(int fd, struct vtoc *vtoc)
++{
++ struct dk_cinfo dki_info;
++
++ /*
++ * Read the vtoc.
++ */
++ if (ioctl(fd, DKIOCGVTOC, (caddr_t)vtoc) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ case ENOTSUP:
++ /* GPT labeled or disk > 1TB with no extvtoc support */
++ return (VT_ENOTSUP);
++ case EOVERFLOW:
++ return (VT_EOVERFLOW);
++ default:
++ return (VT_ERROR);
++ }
++ }
++
++ /*
++ * Sanity-check the vtoc.
++ */
++ if (vtoc->v_sanity != VTOC_SANE) {
++ return (VT_EINVAL);
++ }
++
++ /*
++ * Convert older-style vtoc's.
++ */
++ switch (vtoc->v_version) {
++ case 0:
++ /*
++ * No vtoc information. Install default
++ * nparts/sectorsz and version. We are
++ * assuming that the driver returns the
++ * current partition information correctly.
++ */
++
++ vtoc->v_version = V_VERSION;
++ if (vtoc->v_nparts == 0)
++ vtoc->v_nparts = V_NUMPAR;
++ if (vtoc->v_sectorsz == 0)
++ vtoc->v_sectorsz = DEV_BSIZE;
++
++ break;
++
++ case V_VERSION:
++ break;
++
++ default:
++ return (VT_EINVAL);
++ }
++
++ /*
++ * Return partition number for this file descriptor.
++ */
++ if (ioctl(fd, DKIOCINFO, (caddr_t)&dki_info) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ default:
++ return (VT_ERROR);
++ }
++ }
++ if (dki_info.dki_partition > V_NUMPAR) {
++ return (VT_EINVAL);
++ }
++ return ((int)dki_info.dki_partition);
++}
++
++static int
++__read_extvtoc(int fd, struct extvtoc *extvtoc)
++{
++ struct dk_cinfo dki_info;
++ struct vtoc oldvtoc;
++ struct vtoc *oldvtocp = &oldvtoc;
++ int ret;
++
++ /*
++ * Read the vtoc.
++ */
++ if (ioctl(fd, DKIOCGEXTVTOC, (caddr_t)extvtoc) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ /* for disks > 1TB */
++ case ENOTSUP:
++ return (VT_ENOTSUP);
++ case EOVERFLOW:
++ return (VT_EOVERFLOW);
++ case ENOTTY:
++
++ if ((ret = __read_vtoc(fd, oldvtocp)) < 0)
++ return (ret);
++
++#ifdef _LP64
++ /*
++ * 64-bit vtoc and extvtoc have the same field sizes
++ * and offsets.
++ */
++ bcopy(oldvtocp, extvtoc, sizeof (struct extvtoc));
++#else
++ bzero(extvtoc, sizeof (struct extvtoc));
++ libadm_vtoc_copy(oldvtocp, extvtoc);
++#endif
++ return (ret);
++
++
++ default:
++ return (VT_ERROR);
++ }
++ }
++
++ /*
++ * Sanity-check the vtoc.
++ */
++ if (extvtoc->v_sanity != VTOC_SANE) {
++ return (VT_EINVAL);
++ }
++
++ switch (extvtoc->v_version) {
++ case 0:
++ /*
++ * For pre-version 1 vtoc keep same functionality
++ * as read_vtoc.
++ */
++
++ extvtoc->v_version = V_VERSION;
++ if (extvtoc->v_nparts == 0)
++ extvtoc->v_nparts = V_NUMPAR;
++ if (extvtoc->v_sectorsz == 0)
++ extvtoc->v_sectorsz = DEV_BSIZE;
++
++ break;
++
++ case V_VERSION:
++ break;
++
++ default:
++ return (VT_EINVAL);
++ }
++
++ /*
++ * Return partition number for this file descriptor.
++ */
++ if (ioctl(fd, DKIOCINFO, (caddr_t)&dki_info) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ default:
++ return (VT_ERROR);
++ }
++ }
++ if (dki_info.dki_partition > V_NUMPAR) {
++ return (VT_EINVAL);
++ }
++ return ((int)dki_info.dki_partition);
++}
++/*
+ * readvtoc
+ * Read the VTOC from the Solaris partition of the device.
+ */
+@@ -4409,7 +4616,7 @@
+ int i;
+ int retval = VTOC_OK;
+
+- if ((i = read_extvtoc(Dev, &disk_vtoc)) < VTOC_OK) {
++ if ((i = __read_extvtoc(Dev, &disk_vtoc)) < VTOC_OK) {
+ if (i == VT_EINVAL) {
+ (void) fprintf(stderr, "fdisk: Invalid VTOC.\n");
+ vt_inval++;
+@@ -4427,6 +4634,116 @@
+ }
+
+ /*
++ * Write VTOC
++ */
++static int
++__write_vtoc(int fd, struct vtoc *vtoc)
++{
++ int i;
++ /*
++ * Sanity-check the vtoc
++ */
++ if (vtoc->v_sanity != VTOC_SANE || vtoc->v_nparts > V_NUMPAR) {
++ return (-1);
++ }
++
++ /*
++ * since many drivers won't allow opening a device make sure
++ * all partitions aren't being set to zero. If all are zero then
++ * we have no way to set them to something else
++ */
++
++ for (i = 0; i < (int)vtoc->v_nparts; i++)
++ if (vtoc->v_part[i].p_size > 0)
++ break;
++ if (i == (int)vtoc->v_nparts)
++ return (-1);
++
++ /*
++ * Write the vtoc
++ */
++ if (ioctl(fd, DKIOCSVTOC, (caddr_t)vtoc) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ case ENOTSUP:
++ /* GPT labeled or disk > 1TB with no extvtoc support */
++ return (VT_ENOTSUP);
++ case EOVERFLOW:
++ return (VT_EOVERFLOW);
++ default:
++ return (VT_ERROR);
++ }
++ }
++ return (0);
++}
++
++/*
++ * Write ext VTOC.
++ */
++static int
++__write_extvtoc(int fd, struct extvtoc *extvtoc)
++{
++ int i;
++ struct vtoc oldvtoc;
++ struct vtoc *oldvtocp = &oldvtoc;
++ /*
++ * Sanity-check the vtoc
++ */
++ if (extvtoc->v_sanity != VTOC_SANE || extvtoc->v_nparts > V_NUMPAR) {
++ return (-1);
++ }
++
++ /*
++ * since many drivers won't allow opening a device make sure
++ * all partitions aren't being set to zero. If all are zero then
++ * we have no way to set them to something else
++ */
++
++ for (i = 0; i < (int)extvtoc->v_nparts; i++)
++ if (extvtoc->v_part[i].p_size > 0)
++ break;
++ if (i == (int)extvtoc->v_nparts)
++ return (-1);
++
++ /*
++ * Write the extvtoc
++ */
++ if (ioctl(fd, DKIOCSEXTVTOC, (caddr_t)extvtoc) == -1) {
++ switch (errno) {
++ case EIO:
++ return (VT_EIO);
++ case EINVAL:
++ return (VT_EINVAL);
++ /* for disks > 1TB */
++ case ENOTSUP:
++ return (VT_ENOTSUP);
++ case EOVERFLOW:
++ return (VT_EOVERFLOW);
++ case ENOTTY:
++#ifdef _LP64
++ /*
++ * 64-bit vtoc and extvtoc have the same field sizes
++ * and offsets.
++ */
++ bcopy(extvtoc, oldvtocp, sizeof (struct vtoc));
++#else
++ bzero(oldvtocp, sizeof (struct vtoc));
++ libadm_vtoc_copy(extvtoc, oldvtocp);
++
++#endif
++ return (__write_vtoc(fd, &oldvtoc));
++
++ default:
++ return (VT_ERROR);
++ }
++ }
++
++ return (0);
++}
++/*
+ * writevtoc
+ * Write the VTOC to the Solaris partition on the device.
+ */
+@@ -4436,7 +4753,7 @@
+ int i;
+ int retval = 0;
+
+- if ((i = write_extvtoc(Dev, &disk_vtoc)) != 0) {
++ if ((i = __write_extvtoc(Dev, &disk_vtoc)) != 0) {
+ if (i == VT_EINVAL) {
+ (void) fprintf(stderr,
+ "fdisk: Invalid entry exists in VTOC.\n");
+@@ -4815,7 +5132,7 @@
+ }
+ }
+ } else {
+- if ((idx = read_extvtoc(fd, &v)) < 0) {
++ if ((idx = __read_extvtoc(fd, &v)) < 0) {
+ if (!lecture_and_query(FDISK_LECTURE_NO_VTOC,
+ devname)) {
+ (void) close(fd);
diff --git a/util-illumos/debian/patches/fdisk-no-libfdisk.patch b/util-illumos/debian/patches/fdisk-no-libfdisk.patch
new file mode 100644
index 0000000..40fc616
--- /dev/null
+++ b/util-illumos/debian/patches/fdisk-no-libfdisk.patch
@@ -0,0 +1,13 @@
+Description: libfdisk is not used
+Index: util-illumos/usr/src/cmd/fdisk/Makefile
+===================================================================
+--- util-illumos.orig/usr/src/cmd/fdisk/Makefile 2013-01-15 01:06:26.894492182 +0000
++++ util-illumos/usr/src/cmd/fdisk/Makefile 2013-01-15 01:06:43.484738528 +0000
+@@ -34,7 +34,6 @@
+
+ CPPFLAGS += -D_FILE_OFFSET_BITS=64
+
+-LDLIBS_i386= -lfdisk
+ LDLIBS_sparc=
+ LDLIBS += -lefi $(LDLIBS_$(MACH))
+
diff --git a/util-illumos/debian/patches/prtconf-no-isaexec.patch b/util-illumos/debian/patches/prtconf-no-isaexec.patch
new file mode 100644
index 0000000..b8f941e
--- /dev/null
+++ b/util-illumos/debian/patches/prtconf-no-isaexec.patch
@@ -0,0 +1,10 @@
+Index: util-illumos/usr/src/cmd/prtconf/i386/Makefile
+===================================================================
+--- util-illumos.orig/usr/src/cmd/prtconf/i386/Makefile 2012-10-08 00:25:33.000000000 +0000
++++ util-illumos/usr/src/cmd/prtconf/i386/Makefile 2013-01-14 22:53:41.336892286 +0000
+@@ -29,4 +29,4 @@
+
+ include ../Makefile.com
+
+-install: all $(ROOTUSRSBINPROG32)
++install: all $(ROOTUSRSBINPROG)
diff --git a/util-illumos/debian/patches/prtconf-pointers.patch b/util-illumos/debian/patches/prtconf-pointers.patch
new file mode 100644
index 0000000..b083aed
--- /dev/null
+++ b/util-illumos/debian/patches/prtconf-pointers.patch
@@ -0,0 +1,13 @@
+Index: util-illumos/usr/src/cmd/prtconf/prt_xxx.c
+===================================================================
+--- util-illumos.orig/usr/src/cmd/prtconf/prt_xxx.c 2012-10-08 00:25:33.000000000 +0000
++++ util-illumos/usr/src/cmd/prtconf/prt_xxx.c 2013-01-14 22:47:16.945836005 +0000
+@@ -392,7 +392,7 @@
+ uintptr_t priv;
+ struct priv_data *pdp;
+
+- if ((priv = (uintptr_t)di_parent_private_data(node)) == NULL)
++ if ((priv = (uintptr_t)di_parent_private_data(node)) == 0)
+ return;
+
+ if ((pdp = match_priv_data(node)) == NULL) {
diff --git a/util-illumos/debian/patches/series b/util-illumos/debian/patches/series
new file mode 100644
index 0000000..ce33d37
--- /dev/null
+++ b/util-illumos/debian/patches/series
@@ -0,0 +1,5 @@
+prtconf-pointers.patch
+prtconf-no-isaexec.patch
+fdisk-amd64.patch
+fdisk-avoid-libadm.patch
+fdisk-no-libfdisk.patch
diff --git a/util-illumos/debian/rules b/util-illumos/debian/rules
new file mode 100755
index 0000000..bef403f
--- /dev/null
+++ b/util-illumos/debian/rules
@@ -0,0 +1,95 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/buildflags.mk
+
+export DH_VERBOSE = 1
+
+cmd := \
+ prtconf/i386 \
+ devprop \
+ fdisk \
+
+unpack: unpack-stamp
+unpack-stamp:
+ dh_testdir
+ dh_illumos_gate --build \
+ usr/src/cmd/ \
+ usr/src/man/man1\* \
+ usr/src/uts/i86pc/sys/biosdisk.h \
+
+
+ # Buggy and unused:
+ echo > usr/src/Makefile.msg.targ
+
+ # Use GNU ld:
+ sed -i '/LD_ALTEXEC/d' usr/env.sh
+ echo 'BDIRECT=' >> usr/src/cmd/Makefile.cmd
+ echo 'MAPFILE.NES=' >> usr/src/cmd/Makefile.cmd
+ echo 'MAPFILE.PGA=' >> usr/src/cmd/Makefile.cmd
+ echo 'MAPFILE.NED=' >> usr/src/cmd/Makefile.cmd
+
+ touch $@
+
+patch: patch-stamp
+patch-stamp: unpack-stamp
+ dh_testdir
+ [ ! -f debian/patches/series ] || QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
+ touch $@
+
+unpatch:
+ dh_testdir
+ [ ! -f debian/patches/series ] || QUILT_PATCHES=debian/patches quilt pop -a -f || test $$? = 2
+ rm -f patch-stamp
+
+dirs-stamp: unpack-stamp
+ . usr/env.sh; mkdir -p \
+ debian/tmp/usr/bin \
+ debian/tmp/sbin \
+ debian/tmp/usr/sbin
+ touch $@
+
+install: install-stamp
+
+install-stamp: build-stamp
+ install -m 755 -t debian/tmp/sbin/ soconfig
+ install -m 755 -t debian/tmp/sbin/ autopush
+ touch $@
+
+build build-arch build-indep: build-stamp
+
+build-stamp: dirs-stamp patch-stamp
+ # We've patched it, so i386 is suitable for any arch:
+ $(CC) $(CFLAGS) $(LDFLAGS) ./usr/src/cmd/cmd-inet/usr.sbin/soconfig.c -o soconfig
+ $(CC) $(CFLAGS) $(LDFLAGS) ./usr/src/cmd/autopush/autopush.c -o autopush
+ dh_illumos_make --native $(cmd:%=usr/src/cmd/%)
+ touch $@
+
+binary binary-arch binary-indep: binary-stamp
+binary-stamp: install-stamp
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ dh_install
+ dh_strip
+ dh_installman
+ dh_installdocs
+ dh_installexamples
+ dh_installchangelogs
+ dh_bash-completion
+ dh_link
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+ touch $@
+
+clean: unpatch
+ dh_testdir
+ dh_testroot
+ dh_clean
+ rm -rf usr .pc
+ rm -f soconfig autopush
+
diff --git a/util-illumos/debian/source/format b/util-illumos/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/util-illumos/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/util-illumos/debian/util-illumos.install b/util-illumos/debian/util-illumos.install
new file mode 100644
index 0000000..f178be0
--- /dev/null
+++ b/util-illumos/debian/util-illumos.install
@@ -0,0 +1,6 @@
+usr/sbin/prtconf
+sbin/soconfig
+sbin/autopush
+sbin/devprop
+usr/sbin/fdisk
+sbin/fdisk
diff --git a/util-illumos/debian/util-illumos.manpages b/util-illumos/debian/util-illumos.manpages
new file mode 100644
index 0000000..6cc3d14
--- /dev/null
+++ b/util-illumos/debian/util-illumos.manpages
@@ -0,0 +1,5 @@
+usr/src/man/man1m/autopush.1m
+usr/src/man/man1m/soconfig.1m
+usr/src/man/man1m/prtconf.1m
+usr/src/man/man1m/devprop.1m
+usr/src/man/man1m/fdisk.1m