|
|
@@ -125,26 +125,33 @@ buildsimplenativepackage() {
|
|
|
local RELEASE="${4:-unstable}"
|
|
|
local DEPENDENCIES="$5"
|
|
|
local DESCRIPTION="$6"
|
|
|
+ local SECTION="${7:-others}"
|
|
|
+ local DISTSECTION
|
|
|
+ if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then
|
|
|
+ DISTSECTION="main"
|
|
|
+ else
|
|
|
+ DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)"
|
|
|
+ fi
|
|
|
msgndebug "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CDEBUG}… "
|
|
|
local BUILDDIR=incoming/${NAME}-${VERSION}
|
|
|
mkdir -p ${BUILDDIR}/debian/source
|
|
|
cd ${BUILDDIR}
|
|
|
echo "* most suckless software product ever" > FEATURES
|
|
|
- test -e debian/copyright || (echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright)
|
|
|
- test -e debian/changelog || (echo "$NAME ($VERSION) $RELEASE; urgency=low
|
|
|
+ test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright
|
|
|
+ test -e debian/changelog || echo "$NAME ($VERSION) $RELEASE; urgency=low
|
|
|
|
|
|
* Initial release
|
|
|
|
|
|
- -- Joe Sixpack <joe@example.org> $(date -R)" > debian/changelog)
|
|
|
- test -e debian/control || (echo "Source: $NAME
|
|
|
-Section: admin
|
|
|
+ -- Joe Sixpack <joe@example.org> $(date -R)" > debian/changelog
|
|
|
+ test -e debian/control || echo "Source: $NAME
|
|
|
+Section: $SECTION
|
|
|
Priority: optional
|
|
|
Maintainer: Joe Sixpack <joe@example.org>
|
|
|
Build-Depends: debhelper (>= 7)
|
|
|
Standards-Version: 3.9.1
|
|
|
|
|
|
Package: $NAME
|
|
|
-Architecture: $ARCH" > debian/control)
|
|
|
+Architecture: $ARCH" > debian/control
|
|
|
test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> debian/control
|
|
|
if [ -z "$DESCRIPTION" ]; then
|
|
|
echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE}
|
|
|
@@ -154,17 +161,24 @@ Architecture: $ARCH" > debian/control)
|
|
|
else
|
|
|
echo "Description: $DESCRIPTION" >> debian/control
|
|
|
fi
|
|
|
- test -e debian/compat || (echo "7" > debian/compat)
|
|
|
- test -e debian/source/format || (echo "3.0 (native)" > debian/source/format)
|
|
|
+ test -e debian/compat || echo "7" > debian/compat
|
|
|
+ test -e debian/source/format || echo "3.0 (native)" > debian/source/format
|
|
|
test -e debian/rules || cp /usr/share/doc/debhelper/examples/rules.tiny debian/rules
|
|
|
- dpkg-buildpackage -uc -us -a$ARCH > /dev/null 2> /dev/null
|
|
|
+ local BUILT="$(dpkg-buildpackage -uc -us -a$ARCH 2> /dev/null)"
|
|
|
+ local PKGS="$( echo "$BUILT" | grep '^dpkg-deb: building package' | cut -d'/' -f 2 | sed -e "s#'\.##")"
|
|
|
+ local SRCS="$( echo "$BUILT" | grep '^dpkg-source: info: building' | grep -o '[a-z0-9._-]*$')"
|
|
|
cd - > /dev/null
|
|
|
+ for PKG in $PKGS; do
|
|
|
+ echo "pool/${PKG}" >> ./incoming/${RELEASE}.${DISTSECTION}.pkglist
|
|
|
+ done
|
|
|
+ for SRC in $SRCS; do
|
|
|
+ echo "pool/${SRC}" >> ./incoming/${RELEASE}.${DISTSECTION}.srclist
|
|
|
+ done
|
|
|
rm -rf $BUILDDIR
|
|
|
msgdone "debug"
|
|
|
}
|
|
|
|
|
|
buildaptarchive() {
|
|
|
- msgninfo "Build APT archive for ${CCMD}$0${CINFO} based on "
|
|
|
if [ -d incoming ]; then
|
|
|
buildaptarchivefromincoming $*
|
|
|
else
|
|
|
@@ -181,6 +195,14 @@ createaptftparchiveconfig() {
|
|
|
CacheDir "' >> ftparchive.conf
|
|
|
echo -n $(readlink -f ..) >> ftparchive.conf
|
|
|
echo -n '";
|
|
|
+ FileListDir "' >> ftparchive.conf
|
|
|
+ echo -n $(readlink -f pool/) >> ftparchive.conf
|
|
|
+ echo -n '";
|
|
|
+};
|
|
|
+Default {
|
|
|
+ Packages::Compress ". gzip bzip2 lzma";
|
|
|
+ Sources::Compress ". gzip bzip2 lzma";
|
|
|
+ Contents::Compress ". gzip bzip2 lzma";
|
|
|
};
|
|
|
TreeDefault {
|
|
|
Directory "pool/";
|
|
|
@@ -199,42 +221,61 @@ APT {
|
|
|
};
|
|
|
};
|
|
|
};' >> ftparchive.conf
|
|
|
- if [ -z "$1" ]; then
|
|
|
- echo -n 'tree "dists/unstable" {
|
|
|
+ for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do
|
|
|
+ echo -n 'tree "dists/' >> ftparchive.conf
|
|
|
+ echo -n "$DIST" >> ftparchive.conf
|
|
|
+ echo -n '" {
|
|
|
Architectures "' >> ftparchive.conf
|
|
|
echo -n "$ARCHS" >> ftparchive.conf
|
|
|
- echo 'source";
|
|
|
- Sections "main";
|
|
|
+ echo -n 'source";
|
|
|
+ FileList "' >> ftparchive.conf
|
|
|
+ echo -n "${DIST}.\$(SECTION).pkglist" >> ftparchive.conf
|
|
|
+ echo -n '";
|
|
|
+ SourceFileList "' >> ftparchive.conf
|
|
|
+ echo -n "${DIST}.\$(SECTION).srclist" >> ftparchive.conf
|
|
|
+ echo -n '";
|
|
|
+ Sections "' >> ftparchive.conf
|
|
|
+ echo -n "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')" >> ftparchive.conf
|
|
|
+ echo '";
|
|
|
};' >> ftparchive.conf
|
|
|
- fi
|
|
|
+ done
|
|
|
+ less ftparchive.conf
|
|
|
}
|
|
|
|
|
|
buildaptftparchivedirectorystructure() {
|
|
|
- local ARCHS="$(find pool/ -name '*.deb' | grep -oE '_[a-z0-9-]+\.deb$' | sort | uniq | sed -e '/^_all.deb$/ d' -e 's#^_\([a-z0-9-]*\)\.deb$#\1#')"
|
|
|
- for arch in $ARCHS; do
|
|
|
- mkdir -p dists/unstable/main/binary-${arch}
|
|
|
+ local DISTS="$(grep -i '^tree ' ftparchive.conf | cut -d'/' -f 2 | sed -e 's#".*##')"
|
|
|
+ for DIST in $DISTS; do
|
|
|
+ local SECTIONS="$(grep -i -A 5 "dists/$DIST" ftparchive.conf | grep -i 'Sections' | cut -d'"' -f 2)"
|
|
|
+ for SECTION in $SECTIONS; do
|
|
|
+ local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')"
|
|
|
+ for ARCH in $ARCHS; do
|
|
|
+ mkdir -p dists/${DIST}/${SECTION}/binary-${ARCH}
|
|
|
+ done
|
|
|
+ mkdir -p dists/${DIST}/${SECTION}/source
|
|
|
+ mkdir -p dists/${DIST}/${SECTION}/i18n
|
|
|
+ done
|
|
|
done
|
|
|
- mkdir -p dists/unstable/main/source
|
|
|
- mkdir -p dists/unstable/main/i18n
|
|
|
}
|
|
|
|
|
|
buildaptarchivefromincoming() {
|
|
|
- msginfo "incoming packages…"
|
|
|
+ msginfo "Build APT archive for ${CCMD}$0${CINFO} based on incoming packages…"
|
|
|
cd aptarchive
|
|
|
[ -e pool ] || ln -s ../incoming pool
|
|
|
[ -e ftparchive.conf ] || createaptftparchiveconfig
|
|
|
[ -e dists ] || buildaptftparchivedirectorystructure
|
|
|
+ msgninfo "\tGenerate Packages, Sources and Contents files… "
|
|
|
aptftparchive -qq generate ftparchive.conf
|
|
|
+ msgdone "info"
|
|
|
+ msgninfo "\tGenerate Release files… "
|
|
|
for dir in $(find ./dists -mindepth 1 -maxdepth 1 -type d); do
|
|
|
- aptftparchive -qq release $dir > $dir/Release
|
|
|
- sed -i -e '/0 Release$/ d' $dir/Release # remove the self reference
|
|
|
+ aptftparchive -qq release $dir | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference
|
|
|
done
|
|
|
cd - > /dev/null
|
|
|
msgdone "info"
|
|
|
}
|
|
|
|
|
|
buildaptarchivefromfiles() {
|
|
|
- msginfo "prebuild files…"
|
|
|
+ msginfo "Build APT archive for ${CCMD}$0${CINFO} based on prebuild files…"
|
|
|
cd aptarchive
|
|
|
if [ -f Packages ]; then
|
|
|
msgninfo "\tPackages file… "
|
|
|
@@ -250,13 +291,26 @@ buildaptarchivefromfiles() {
|
|
|
cat Sources | lzma > Sources.lzma
|
|
|
msgdone "info"
|
|
|
fi
|
|
|
- aptftparchive -qq release . > Release
|
|
|
- sed -i -e '/0 Release$/ d' Release # remove the self reference
|
|
|
+ msgninfo "\tRelease file… "
|
|
|
+ aptftparchive -qq release . | sed -e '/0 Release$/ d' > Release # remove the self reference
|
|
|
+ msgdone "info"
|
|
|
cd ..
|
|
|
}
|
|
|
|
|
|
-setupaptarchive() {
|
|
|
- buildaptarchive
|
|
|
+setupdistsaptarchive() {
|
|
|
+ local APTARCHIVE=$(readlink -f ./aptarchive)
|
|
|
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list
|
|
|
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list
|
|
|
+ for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do
|
|
|
+ SECTIONS=$(find ./aptarchive/dists/${DISTS}/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ')
|
|
|
+ msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… "
|
|
|
+ echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list
|
|
|
+ echo "deb-src file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list
|
|
|
+ msgdone "info"
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+setupflataptarchive() {
|
|
|
local APTARCHIVE=$(readlink -f ./aptarchive)
|
|
|
if [ -f ${APTARCHIVE}/Packages ]; then
|
|
|
msgninfo "\tadd deb sources.list line… "
|
|
|
@@ -272,6 +326,15 @@ setupaptarchive() {
|
|
|
else
|
|
|
rm -f rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list
|
|
|
fi
|
|
|
+}
|
|
|
+
|
|
|
+setupaptarchive() {
|
|
|
+ buildaptarchive
|
|
|
+ if [ -e aptarchive/dists ]; then
|
|
|
+ setupdistsaptarchive
|
|
|
+ else
|
|
|
+ setupflataptarchive
|
|
|
+ fi
|
|
|
aptget update -qq
|
|
|
}
|
|
|
|