#!/bin/bash # makes a source package out of a git tree and packaging git tree # usage: # jenkins-makesources conffile # # conffile: # # upstream_source = source package name # upstream_repo = git url to upstream # # packaging_dir = directory of the debian/ contents # packaging_repo = git url to packaging # packaging_tar = do package in tar mode # base_version = base version for package # distribution = target distro # output_file = file to output dsc filename to - defaults to upstream_source.dsc # # variables may already by set, in that case just call this with # ./jenkins-makesources # set -e if [ -r "$1" ]; then source "$1" fi base_version=${base_version:-0} distribution=${distribution:-sid} extraver=${extraver:-1} output_file=${output_file:-${upstream_source}.dsc} if [ ! -d $upstream_source ] then git clone $upstream_repo $upstream_source fi (cd $upstream_source && git fetch --tags) if [ -z $packaging_tar ] then if [ ! -d $packaging_dir ] then git clone $packaging_repo $packaging_dir fi packaging_commit=`cd $packaging_dir && git log -n1 --pretty=format:%h` else rm -f *debian.tar* wget $packaging_tar tar xaf *debian.tar* packaging_commit="" packaging_dir=debian/ fi upstream_commit=`cd $upstream_source && git log -n1 --pretty=format:%h` git_version=`cd $upstream_source && git describe --match='v*'`||git_version=$base_version.`date +%Y%m%d` pkg_version=`echo $git_version|sed -e 's/^v//' -e 's/-rc/~rc/' -e 's/-\([0-9]*\)-/+git\1+/'` if [ "x$epoch" != "x" ] then e_version="$epoch:$pkg_version" else e_version=$pkg_version fi currentdate=`date -R` pkg_dir=${upstream_source}-${pkg_version} cp -a $upstream_source "${pkg_dir}.orig" rm -rf "${pkg_dir}.orig/.git" $packaging_dir/.git cp -a "${pkg_dir}.orig" "${pkg_dir}" cp -a $packaging_dir "${pkg_dir}/debian/" tar caf ${upstream_source}_${pkg_version}.orig.tar.xz ${pkg_dir}.orig version=${e_version}-${extraver} echo "Preparing ${version}" cat > /tmp/changelog.header << EOF ${upstream_source} (${version}) ${distribution}; urgency=low * CI - ${upstream_source} snapshot: - repository: ${upstream_repo} - commit: ${upstream_commit} - build: ${BUILD_URL} - debian/ repository: ${packaging_repo} - debian/ commit: ${packaging_commit} -- Linaro Packagers ${currentdate} EOF cat /tmp/changelog.header ${pkg_dir}/debian/changelog > /tmp/changelog mv /tmp/changelog ${pkg_dir}/debian/changelog cd ${pkg_dir} dpkg-buildpackage -d -nc -us -uc -rfakeroot -S cd .. rm -rf ${pkg_dir} echo ${upstream_source}_${pkg_version}-${extraver}.dsc > ${output_file}