diff --git a/bin/debpkg-bootstrap-branches b/bin/debpkg-bootstrap-branches new file mode 100755 index 0000000..7c4e10c --- /dev/null +++ b/bin/debpkg-bootstrap-branches @@ -0,0 +1,109 @@ +#!/bin/bash + +set -e +set -x +set -o pipefail + +package=$(basename $(pwd)) +module=${package//-/.} + +if [ $# -ne 0 ]; then + last_debian_rev=$1 +else + last_debian_rev=master +fi + +git branch -D pristine-tar debian/upstream debian/unstable-swh debian/stretch-swh || true + +for tag in `git tag -l debian/*`; do + git tag -d $tag +done + +for tag in `git tag -l --sort=v:refname v\*`; do + ver=${tag/v/} + if [ -f ../packages/${package}_${ver}.orig.tar.gz ]; then + continue + fi + + git checkout $tag + if [ -d swh ]; then + git clean -dfx swh + fi + if [ -f yarn.lock ]; then + (yarn install --frozen-lockfile && yarn build) || true + fi + find . -maxdepth 1 -type d -name '*.egg-info' -exec rm -r '{}' \+ + python3 setup.py egg_info + pname=$(awk '/^Name:/{print $2}' *.egg-info/PKG-INFO) + pver=$(awk '/^Version:/{print $2}' *.egg-info/PKG-INFO) + python3 setup.py sdist -d ../packages + mv ../packages/${pname}-${pver}.tar.gz ../packages/${package}_${ver}.orig.tar.gz +done + +upstream_tag=v0.0.1 +ver=0.0.1 + +author_name=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggername)%(else)%(authorname)%(end)" "${upstream_tag}") +author_email=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggeremail)%(else)%(authoremail)%(end)" "${upstream_tag}") +# Strip <> +author_email=${author_email:1:-1} +author_date=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggerdate:iso)%(else)%(authordate:iso)%(end)" "${upstream_tag}") + +export DEBEMAIL="${author_email}" +export DEBFULLNAME="${author_name}" +export GIT_AUTHOR_NAME="${author_name}" +export GIT_AUTHOR_EMAIL="${author_email}" +export GIT_AUTHOR_DATE="${author_date}" +export GIT_COMMITTER_NAME="${author_name}" +export GIT_COMMITTER_EMAIL="${author_email}" +export GIT_COMMITTER_DATE="${author_date}" + +git checkout $upstream_tag +git clean -dfx +git checkout -b debian/upstream + +git ls-tree --name-only HEAD | xargs rm -r +tar -x --strip-components 1 -f ../packages/${package}_0.0.1.orig.tar.gz +git add . +git commit --no-verify -m "Import upstream version 0.0.1" +git tag debian/upstream/0.0.1 + +git checkout --orphan pristine-tar +pristine-tar commit ../packages/${package}_0.0.1.orig.tar.gz + +git checkout debian/upstream +git checkout -b debian/unstable-swh +git checkout ${last_debian_rev} -- debian +cat > debian/gbp.conf << EOF +[DEFAULT] +upstream-branch=debian/upstream +upstream-tag=debian/upstream/%(version)s +upstream-vcs-tag=v%(version)s +debian-branch=debian/unstable-swh +pristine-tar=True +EOF + +rm debian/changelog +faketime "${author_date}" dch --create --package ${package} -v 0.0.1-1~swh1 'Initial release' + +git tag -l --format="%(contents:subject)%(if)%(contents:body)%(then)%0a%(contents:body)%(end)" "${upstream_tag}" | sed -E -e '/^$/d' -e 's/^ *(- *)?//' | while read line; do + faketime "${author_date}" dch "${line}" +done + +faketime "${author_date}" dch -D unstable-swh --force-distribution '' + +git add debian +git commit --no-verify -m "Updated debian directory for version 0.0.1" + +git checkout -b debian/stretch-swh +faketime "${author_date}" dch --bpo -D stretch-swh --force-distribution '' +git add debian/changelog +sed -i s/unstable/stretch/ debian/gbp.conf +git add debian/gbp.conf +git commit --no-verify -m "Updated debian stretch backport directory for version 0.0.1" + +for tag in `git tag -l --sort=v:refname v\* | tail -n +2`; do + version=${tag/v/} + echo $tag: $version + ../bin/debpkg-bump-version $version ../packages/${package}_${version}.orig.tar.gz +done diff --git a/bin/debpkg-bump-version b/bin/debpkg-bump-version new file mode 100755 index 0000000..624b223 --- /dev/null +++ b/bin/debpkg-bump-version @@ -0,0 +1,75 @@ +#!/bin/bash + +set -e + +if [ $# -lt 2 -o $# -gt 3 ]; then + echo "usage: $0 []" + exit 2 +fi + +newver="$1" +shift +sdist="$1" +shift +if [ $# -eq 1 ]; then + upstream_tag=$1 + shift +else + upstream_tag="v${newver}" +fi + +debian_tag="debian/upstream/${newver}" + +echo 'Updating tags...' +git fetch --tags + +if git show-ref --quiet "refs/tags/${debian_tag}"; then + echo "Tag ${debian_tag} already exists!" + exit 0 +fi + +if ! git show-ref --quiet "refs/tags/${upstream_tag}"; then + echo "No tag ${upstream_tag} exists, aborting!" + exit 3 +fi + +if ! git diff-index --quiet HEAD --; then + echo "Git repository not clean, aborting!" + git status + exit 4 +fi + +author_name=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggername)%(else)%(authorname)%(end)" "${upstream_tag}") +author_email=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggeremail)%(else)%(authoremail)%(end)" "${upstream_tag}") +# Strip <> +author_email=${author_email:1:-1} +author_date=$(git tag -l --format="%(if)%(*objecttype)%(then)%(taggerdate:iso)%(else)%(authordate:iso)%(end)" "${upstream_tag}") + +export DEBEMAIL="${author_email}" +export DEBFULLNAME="${author_name}" +export GIT_AUTHOR_NAME="${author_name}" +export GIT_AUTHOR_EMAIL="${author_email}" +export GIT_AUTHOR_DATE="${author_date}" +export GIT_COMMITTER_NAME="${author_name}" +export GIT_COMMITTER_EMAIL="${author_email}" +export GIT_COMMITTER_DATE="${author_date}" + +git checkout debian/unstable-swh +gbp import-orig -u "${newver}" "${sdist}" +faketime "${author_date}" dch -v "${newver}-1~swh1" '' +git tag -l --format="%(contents:subject)%(if)%(contents:body)%(then)%0a%(contents:body)%(end)" "${upstream_tag}" | sed -E -e '/^$/d' -e 's/^ *(- *)?//' | while read line; do + faketime "${author_date}" dch "${line}" +done +faketime "${author_date}" dch -D unstable-swh --force-distribution '' +git add debian/changelog +git commit --no-verify -m "Updated debian directory for version ${newver}" + +git checkout debian/stretch-swh +git merge debian/unstable-swh --no-commit --no-edit || true +git checkout debian/unstable-swh -- debian/changelog +git add debian/changelog +git commit --no-verify --no-edit + +faketime "${author_date}" dch --bpo -D stretch-swh --force-distribution '' +git add debian/changelog +git commit --no-verify -m "Updated debian stretch backport directory for version ${newver}" diff --git a/bin/debpkg-update-metadata b/bin/debpkg-update-metadata new file mode 100755 index 0000000..c41f2c1 --- /dev/null +++ b/bin/debpkg-update-metadata @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +import glob +import os +import sys + +sys.path.append('/usr/share/dh-python') + +from dhpython.pydist import guess_dependency + + +def parse_requirements(filename): + requirements = [] + if not os.path.exists(filename): + return requirements + + with open(filename) as f: + for line in f.readlines(): + line = line.strip() + if not line or line.startswith('#'): + continue + requirements.append(line) + return requirements + + +def dependencies_from_requirements(directory): + requirements = [] + for filename in glob.glob(os.path.join(directory, 'requirements*.txt')): + requirements.extend(parse_requirements(filename)) + + for req in set(requirements): + yield guess_dependency('cpython3', req, accept_upstream_versions=True) + + +def get_all_dependencies(directory): + dependencies = ['debhelper (>= 11)', 'python3-all', 'dh-python (>= 3)'] + yield from dependencies + yield from dependencies_from_requirements(directory) + + +if __name__ == '__main__': + if len(sys.argv) != 2: + dir = '.' + else: + dir = sys.argv[1] + for dep in get_all_dependencies(dir): + print(dep)