Start moving build setup to Build Flows buildflow
authorChristoph Berg <myon@debian.org>
Wed, 16 Dec 2015 06:47:15 +0000 (07:47 +0100)
committerChristoph Berg <myon@debian.org>
Thu, 17 Dec 2015 22:46:21 +0000 (23:46 +0100)
jenkins/Makefile
jenkins/genyaml [new file with mode: 0755]
jenkins/head.yaml [new file with mode: 0644]
jenkins/packages.yaml [new file with mode: 0644]

index 385adb8a7c47646f5cbb794b24657e7b7a711df9..e12249c3c68986a4bd8e45a4fa41c0f9235a0b80 100644 (file)
@@ -1,23 +1,29 @@
-JOBS = pgapt-jobs.yaml
+JOBS = flow.yaml
+JJB = jenkins-job-builder
+#JJB = jenkins-jobs
+
+flow.yaml: packages.yaml head.yaml genyaml
+       ./genyaml > $@.tmp
+       mv $@.tmp $@
 
 # we write to output.tmp first so output.{old,new} are left untouched in case
-# jenkins-jobs aborts
-test:
+# $(JJB) aborts
+test: $(JOBS)
        @echo "*** Testing $(JOBS) ***"
        rm -rf output.tmp
        mkdir output.tmp
-       jenkins-jobs test -o output.tmp $(JOBS)
+       $(JJB) test -o output.tmp $(JOBS)
        if test -d output.new; then rm -rf output.old; mv output.new output.old; fi
        mv output.tmp output.new
        test -d output.old && diff -urp output.old output.new || true
 
 update:
        @echo "*** Updating Jenkins from $(JOBS) ***"
-       jenkins-jobs update $(JOBS)
+       $(JJB) update $(JOBS)
 
 update-pgdgbuild:
        @echo "*** Updating Jenkins from $(JOBS) ***"
-       jenkins-jobs --conf jenkins_jobs.ini update $(JOBS)
+       $(JJB) --conf jenkins_jobs.ini update $(JOBS)
 
 clean:
        rm -rf output output.old
diff --git a/jenkins/genyaml b/jenkins/genyaml
new file mode 100755 (executable)
index 0000000..5ed0564
--- /dev/null
@@ -0,0 +1,162 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Clone 'clone';
+use YAML::Syck;
+
+my $pkg = LoadFile("packages.yaml");
+#use Data::Dumper;
+#print Dumper($pkg);
+#__END__
+my $output = LoadFile("head.yaml");
+
+my @dists = @{$pkg->{distributions}};
+my @archs = @{$pkg->{architectures}};
+
+# generate job groups
+
+foreach my $dist (@dists) {
+  #- job-group:
+  #    name: source-sid
+  #    dist: sid
+  #    jobs:
+  #        - '{name}-source-{dist}'
+  push @$output, {
+    'job-group' => {
+      name => "source-$dist",
+      dist => $dist,
+      jobs => ["{name}-source-{dist}"],
+    }
+  };
+
+  #- job-group:
+  #    name: binaries-sid-amd64
+  #    dist: sid
+  #    arch: amd64
+  #    jobs:
+  #        - '{name}-binaries-{dist}-{arch}'
+  foreach my $arch (@archs) {
+    push @$output, {
+      'job-group' => {
+       name => "binaries-$dist-$arch",
+       dist => $dist,
+       arch => $arch,
+       jobs => ["{name}-binaries-{dist}-{arch}"],
+      }
+    };
+  }
+}
+
+# extract dput_job_template
+my $dput_job_template = $output->[1]->{yamltemplates}->{dput_job_template} || die "could not find dput_job_template in head.yaml";
+my $dput_copyartifact = $dput_job_template->{builders}->[1];
+die "could not find dput_copyartifact in head.yaml" unless $dput_copyartifact->{copyartifact};
+my $build_job_template = $output->[1]->{yamltemplates}->{build_job_template} || die "could not find build_job_template in head.yaml";
+
+foreach my $package (sort keys %{$pkg->{packages}}) {
+  my $p = $pkg->{packages}->{$package}; # contents of package hash
+
+  # write project to generate source/binaries jobs
+  #- project:
+  #    name: mimeo
+  #    git-url: https://anonscm.debian.org/git/pkg-postgresql/mimeo.git
+  #    git-branch: debian
+  #    jobs:
+  #        - source-sid
+  #        - source-jessie
+  #        - binaries-sid-amd64
+  #        - binaries-sid-i386
+  #        - binaries-jessie-amd64
+  #        - binaries-jessie-i386
+
+  my $project = { name => $package };
+  if ($p->{'git-url'}) {
+    $project->{'git-url'} = $p->{'git-url'};
+    $project->{'git-branch'} = $p->{'git-branch'} || 'master';
+  }
+  foreach my $dist (@dists) {
+    push @{$project->{jobs}}, "source-$dist";
+    foreach my $arch (@archs) {
+      push @{$project->{jobs}}, "binaries-$dist-$arch";
+    }
+  }
+  push @$output, { 'project' => $project };
+
+  # write dput job
+  #- job:
+  #    <<: *dput_job_template
+  #    name: mimeo-dput
+  #    builders:
+  #        - shell: 'rm -rf *'
+  #        - copyartifact:
+  #            <<: *dput_copyartifact
+  #            project: 'mimeo-binaries-sid-amd64'
+  #        - copyartifact:
+  #            <<: *dput_copyartifact
+  #            project: 'mimeo-binaries-sid-i386'
+  #        - shell: 'dput-pgdg $queue'
+  my $dput_job = clone $dput_job_template;
+  $dput_job->{name} = "$package-dput";
+  $dput_job->{builders} = [ { shell => 'rm -rf *' } ];
+  foreach my $dist (@dists) {
+    foreach my $arch (@archs) {
+      my $copy = clone $dput_copyartifact;
+      $copy->{copyartifact}->{project} = "$package-binaries-$dist-$arch";
+      push @{$dput_job->{builders}}, $copy;
+    }
+  }
+  push @{$dput_job->{builders}}, { shell => 'dput-pgdg $queue' };
+  push @$output, { 'job' => $dput_job };
+
+  # name: 'foobar-build'
+  # project-type: flow
+  # parameters:
+  #     - choice: *queue_choice
+  #     - string:
+  #         <<: *git_branch
+  #         default: 'debian'
+  #     - string: *revision_string
+  # dsl: |
+  #     build("foobar-source-sid", branch: params["branch"], revision: params["revision"])
+  #     parallel (
+  #         { build("foobar-source-jessie", branch: params["branch"], revision: params["revision"]) },
+  #     )
+  #     build("foobar-binaries-sid-amd64")
+  #     parallel (
+  #         { build("foobar-binaries-sid-i386") },
+  #         { build("foobar-binaries-jessie-amd64") },
+  #         { build("foobar-binaries-jessie-i386") },
+  #     )
+  #     build("foobar-dput", queue: params["queue"])
+  my $build_job = clone $build_job_template;
+  $build_job->{name} = "$package-build";
+
+  my $dsl = "build(\"$package-source-sid\", branch: params[\"branch\"], revision: params[\"revision\"])\n";
+
+  $dsl .= "parallel (\n";
+  foreach my $dist (@dists) {
+    next if ($dist eq 'sid');
+    $dsl .= "    { build(\"$package-source-$dist\", branch: params[\"branch\"], revision: params[\"revision\"]) },\n";
+  }
+  $dsl .= ")\n";
+
+  $dsl .= "build(\"$package-binaries-sid-amd64\")\n";
+
+  $dsl .= "parallel (\n";
+  foreach my $dist (@dists) {
+    foreach my $arch (@archs) {
+      next if ("$dist-$arch" eq 'sid-amd64');
+      $dsl .= "    { build(\"$package-binaries-$dist-$arch\") },\n";
+    }
+  }
+  $dsl .= ")\n";
+
+  $dsl .= "build(\"$package-dput\", queue: params[\"queue\"])\n";
+
+  $build_job->{dsl} = $dsl;
+  push @$output, { 'job' => $build_job };
+
+}
+
+print Dump($output);
diff --git a/jenkins/head.yaml b/jenkins/head.yaml
new file mode 100644 (file)
index 0000000..8407fcd
--- /dev/null
@@ -0,0 +1,208 @@
+- defaults:
+    name: global
+    description: 'Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+    logrotate:
+        daysToKeep: -1
+        numToKeep: 2
+        artifactDaysToKeep: -1
+        artifactNumToKeep: -1
+    wrappers:
+        - timestamps
+
+- yamltemplates:
+    name: yamltemplates
+
+    queue_choice: &queue_choice
+        name: queue
+        choices:
+            - incoming
+            - private
+            - discard
+        description: 'Incoming queue to use: incoming uploads to reprepro, private stages the upload in a directory, discard throws the upload away.'
+
+    ircbot_only_configs: &only_configs
+            strategy: any-failure
+            message-type: summary
+            matrix-notifier: only-configurations
+
+    add_version_tag: &add_version_tag |
+            import java.util.regex.Matcher;
+            for (a in manager.build.getArtifacts()) {{
+                    m = (a =~ /.*_(.*)\.dsc/);
+                    if (m.matches()) {{
+                            manager.addShortText(m[0][1]);
+                            break;
+                    }}
+            }}
+
+    dput_job_template: &dput_job_template
+        name: 'foobar-dput'
+        #description: 'Push packages to the repository.<br />Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+        logrotate:
+            numToKeep: 50
+        parameters:
+            - choice: *queue_choice
+        builders:
+            - shell: 'rm -rf *'
+            - copyartifact: &dput_copyartifact
+                project: 'foobar-binaries-sid-amd64'
+                filter: '*.gz,*.bz2,*.xz,*.deb,*.dsc,*.changes'
+                flatten: true
+                which-build: upstream-build
+                fallback-to-last-successful: true
+            - shell: 'dput-pgdg $queue'
+        publishers:
+            - ircbot:
+                matrix-notifier: all
+                message-type: summary-params
+            - groovy-postbuild: 'manager.addShortText("${manager.build.environment.queue}")'
+
+    build_job_template: &build_job_template
+        name: 'foobar-build'
+        project-type: flow
+        parameters:
+            - choice: *queue_choice
+            - string: &git_branch
+                name: branch
+                default: 'debian'
+                description: Git branch, tag, or commit to build
+            - string: &revision_string
+                name: revision
+                default: ''
+                description: Revision number to use on generated source package (number in .pgdg+N suffix)
+        dsl: |
+            build("foobar-source-sid", branch: params["branch"], revision: params["revision"])
+            parallel (
+                { build("foobar-source-jessie", branch: params["branch"], revision: params["revision"]) },
+            )
+            build("foobar-binaries-sid-amd64")
+            parallel (
+                { build("foobar-binaries-sid-i386") },
+                { build("foobar-binaries-jessie-amd64") },
+                { build("foobar-binaries-jessie-i386") },
+            )
+            build("foobar-dput", queue: params["queue"])
+
+# source
+
+- job-template:
+    name: '{name}-source-{dist}'
+    #description: 'Build Debian source package of {name} from "apt-get source".<br />Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+    parameters:
+        - string:
+            <<: *git_branch
+            default: '{git-branch}'
+        - string: *revision_string
+    scm:
+        - git:
+            url: '{git-url}'
+            branches:
+                - '$branch'
+            basedir: source
+            wipe-workspace: false
+            recursive-submodules: true
+    builders:
+        - shell: 'distribution={dist} generate-pgdg-source'
+    publishers:
+        - archive:
+            artifacts: 'result/*'
+            latest-only: true
+        - ircbot:
+            matrix-notifier: only-parent
+        - groovy-postbuild: *add_version_tag
+
+# generated by genyaml:
+#- job-group:
+#    name: source-sid
+#    dist: sid
+#    jobs:
+#        - '{name}-source-{dist}'
+
+# binaries
+
+- job-template: &binaries_template
+    name: '{name}-binaries-{dist}-{arch}'
+            #description: 'Build Debian binary package of {name}.<br />Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+    builders:
+        - shell: 'rm -rf *'
+        - copyartifact: &copysource
+            project: '{name}-source-{dist}'
+            filter: 'result/*'
+            flatten: true
+            which-build: upstream-build
+            fallback-to-last-successful: true
+        - shell: 'distribution={dist} architecture={arch} sbuild-package'
+    publishers:
+        - archive: &binaries_archive
+            artifacts: '*.gz,*.bz2,*.xz,*.deb,*.dsc,*.changes'
+            latest-only: true
+        - junit:
+            results: autopkgtest.xml
+        - ircbot: *only_configs
+        - groovy-postbuild: *add_version_tag
+        - workspace-cleanup
+
+# generated by genyaml:
+#- job-group:
+#    name: binaries-sid-amd64
+#    dist: sid
+#    arch: amd64
+#    jobs:
+#        - '{name}-binaries-{dist}-{arch}'
+
+# actual job definitions
+
+#- project:
+#    name: mimeo
+#    git-url: https://anonscm.debian.org/git/pkg-postgresql/mimeo.git
+#    git-branch: debian
+#    jobs:
+#        - source-sid
+#        - source-jessie
+#        - binaries-sid-amd64
+#        - binaries-sid-i386
+#        - binaries-jessie-amd64
+#        - binaries-jessie-i386
+#
+#- job:
+#    <<: *dput_job_template
+#    name: mimeo-dput
+#    builders:
+#        - shell: 'rm -rf *'
+#        - copyartifact:
+#            <<: *dput_copyartifact
+#            project: 'mimeo-binaries-sid-amd64'
+#        - copyartifact:
+#            <<: *dput_copyartifact
+#            project: 'mimeo-binaries-sid-i386'
+#        - copyartifact:
+#            <<: *dput_copyartifact
+#            project: 'mimeo-binaries-jessie-amd64'
+#        - copyartifact:
+#            <<: *dput_copyartifact
+#            project: 'mimeo-binaries-jessie-i386'
+#        - shell: 'dput-pgdg $queue'
+#
+#- job:
+#    name: 'mimeo-build'
+#    project-type: flow
+#    parameters:
+#        - choice: *queue_choice
+#        - string:
+#            <<: *git_branch
+#            default: 'debian'
+#        - string: *revision_string
+#    dsl: |
+#        build("mimeo-source-sid", branch: params["branch"], revision: params["revision"])
+#        parallel (
+#            { build("mimeo-source-jessie", branch: params["branch"], revision: params["revision"]) },
+#        )
+#        build("mimeo-binaries-sid-amd64")
+#        parallel (
+#            { build("mimeo-binaries-sid-i386") },
+#            { build("mimeo-binaries-jessie-amd64") },
+#            { build("mimeo-binaries-jessie-i386") },
+#        )
+#        build("mimeo-dput", queue: params["queue"])
+
+# vim:et:sw=4:
diff --git a/jenkins/packages.yaml b/jenkins/packages.yaml
new file mode 100644 (file)
index 0000000..5450dd6
--- /dev/null
@@ -0,0 +1,483 @@
+architectures:
+  - amd64
+  - i386
+
+distributions:
+  - sid
+  - jessie
+  - wheezy
+  - squeeze
+  - wily
+  - trusty
+  - precise
+
+## simple jobs
+#
+#- job:
+#        name: apt.postgresql.org
+#        description: 'Update configuration on build and repository hosts.<br />Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+#        scm:
+#                - git:
+#                        url: git://git.postgresql.org/git/pgapt.git
+#                        branches:
+#                                - master
+#                        wipe-workspace: false
+#        builders:
+#                - shell: 'cd jenkins && make test && make update'
+#        publishers:
+#                - ircbot:
+#                        matrix-notifier: all
+#
+#- job:
+#        name: 'sbuild-update'
+#        description: 'Update sbuild chroots'
+#        project-type: matrix
+#        execution-strategy:
+#                sequential: true
+#                touchstone:
+#                        expr: '(distribution=="sid") && (architecture=="amd64")'
+#        axes:
+#                - axis: *arch_axis
+#                - axis: *dist_axis
+#        triggers:
+#                - timed: "H */6 * * *"
+#        builders:
+#                - shell: 'sbuild-update.sh'
+#        publishers:
+#                - ircbot: *only_configs
+
+#- job:
+#        name: upgrade-plperl
+#        description: 'Test plperl upgrades.<br />Do not edit this job through the web interface, it is generated via jenkins-job-builder!'
+#        project-type: matrix
+#        execution-strategy:
+#                touchstone:
+#                        expr: '(distribution=="wheezy") && (architecture=="amd64")'
+#        axes:
+#                - axis: *arch_axis
+#                - axis:
+#                        type: user-defined
+#                        name: distribution
+#                        values: [wheezy, squeeze]
+#        builders:
+#                - shell: 'sudo cowbuilder --execute $(which upgrade-plperl) --basepath /home/pbuilder/base-$distribution-$architecture.cow'
+
+#- job:
+#        name: gitcache-postgresql
+#        description: Reference repository postgresql source jobs
+#        workspace: '$HOME/gitcache.buexcl/postgresql'
+#        scm:
+#                - git:
+#                        url: git://git.postgresql.org/git/postgresql.git
+#                        branches:
+#                                - master
+#                        wipe-workspace: false
+#        triggers:
+#                - pollscm: "H */6 * * *"
+
+packages:
+  apgdiff:
+    git-url: https://alioth.debian.org/anonscm/git/pkg-postgresql/apgdiff.git
+
+  barman:
+    git-url: git://git.debian.org/collab-maint/barman.git
+
+  check-postgres:
+    git-url: git://anonscm.debian.org/pkg-postgresql/check-postgres.git
+
+  #gdal:
+  #  # sid and trusty are current enough
+  #  dist-filter: '(distribution=="wheezy") || (distribution=="precise")'
+
+  #geos:
+  #  # sid and trusty are current enough
+  #  dist-filter: '(distribution=="wheezy") || (distribution=="precise")'
+
+  ip4r:
+    git-url: git://anonscm.debian.org/pkg-postgresql/ip4r.git
+    devel: true
+
+  #libdbd-pg-perl:
+  #  apt-suite: unstable
+
+  libpqtypes:
+    git-url: git://anonscm.debian.org/pkg-postgresql/libpqtypes.git
+    # skip dists without dpkg-buildflags
+    dist-filter: '(distribution!="squeeze")'
+
+  mimeo:
+    git-url: https://anonscm.debian.org/git/pkg-postgresql/mimeo.git
+    git-branch: debian
+    devel: true
+
+  newpid:
+    git-url: https://github.com/ChristophBerg/newpid.git
+
+  #ora2pg:
+  #  apt-suite: unstable
+
+  orafce:
+    git-url: git://anonscm.debian.org/pkg-postgresql/orafce.git
+    devel: true
+
+  pgadmin3:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgadmin3.git
+    # skip dists without /usr/share/dpkg/buildflags.mk
+    dist-filter: '(distribution!="squeeze")'
+
+  pgagent:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgagent.git
+
+  #pgbadger:
+  #  apt-suite: unstable
+
+  pgbouncer:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgbouncer.git
+
+  pgdg-buildenv:
+    git-url: git://git.postgresql.org/git/pgapt.git
+
+  pgespresso:
+    git-url: git://git.debian.org/collab-maint/pgespresso.git
+
+  pgextwlist:
+    git-url: https://github.com/dimitri/pgextwlist.git
+    devel: true
+
+  pgfincore:
+    git-url: git://git.postgresql.org/git/pgfincore.git
+    devel: true
+
+  pgmemcache:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgmemcache.git
+    devel: true
+
+  pg-reorg:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pg-reorg.git
+    devel: true
+
+  pgpool2:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgpool2.git
+    devel: true
+
+  pgrouting:
+    git-url: git://anonscm.debian.org/pkg-grass/pgrouting.git
+    # needs libcgal-dev (in non-free on squeeze, in multiverse on precise, let's not care)
+    dist-filter: '(distribution!="precise") && (distribution!="squeeze")'
+
+  pgsphere:
+    git-url: https://alioth.debian.org/anonscm/git/debian-science/packages/pgsphere.git
+
+  pgstatplans:
+    git-url: https://github.com/2ndQuadrant/pg_stat_plans.git
+
+  pgtap:
+    git-url: git://anonscm.debian.org/pkg-postgresql/pgtap.git
+    dist-filter: '(distribution!="squeeze")'
+
+  pgtop:
+    git-url: git://anonscm.debian.org/collab-maint/pgtop.git
+    # needs buildflags.mk
+    dist-filter: '(distribution!="squeeze")'
+
+  pgxnclient:
+    git-url: git://git.debian.org/pkg-postgresql/pgxnclient.git
+    dist-filter: '(distribution!="squeeze")'
+
+  phppgadmin:
+    git-url: git://anonscm.debian.org/pkg-postgresql/phppgadmin.git
+
+  plr:
+    git-url: git://anonscm.debian.org/pkg-postgresql/plr.git
+    devel: true
+
+  plv8:
+    git-url: git://anonscm.debian.org/pkg-postgresql/plv8.git
+    git-branch: debian
+    dist-filter: '(distribution!="squeeze")'
+    devel: true
+
+  postgis:
+    git-url: git://git.debian.org/git/pkg-grass/postgis.git
+    dist-filter: '(distribution!="squeeze")'
+    devel: true
+
+  postgresql-8.4:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 8.4
+    testsuite: external
+
+  postgresql-9.0:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.0-pgdg
+    testsuite: external
+
+  postgresql-9.1:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.1
+    testsuite: external
+
+  postgresql-9.2:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.2
+    testsuite: external
+
+  postgresql-9.3:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.3
+    testsuite: external
+
+  postgresql-9.4:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.4
+    testsuite: external
+
+  postgresql-9.5:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql.git
+    git-branch: 9.5
+    testsuite: external
+
+# the PostgreSQL devel versions:
+#- project:
+#        name: postgresql-9.4-devel
+#        source-name: postgresql-9.4
+#        git-url: git://git.postgresql.org/git/postgresql.git
+#        git-branch: origin/REL9_4_STABLE
+#        merge-branch: 9.4
+#        dist-filter: 'distribution=="sid"'
+#        jobs:
+#                - '{source-name}-source-git-head'
+#                - '{source-name}-binaries-sid-amd64'
+#                - '{source-name}-testsuite-sid-amd64'
+#        next-job: postgresql-9.4-testsuite-sid-amd64
+#        noadt: 'ADT=skip '
+
+  postgresql-9.6:
+    git-url: git://git.postgresql.org/git/postgresql.git
+    git-branch: origin/master
+    merge-branch: 9.6
+    distributions: [sid]
+    architectures: [amd64]
+    testsuite: external
+
+  postgresql-common:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-common.git
+
+  postgresql-debversion:
+    git-url: git://git.debian.org/git/buildd-tools/postgresql-debversion
+    git-branch: debian
+    devel: true
+
+  postgresql-filedump:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-filedump.git
+    # uses /usr/share/dpkg/buildflags.mk
+    dist-filter: '(distribution!="squeeze")'
+
+  postgresql-multicorn:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-multicorn.git
+    # needs dh-python (squeeze, precise)
+    # python foo (wheezy)
+    dist-filter: '(distribution!="wheezy") && (distribution!="squeeze") && (distribution!="precise")'
+
+  postgresql-mysql-fdw:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-mysql-fdw.git
+
+  postgresql-pgmp:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-pgmp.git
+    dist-filter: '(distribution!="squeeze")'
+    devel: true
+
+  postgresql-pljava:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-pljava.git
+    devel: true
+
+  postgresql-pllua:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-pllua.git
+    devel: true
+
+  postgresql-plproxy:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-plproxy.git
+    devel: true
+
+  postgresql-plsh:
+    git-url: git://anonscm.debian.org/pkg-postgresql/postgresql-plsh.git
+    devel: true
+
+  powa-archivist:
+    git-url: https://github.com/credativ/powa-archivist.git
+    git-branch: debian
+    devel: true
+
+  prefix:
+    git-url: git://github.com/dimitri/prefix.git
+    devel: true
+
+  preprepare:
+    git-url: git://github.com/dimitri/preprepare.git
+    devel: true
+
+  psqlodbc:
+    git-url: git://anonscm.debian.org/pkg-postgresql/psqlodbc.git
+    # doesn't compile on squeeze because of multi-arch (needs a newer cdbs)
+    dist-filter: '(distribution!="squeeze")'
+
+  python-argcomplete:
+    git-url: git://anonscm.debian.org/collab-maint/python-argcomplete.git
+
+  python-argh:
+    git-url: git://git.debian.org/collab-maint/python-argh.git
+
+  #python-azure:
+  #  bzr-branch: lp:~stub/ubuntu/trusty/python-azure/trunk
+  #  # needs dh-python
+  #  dist-filter: '(distribution!="squeeze") && (distribution!="precise")'
+
+  q3c:
+    git-url: https://alioth.debian.org/anonscm/git/debian-science/packages/q3c.git
+
+  repmgr:
+    git-url: git://git.debian.org/pkg-postgresql/repmgr.git
+
+  repmgr2:
+    git-url: git://git.debian.org/pkg-postgresql/repmgr2.git
+
+  skytools:
+    git-url: git://anonscm.debian.org/pkg-postgresql/skytools.git
+
+  skytools3:
+    git-url: git://anonscm.debian.org/pkg-postgresql/skytools3.git
+    git-branch: debian
+
+  slony1-2:
+    git-url: git://anonscm.debian.org/pkg-postgresql/slony1-2.git
+
+  #wal-e:
+  #  bzr-branch: lp:~stub/ubuntu/trusty/wal-e/trunk
+  #  # needs python-swiftclient
+  #  dist-filter: '(distribution!="squeeze") && (distribution!="wheezy") && (distribution!="precise")'
+
+#- project:
+#        name: upgrade-8.4-9.4
+#        oldversion: 8.4
+#        newversion: 9.4
+#        jobs:
+#                - upgrade-job
+#
+#- project:
+#        name: upgrade-9.1-9.2
+#        oldversion: 9.1
+#        newversion: 9.2
+#        jobs:
+#                - upgrade-job
+#
+#- project:
+#        name: upgrade-9.1-9.3
+#        oldversion: 9.1
+#        newversion: 9.3
+#        jobs:
+#                - upgrade-job
+#
+#- project:
+#        name: upgrade-9.2-9.3
+#        oldversion: 9.2
+#        newversion: 9.3
+#        jobs:
+#                - upgrade-job
+#
+#- project:
+#        name: upgrade-9.3-9.4
+#        oldversion: 9.3
+#        newversion: 9.4
+#        jobs:
+#                - upgrade-job
+#
+#- project:
+#        name: upgrade-9.4-9.5
+#        oldversion: 9.4
+#        newversion: 9.5
+#        jobs:
+#                - upgrade-{oldversion}-{newversion}-sid-amd64
+#
+#- project:
+#        name: upgrade-9.4-9.6
+#        oldversion: 9.4
+#        newversion: 9.6
+#        jobs:
+#                - upgrade-{oldversion}-{newversion}-sid-amd64
+
+### pgloader and dependencies
+#  - pgloader:
+#      #git-url: https://github.com/dimitri/pgloader.git
+#      apt-suite: unstable
+#      # squeeze doesn't have ruby-ronn
+#      dist-filter: 'distribution!="squeeze"'
+#
+#  - sbcl:
+#      apt-suite: jessie
+#      # upgrade sbcl to 1.2 on the older dists
+#      dist-filter: '(distribution=="squeeze") || (distribution=="wheezy") || (distribution=="precise") || (distribution=="trusty") || (distribution=="utopic")'
+#
+#  - bordeaux-threads: &aptpkg
+#        apt-suite: 'unstable'
+#        jobs: [apt-packages]
+#- project: { <<: *aptpkg, name: buildapp }
+#- project: { <<: *aptpkg, name: cffi }
+#- project: { <<: *aptpkg, name: cl-abnf }
+#- project: { <<: *aptpkg, name: cl-alexandria }
+#- project: { <<: *aptpkg, name: cl-anaphora }
+#- project: { <<: *aptpkg, name: cl-asdf }
+#- project: { <<: *aptpkg, name: cl-asdf-finalizers }
+#- project: { <<: *aptpkg, name: cl-asdf-system-connections }
+#- project: { <<: *aptpkg, name: cl-chipz }
+#- project: { <<: *aptpkg, name: cl-chunga }
+#- project: { <<: *aptpkg, name: cl-closure-common }
+#- project: { <<: *aptpkg, name: cl-command-line-arguments }
+#- project: { <<: *aptpkg, name: cl-containers }
+#- project: { <<: *aptpkg, name: cl-csv }
+#- project: { <<: *aptpkg, name: cl-curry-compose-reader-macros }
+#- project: { <<: *aptpkg, name: cl-cxml }
+#- project: { <<: *aptpkg, name: cl-daemon }
+#- project: { <<: *aptpkg, name: cl-db3 }
+#- project: { <<: *aptpkg, name: cl-drakma }
+#- project: { <<: *aptpkg, name: cl-dynamic-classes }
+#- project: { <<: *aptpkg, name: cl-esrap }
+#- project: { <<: *aptpkg, name: cl-fad }
+#- project: { <<: *aptpkg, name: cl-fiveam }
+#- project: { <<: *aptpkg, name: cl-garbage-pools }
+#- project: { <<: *aptpkg, name: cl-github-v3 }
+#- project: { <<: *aptpkg, name: cl-graph }
+#- project: { <<: *aptpkg, name: cl-ieee-floats }
+#- project: { <<: *aptpkg, name: cl-interpol }
+#- project: { <<: *aptpkg, name: cl-ironclad }
+#- project: { <<: *aptpkg, name: cl-iterate }
+#- project: { <<: *aptpkg, name: cl-ixf }
+#- project: { <<: *aptpkg, name: cl-local-time }
+#- project: { <<: *aptpkg, name: cl-log }
+#- project: { <<: *aptpkg, name: cl-lparallel }
+#- project: { <<: *aptpkg, name: cl-markdown }
+#- project: { <<: *aptpkg, name: cl-md5 }
+#- project: { <<: *aptpkg, name: cl-metabang-bind }
+#- project: { <<: *aptpkg, name: cl-metatilities-base }
+#- project: { <<: *aptpkg, name: cl-mssql }
+#- project: { <<: *aptpkg, name: cl-nibbles }
+#- project: { <<: *aptpkg, name: cl-parse-number }
+#- project: { <<: *aptpkg, name: cl-plus-ssl }
+#- project: { <<: *aptpkg, name: cl-postmodern }
+#- project: { <<: *aptpkg, name: cl-puri }
+#- project: { <<: *aptpkg, name: cl-py-configparser }
+#- project: { <<: *aptpkg, name: cl-qmynd }
+#- project: { <<: *aptpkg, name: cl-quri }
+#- project: { <<: *aptpkg, name: cl-rfc2388 }
+#- project: { <<: *aptpkg, name: cl-salza2 }
+#- project: { <<: *aptpkg, name: cl-sqlite }
+#- project: { <<: *aptpkg, name: cl-trivial-backtrace }
+#- project: { <<: *aptpkg, name: cl-trivial-garbage }
+#- project: { <<: *aptpkg, name: cl-trivial-utf-8 }
+#- project: { <<: *aptpkg, name: cl-unicode }
+#- project: { <<: *aptpkg, name: cl-utilities }
+#- project: { <<: *aptpkg, name: cl-uuid }
+#- project: { <<: *aptpkg, name: cl-who }
+#- project: { <<: *aptpkg, name: cl-yason }
+#- project: { <<: *aptpkg, name: cl-zip }
+#- project: { <<: *aptpkg, name: cl-zs3 }
+##