From f1e36f7fd068ec68dfab817b942012ba5869a096 Mon Sep 17 00:00:00 2001
From: HungryHobo <HungryHobo@mail.i2p>
Date: Thu, 18 Nov 2010 20:56:42 +0000
Subject: [PATCH] Create Debian packages in debian/packages/ instead of ../

---
 build.xml              | 58 +++++++++++++-----------------------------
 debian/buildpackage.sh | 30 ++++++++++++++++++++++
 debian/makerepo.sh     |  5 ++--
 debian/rules           |  4 +--
 4 files changed, 51 insertions(+), 46 deletions(-)
 create mode 100755 debian/buildpackage.sh

diff --git a/build.xml b/build.xml
index 17a5d36eb..bc0b4cce7 100644
--- a/build.xml
+++ b/build.xml
@@ -37,7 +37,8 @@
         <echo message="  javadoc:   generate javadoc for the entire project into ./build/javadoc" />
         <echo message="  slackpkg:  generate Slackware packages in ./Slackware/i2p and ./Slackware/i2p-base" />
         <echo message="  debianhowto: instructions on building Debian packages" />
-        <echo message="  debian: generate Debian packages (source + binary)" />
+        <echo message="  debian: generate Debian packages in ./debian/packages" />
+        <echo message="          (libc6-i686 and libc6-amd64 required, ant>=1.8 required)" />
         <echo message="  debianrepo: build a Debian repository (reprepro required)" />
         <echo message="  updaterWithDesktopgui: tar the built files and desktopgui in an i2pupdate.zip" />
         <echo message="  pkgWithDesktopgui: distclean then package everything up with the desktopgui" />
@@ -236,19 +237,17 @@
         <delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
         <delete file="i2psnark-standalone.zip" failonerror="false" quiet="true" />
         <delete file="BOB-one.jar" failonerror="false" quiet="true" />	
-    </target>
-    <target name="distclean" depends="clean">
         <delete dir="debian/tmp" />
-        <delete dir="debian/repo" />
         <delete dir="debian/db" />
         <delete file="debian/files" />
         <delete file="debian/build" />
         <delete file="debian/substvars"/>
-      <!-- HH to move
-        <delete>
-            <fileset dir=".." includes="i2p_*.tar.gz,i2p_*.deb,i2p_*.dsc,i2p_*.changes" />
+    </target>
+    <target name="distclean" depends="clean">
+        <delete includeemptydirs="true" removeNotFollowedSymlinks="true" failonerror="false" >
+            <fileset dir="debian/packages" followSymlinks="false" />
         </delete>
-      -->
+        <delete dir="debian/repo" />
         <ant dir="core/java/" target="distclean" />
         <ant dir="router/java/" target="distclean" />
         <ant dir="apps/ministreaming/java/" target="distclean" />
@@ -924,8 +923,9 @@
         <echo message="... and mtn cert t:i2p-${release.number} branch i2p.i2p.release" />
     </target>
 
-    <target name="debian">
-        <!-- same as debian-binary + debian-source, but only one build needed -->
+    <target name="debian" depends="distclean, debian-source, debian-binary" />
+
+    <target name="debian-binary">
         <echo message="Did you update the version in these files?" />
         <exec executable="ls" failonerror="true">
             <arg value="-l" />
@@ -934,35 +934,12 @@
         <echo message="====================" />
         <!-- bundle the 20MB jetty 5 lib since there probably isn't a deb for it -->
         <ant dir="apps/jetty" target="ensureJettylib" />
-        <exec executable="dpkg-buildpackage" failifexecutionfails="true">
-            <arg value="-I_MTN" />
-            <arg value="-ai386" />
-        </exec>
-        <!-- rather than doing a complete new build, recreate debian/tmp by calling the "build" target in debian/rules -->
-        <delete dir="debian/tmp" />
-        <exec executable="dpkg-buildpackage" failifexecutionfails="true">
-            <arg value="-I_MTN" />
-            <arg value="-Tbuild" />
-            <arg value="-aamd64" />
-            <env key="MAKEFLAGS" value="-B" />
+	
+        <exec dir="debian" executable="./buildpackage.sh" failonerror="true">
+            <arg value="i386" />
         </exec>
-        <exec executable="dpkg-buildpackage" failifexecutionfails="true">
-            <arg value="-I_MTN" />
-            <!-- don't clean so the previous package isn't deleted -->
-            <arg value="-nc" />
-            <arg value="-aamd64" />
-        </exec>
-    </target>
-    <target name="debian-binary">
-        <!-- binary only -->
-        <echo message="Did you update the version in these files?" />
-        <exec executable="ls" failonerror="true">
-            <arg value="-l" />
-            <arg value="debian/changelog" />
-        </exec>
-        <echo message="====================" />
-        <exec executable="dpkg-buildpackage" failifexecutionfails="true" >
-            <arg value="-b" />
+        <exec dir="debian" executable="./buildpackage.sh" failonerror="true">
+            <arg value="amd64" />
         </exec>
     </target>
     <target name="debian-source">
@@ -974,9 +951,8 @@
             <arg value="debian/changelog" />
         </exec>
         <echo message="====================" />
-        <exec executable="dpkg-buildpackage" failifexecutionfails="true" >
-            <arg value="-S" />
-            <arg value="-I_MTN" />
+        <exec dir="debian" executable="./buildpackage.sh" failonerror="true">
+            <arg value="source" />
         </exec>
     </target>
     <target name="debianrepo" depends="debian">
diff --git a/debian/buildpackage.sh b/debian/buildpackage.sh
new file mode 100755
index 000000000..0bfdffe3b
--- /dev/null
+++ b/debian/buildpackage.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+# This script takes one argument, which is the architecture to build for,
+# or "source".
+
+echo Target architecture: $1
+VERSION=`grep String\ VERSION ../core/java/src/net/i2p/CoreVersion.java | cut -d\" -f2`
+echo "I2P Version: ${VERSION}"
+builddir="packages/$1/i2p-${VERSION}"
+
+if [ "$1" = "source" ]; then
+    cd ..
+    ant clean
+    tempdir=../_i2p_copy_temp___
+    cp -a . ${tempdir}
+    mkdir -p debian/packages/$1
+    mv ${tempdir} debian/${builddir}
+    cd debian/${builddir}
+    dpkg-buildpackage -I_MTN -Idebian/packages -S
+else
+    mkdir -p ${builddir}
+    cd ${builddir}
+    find ../../../.. -not -name . -and -not -name .. -maxdepth 1 -exec ln -fs {} \;
+    dpkg-buildpackage -I_MTN -b -a$1
+fi
+if [ "$?" -ne 0 ]; then
+  exit 1
+fi
+
+cd ../../..
+rm -rf ${builddir}
diff --git a/debian/makerepo.sh b/debian/makerepo.sh
index 64d696966..ad845f31d 100755
--- a/debian/makerepo.sh
+++ b/debian/makerepo.sh
@@ -28,8 +28,9 @@ echo "SignWith: ${SIGNER}" >> ${CONFFILE}
 
 # create the repository
 echo Building the repository...
-find ../.. -name i2p_*.deb -maxdepth 1 -exec reprepro --ask-passphrase --outdir ${DIR} includedeb all {} \;
-find ../.. -name i2p_*.changes -maxdepth 1 -exec reprepro --ask-passphrase --outdir ${DIR} include all {} \;
+find packages/ -name *.deb -exec reprepro --ask-passphrase --outdir ${DIR} includedeb all {} \;
+find packages/ -name *.changes -exec reprepro --ask-passphrase --outdir ${DIR} include all {} \;
+find packages/ -name *.dsc -exec reprepro --ask-passphrase --outdir ${DIR} includedsc all {} \;
 
 # export the public key
 gpg --armor --export ${SIGNER} > ${DIR}/0x${KEYID}.asc
diff --git a/debian/rules b/debian/rules
index bf63b845c..ea785e0d6 100755
--- a/debian/rules
+++ b/debian/rules
@@ -120,9 +120,7 @@ binary-arch:
 binary-indep:
 
 clean:
-	rm -f debian/build
-	rm -rf debian/tmp/
-	ant distclean
+	ant clean
 	@exit 0
 
 get-orig-source:
-- 
GitLab