Skip to content
Snippets Groups Projects
Commit cd2a013c authored by Kevin Mittman's avatar Kevin Mittman
Browse files

Add Debian package example

parent 44dfb51f
No related branches found
No related tags found
No related merge requests found
PWD = $(shell pwd)
VERSION = 1.0-1
GPG_HEADLESS = --openpgp --decrypt --no-auto-check-trustdb --batch --no-tty --status-fd 1
DEB_ROOT = example
DEB_ARCH = all
IN_FILES = $(wildcard $(DEB_ROOT)/debian/templates/*.install.in)
DEB_PACKAGE = $(join $(addsuffix ../../, $(dir $(IN_FILES))), $(notdir $(IN_FILES:.install.in=_$(VERSION)_$(DEB_ARCH).deb)))
META_ROOT = meta
default: all
$(DEB_PACKAGE): $(IN_FILES)
cd $(DEB_ROOT)/; make -f debian/rules fill_templates VERSION=1.0
cd $(DEB_ROOT)/; dpkg-buildpackage -b -us -uc
mv *.deb *.buildinfo *.changes $(DEB_ROOT)/
cd $(DEB_ROOT)/; rm -rf debian/`basename $< | cut -d. -f1`
all: $(DEB_PACKAGE) Release trash
@for deb in $(DEB_PACKAGE); do ar -p "$(DEB_PACKAGE)" _gpgbuilder 2>&1 | GNUPGHOME=/dev/null gpg $GPG_HEADLESS 2>&1 | grep -q "[GNUPG:\] NO_PUBKEY" || echo "UNSIGNED `basename $(DEB_PACKAGE)`"; done
@#ls -1 $(META_DATA)
debian: $(DEB_PACKAGE)
Release: $(DEB_PACKAGE)
@for pkg in $(DEB_PACKAGE); do deb=`readlink -m $$pkg`; ln -s -f $$deb $(META_ROOT)/`basename $$deb`; done
cd $(META_ROOT); ./stubrepo-debian.sh *.deb
meta: Release
trash:
cd $(DEB_ROOT)/; rm -f *.changes *.buildinfo
cd $(DEB_ROOT)/; rm -f debian/changelog debian/control debian/*.log debian/*.install debian/*.substvars debian/files
cd $(DEB_ROOT)/; rm -rf debian/example debian/.debhelper
clean: trash
rm -f $(META_ROOT)/Packages $(META_ROOT)/Packages.gz
rm -f $(META_ROOT)/Release
rm -f $(META_ROOT)/Release.gpg $(META_ROOT)/InRelease
rm -f $(META_ROOT)/*.deb
rm -f $(DEB_ROOT)/*.deb
.PHONY: all default debian meta trash clean
9
#!/usr/bin/make -f
DH_VERBOSE := 1
VERSION ?= 999
BRANCH ?= 999
REVISION ?= 1
TIMESTAMP := $(shell date -R)
%:
dh $@
fill_templates:
for template in debian/templates/*.in; do \
dest=`echo $$template | \
sed -e "s|\.in\$$||" \
-e "s|templates\/||" \
-e "s|BRANCH|$(BRANCH)|"`; \
sed -e "s|#VERSION#|$(VERSION)|g" \
-e "s|#BRANCH#|$(BRANCH)|g" \
-e "s|#SONAME#|$(SONAME)|g" \
-e "s|#REVISION#|$(REVISION)|g" \
-e "s|#TIMESTAMP#|$(TIMESTAMP)|g" \
-e "s|#DEBLIBINSTDIR#|$(DEBLIBINSTDIR)|g" \
$$template > $$dest; \
done
override_dh_clean:
dh_clean
override_dh_auto_clean:
date
override_dh_auto_build:
rm -f lib*.so
override_signfile:
cal
override_dh_auto_install:
dh_install --exclude=none --fail-missing
override_dh_makeshlibs:
DEB_BUILD_GNU_TYPE=$(DEB_HOST_GNU_TYPE) dh_makeshlibs
#
# Turn off a few of the debhelper scripts
#
override_dh_usrlocal:
override_dh_strip:
override_dh_strip_nondeterminism:
#
# Disable dh_shlibdeps to allow packaging to run on systems which aren't
# the same architecture we're packaging for.
#
override_dh_shlibdeps:
ifneq ($(DISABLE_FIXPERMS),)
override_dh_fixperms:
endif
3.0 (quilt)
example (#VERSION#-#REVISION#) stable; urgency=low
* Example Debian package build
-- maintainer <maintainer@example.com> #TIMESTAMP#
Source: example
Maintainer: maintainer <maintainer@example.com>
Section: multiverse/devel
Priority: optional
Standards-Version: 3.8.0
Package: example
Architecture: all
Depends: ${misc:Depends}
Description: Example package for test of Debian package signing
#!/bin/bash
repo_origin="EXAMPLE"
repo_label="Unstable"
pkg_arch="all"
pkg_date=$(date -R -u)
err() { echo "ERROR: $*"; exit 1; }
find_tag() {
local index=0
for key in ${pkg_tags[@]}; do
if [[ "$key" == "null" ]]; then
pkg_tags[$index]="null"
elif [[ "$key" == "$1" ]] || [[ -z "$1" ]]; then
value=$(dpkg-deb --field "$filename" "$key")
echo "$key: $value"
pkg_tags[$index]="null"
fi
index=$((index+1))
done
}
deb_pkg_info() {
[[ -f "$1" ]] || err "deb_pkg_info() file $1 not found"
# Calculate some values
pkg_size=$(du -b "$1" 2>/dev/null | awk '{print $1}')
pkg_md5=$(md5sum "$1" 2>/dev/null | awk '{print $1}')
pkg_sha1=$(sha1sum "$1" 2>/dev/null | awk '{print $1}')
pkg_sha256=$(sha256sum "$1" 2>/dev/null | awk '{print $1}')
pkg_sha512=$(sha512sum "$1" 2>/dev/null | awk '{print $1}')
# Order matters
filename="$1"
pkg_tags=($(dpkg --info "$filename" | sed 's/^ //' | grep -E "^[A-Za-z-]+:" | awk -F ":" '{print $1}'))
taglist="Package Version Architecture Multi-Arch Priority Section Source Origin Maintainer Original-Maintainer"
taglist+="Bugs Installed-Size Provides Depends Recommends Suggests Conflicts Breaks Replaces"
for tag in $taglist; do
find_tag $tag
done
# Append calculated values
echo "Filename: ./$1"
echo "Size: $pkg_size"
echo "MD5sum: $pkg_md5"
echo "SHA1: $pkg_sha1"
echo "SHA256: $pkg_sha256"
echo "SHA512: $pkg_sha512"
# Append package description
find_tag "Homepage"
find_tag "Description"
# Anything leftover
find_tag
}
deb_metadata()
{
local Packages="$1"
[[ -f "$Packages" ]] || err "Packages file not found"
# Compress manifest
gzip -c -9 -f $Packages > ${Packages}.gz
echo ":: ${Packages}.gz"
[[ -f "Packages.gz" ]] || err "Packages.gz file not found"
# Calculate hashes
txt_bytes=$(wc --bytes Packages | awk '{print $1}')
txt_md5=$(md5sum Packages | awk '{print $1}')
txt_sha1=$(sha1sum Packages | awk '{print $1}')
txt_sha256=$(sha256sum Packages | awk '{print $1}')
gz_bytes=$(wc --bytes Packages.gz | awk '{print $1}')
gz_md5=$(md5sum Packages.gz | awk '{print $1}')
gz_sha1=$(sha1sum Packages.gz | awk '{print $1}')
gz_sha256=$(sha256sum Packages.gz | awk '{print $1}')
# Build checksum file
pkg_arch=$(basename "$subpath")
pkg_date=$(date -R -u)
{
echo "Origin: ${repo_origin}"
echo "Label: ${repo_label}"
echo "Architecture: ${pkg_arch}"
echo "Date: ${pkg_date}"
echo "MD5Sum:"
printf " %s %48d %s\n" $txt_md5 $txt_bytes Packages
printf " %s %48d %s\n" $gz_md5 $gz_bytes Packages.gz
echo "SHA1:"
printf " %s %40d %s\n" $txt_sha1 $txt_bytes Packages
printf " %s %40d %s\n" $gz_sha1 $gz_bytes Packages.gz
echo "SHA256:"
printf " %s %16d %s\n" $txt_sha256 $txt_bytes Packages
printf " %s %16d %s\n" $gz_sha256 $gz_bytes Packages.gz
# FIXME prevent hash mismatch error
echo "Acquire-By-Hash: no"
} > "Release"
}
if [[ -z $1 ]] || [[ ! -f $1 ]]; then
err "USAGE: $0 [*.deb]"
fi
if [[ ! -f "Package" ]]; then
for package in $@; do
deb_pkg_info "$package" >> Packages
done
fi
if [[ ! -f "Release" ]]; then
deb_metadata "Packages"
fi
### END ###
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment