Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4443e51
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,109 @@
+#
+#    Copyright (c) 2011 Nest Labs, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for dpkg, the Debian package management,
+#      system which includes random but important utilities such as
+#      start-stop-daemon.
+#
+
+
+include pre.mak
+
+PackageName		:= dpkg
+
+PackageExtension	:= tar.bz2
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+LicenseSourceFile	:= $(PackageSourceDir)/COPYING
+
+CleanPaths		+= $(PackageLicenseFile)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(LicenseSourceFile): $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(LicenseSourceFile)
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+$(BuildDirectory)/source: | $(PackageSourceDir)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+$(BuildDirectory)/patch: $(BuildDirectory)/source
+	$(Verbose)touch $@
+
+# Generate the package build makefile.
+# Configure the source for building.
+
+$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
+	$(Verbose)cd $(BuildDirectory) && \
+	$(CURDIR)/$(PackageSourceDir)/configure \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	--build=$(HostTuple) \
+	--host=$(TargetTuple) \
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--localstatedir=/var \
+	--without-dselect
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/build: $(BuildDirectory)/configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	DESTDIR=$(ResultDirectory) \
+	install
+	$(Verbose)touch $@
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/dpkg.patches/dpkg-01.description b/dpkg.patches/dpkg-01.description
new file mode 100644
index 0000000..de36563
--- /dev/null
+++ b/dpkg.patches/dpkg-01.description
@@ -0,0 +1,2 @@
+This is to use clock_gettime() instead of gettimeofday() for start-stop-daemon.  Because time-of-day can change while doing stop daemon, the timeout can happen prematurally.
+In order for it to be able to compile with older kernel, manually link to -lrt if necessary.
diff --git a/dpkg.patches/dpkg-01.patch b/dpkg.patches/dpkg-01.patch
new file mode 100644
index 0000000..853d68d
--- /dev/null
+++ b/dpkg.patches/dpkg-01.patch
@@ -0,0 +1,80 @@
+diff -aruN a/utils/start-stop-daemon.c b/utils/start-stop-daemon.c
+--- a/utils/start-stop-daemon.c	2011-10-11 22:56:12.000000000 -0700
++++ b/utils/start-stop-daemon.c	2015-11-24 10:37:17.354279923 -0800
+@@ -79,6 +79,7 @@
+ 
+ #include <sys/types.h>
+ #include <sys/time.h>
++#include <time.h>
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <sys/termios.h>
+@@ -288,8 +289,16 @@
+ static void
+ xgettimeofday(struct timeval *tv)
+ {
+-	if (gettimeofday(tv, NULL) != 0)
++	struct timespec tp;
++	if (clock_gettime(CLOCK_MONOTONIC, &tp))
+ 		fatal("gettimeofday failed");
++
++	/*
++	 * Convert from timespec to timeval
++	 * We do not care about microseconds, set to 0
++	 */
++	tv->tv_sec = tp.tv_sec;
++	tv->tv_usec = 0;
+ }
+ 
+ static void
+diff -aruN a/configure b/configure
+--- a/configure     2011-10-13 22:09:45.000000000 -0700
++++ b/configure        2015-11-24 14:33:53.319638762 -0800
+@@ -9350,6 +9350,46 @@
+   SSD_LIBS="${SSD_LIBS:+$SSD_LIBS }-lihash"
+ fi
+
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
++$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
++if ${ac_cv_lib_rt_clock_gettime+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  ac_check_lib_save_LIBS=$LIBS
++LIBS="-lrt  $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++/* Override any GCC internal prototype to avoid an error.
++   Use char because int might match the return type of a GCC
++   builtin and then its argument prototype would still apply.  */
++#ifdef __cplusplus
++extern "C"
++#endif
++char clock_gettime ();
++int
++main ()
++{
++return clock_gettime ();
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++  ac_cv_lib_rt_clock_gettime=yes
++else
++  ac_cv_lib_rt_clock_gettime=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++    conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
++$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
++if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
++  SSD_LIBS="${SSD_LIBS:+$SSD_LIBS }-lrt"
++fi
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for proc_stat_list_create in -lps" >&5
+ $as_echo_n "checking for proc_stat_list_create in -lps... " >&6; }
+ if ${ac_cv_lib_ps_proc_stat_list_create+:} false; then :
+
diff --git a/dpkg.tar.bz2 b/dpkg.tar.bz2
new file mode 100644
index 0000000..6e1ec0f
--- /dev/null
+++ b/dpkg.tar.bz2
Binary files differ
diff --git a/dpkg.url b/dpkg.url
new file mode 100644
index 0000000..4f74d70
--- /dev/null
+++ b/dpkg.url
@@ -0,0 +1 @@
+http://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_1.16.1.1.tar.bz2
diff --git a/dpkg.version b/dpkg.version
new file mode 100644
index 0000000..3407906
--- /dev/null
+++ b/dpkg.version
@@ -0,0 +1 @@
+1.16.1.1