Initial commit

pull/20/head
Hugo Landau 5 years ago
commit d1159b3ee0
No known key found for this signature in database
GPG Key ID: 3D30A3A9FF1360DC

3
.gitignore vendored

@ -0,0 +1,3 @@
out/
tmp/
*.swp

3
.gitmodules vendored

@ -0,0 +1,3 @@
[submodule "rbm"]
path = rbm
url = https://git.torproject.org/builders/rbm.git

@ -0,0 +1,2 @@
#!/bin/sh
exec nix-shell -p perl perlPackages.PathTiny perlPackages.YAMLLibYAML perlPackages.TemplateToolkit perlPackages.IOCaptureOutput perlPackages.FileCopyRecursive perlPackages.StringShellQuote perlPackages.SortVersions perlPackages.DataUUID perlPackages.DataDump perlPackages.DigestSHA perlPackages.FileTemp perlPackages.JSON debootstrap runc

@ -0,0 +1,12 @@
RBM=./rbm/rbm
all: release
release:
$(RBM) build ncdns --target ncdns-linux-x86_64
submodule-update:
git submodule update --init
fetch: submodule-update
$(RBM) fetch

@ -0,0 +1,5 @@
# ncdns-repro
ncdns reproducible build harnesses for RBM.
MIT License.

@ -0,0 +1,25 @@
git github.com/alecthomas/template b867cc6ab45cece8143cfcc6fc9c77cf3f2c23c0 heads/master
git github.com/alecthomas/units 2efee857e7cfd4f3d0138cc3cbb1b4966962b93a heads/master
git github.com/BurntSushi/toml 056c9bc7be7190eaa7715723883caffa5f8fa3e4 heads/master
git github.com/coreos/go-systemd a831f36d09de8f095c28eeee839df52e9de5031f heads/master
git github.com/golang/groupcache 604ed5785183e59ae2789449d89e73f3a2a77987 heads/master
git github.com/hlandau/buildinfo 337a29b5499734e584d4630ce535af64c5fe7813 heads/master
git github.com/hlandau/degoutils 8fa2440b63444dad556d76366f1c3ee070c8a577 heads/master+
git github.com/hlandau/dexlogconfig 244f29bd260884993b176cd14ef2f7631f6f3c18 heads/master
git github.com/hlandauf/btcjson e204653fd7386803f14e4ec744ab63dde15002dc heads/master
git github.com/hlandau/ncbtcjsontypes 02ea7272dd11bb6153a3cd06899a0999ac6a16e0 heads/master
git github.com/hlandau/xlog 197ef798aed28e08ed3e176e678fda81be993a31 tags/v1.0.0
git github.com/kr/pretty e6ac2fc51e89a3249e82157fa0bb7a18ef9dd5bb heads/master
git github.com/kr/text bb797dc4fb8320488f47bf11de07a733d7233e1f heads/master
git github.com/mattn/go-isatty 7fcbc72f853b92b5720db4a6b8482be612daef24 heads/master
git github.com/miekg/dns c144371d31e35dc0588755ada496462c102c90a6 heads/master
git github.com/namecoin/ncdns 19534f1dcfd1151bd9c072459caac12f6fb384df tags/v0.0.6
git github.com/ogier/pflag 6f7159c3154e7cd4ab30f6cc9c58fa3fd0f22325 heads/master
git github.com/shiena/ansicolor a5e2b567a4dd6cc74545b8a4f27c9d63b9e7735b heads/master
git golang.org/x/net e0c57d8f86c17f0724497efcb3bc617e82834821 heads/master
git gopkg.in/alecthomas/kingpin.v2 7f0871f2e17818990e4eed73f9b5c2f429501228 tags/v2.2.4
git gopkg.in/hlandau/configurable.v1 34642c4c8cbf56801d0e34f0e82187305983ac26 heads/master
git gopkg.in/hlandau/easyconfig.v1 c31249162931b4963bbe6e501cccb60d23271a3f tags/v1.0.17
git gopkg.in/hlandau/madns.v1 b82ebc776bd8a13824350c7c108180d601e38352 tags/v1.0.7+
git gopkg.in/hlandau/service.v2 b64b3467ebd16f64faec1640c25e318efc0c0d7b tags/v2.0.16
git gopkg.in/hlandau/svcutils.v1 c25dac49e50cbbcbef8c81b089f56156f4067729 tags/v1.0.10

@ -0,0 +1,3 @@
#!/bin/sh
set -e
go list -f '{{range $imp := .Deps}}{{printf "%s\n" $imp}}{{end}}' 'github.com/namecoin/ncdns'|sort -u|xargs go list -f '{{if not .Standard}}{{.ImportPath}}{{end}}' | awk "{print \"$GOPATH/src/\" \$0}" | (while read line; do x="$line"; while [ ! -e "$x/.git" -a ! -e "$x/.hg" ]; do x=${x%/*}; if [ "$x" = "" ]; then break; fi; done; echo "$x"; done) | sort -u | (while read line; do echo ${line#$GOPATH/src/}; done)

@ -0,0 +1,268 @@
{
"ociVersion": "1.0.0[% IF !c("var_p/runc_spec100") %]-rc1[% END %]",
"platform": {
"os": "linux",
"arch": "amd64"
},
"process": {
"terminal": [% IF c("interactive") %]true[% ELSE %]false[% END %],
"user": {
"uid": 0,
"gid": 0
},
"args": [
"/rbm/run"
],
"env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TERM=xterm"
],
"cwd": "/",
[% IF c("var_p/runc_spec100") -%]
"capabilities": {
"bounding": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
],
"effective": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
],
"inheritable": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
],
"permitted": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
],
"ambient": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
]
},
[% ELSE -%]
"capabilities": [
"CAP_AUDIT_WRITE",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETGID",
"CAP_SETUID",
"CAP_MKNOD",
"CAP_SYS_CHROOT",
[% IF c("var/container/CAP_SYS_ADMIN") -%]
"CAP_SYS_ADMIN",
[% END -%]
"CAP_FSETID",
"CAP_FOWNER",
"CAP_DAC_OVERRIDE",
"CAP_CHOWN"
],
[% END -%]
"rlimits": [
{
"type": "RLIMIT_NOFILE",
"hard": 1024,
"soft": 1024
}
],
"noNewPrivileges": true
},
"root": {
"path": "rootfs",
"readonly": false
},
"hostname": "runc",
"mounts": [
{
"destination": "/proc",
"type": "proc",
"source": "proc"
},
{
"type": "bind",
"source": "/etc/resolv.conf",
"destination": "/etc/resolv.conf",
"options": [
"rbind",
"ro"
]
},
{
"destination": "/dev",
"type": "tmpfs",
"source": "tmpfs",
"options": [
"nosuid",
"strictatime",
"mode=755",
"size=65536k"
]
},
{
"destination": "/dev/pts",
"type": "devpts",
"source": "devpts",
"options": [
"nosuid",
"noexec",
"newinstance",
"ptmxmode=0666",
"mode=0620",
"gid=5"
]
},
{
"destination": "/dev/shm",
"type": "tmpfs",
"source": "shm",
"options": [
"nosuid",
"noexec",
"nodev",
"mode=1777",
"size=65536k"
]
},
{
"destination": "/dev/mqueue",
"type": "mqueue",
"source": "mqueue",
"options": [
"nosuid",
"noexec",
"nodev"
]
},
{
"destination": "/sys",
"type": "sysfs",
"source": "sysfs",
"options": [
"nosuid",
"noexec",
"nodev",
"ro"
]
},
{
"destination": "/sys/fs/cgroup",
"type": "cgroup",
"source": "cgroup",
"options": [
"nosuid",
"noexec",
"nodev",
"relatime",
"ro"
]
}
],
"hooks": {},
"linux": {
"resources": {
"devices": [
{
"allow": false,
"access": "rwm"
}
]
},
"namespaces": [
{
"type": "pid"
},
{
"type": "ipc"
},
{
"type": "uts"
},
{
"type": "mount"
}
],
"maskedPaths": [
"/proc/kcore",
"/proc/latency_stats",
"/proc/timer_stats",
[% IF c("var_p/runc_spec100") -%]
"/proc/timer_list",
"/sys/firmware",
[% END -%]
"/proc/sched_debug"
],
"readonlyPaths": [
"/proc/asound",
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"solaris": {
"cappedCPU": {},
"cappedMemory": {}
}
}

@ -0,0 +1,2 @@
#!/bin/sh
set -e

@ -0,0 +1,62 @@
filename: 'container-image_[% c("var/container/suite") %]-[% c("var/container/arch") %]-[% sha256(c("pre")).substr(0,12) %].tar.gz'
pkg_type: build
var:
container:
use_container: 1
suite: '[% pc(c("origin_project"), "var/container/suite") %]'
arch: '[% pc(c("origin_project"), "var/container/arch") %]'
lsb_release:
id: Debian
codename: wheezy
release: 7.11
pre: |
#!/bin/sh
# [% c('var/container/suite') %]
set -e
[% IF pc(c('origin_project'), 'var/pre_pkginst') -%]
[% pc(c('origin_project'), 'var/pre_pkginst') %]
[% END -%]
apt-get update -y
apt-get upgrade -y
[%
deps = [];
IF pc(c('origin_project'), 'var/deps');
CALL deps.import(pc(c('origin_project'), 'var/deps'));
END;
IF pc(c('origin_project'), 'var/arch_deps');
CALL deps.import(pc(c('origin_project'), 'var/arch_deps'));
END;
IF deps.size;
IF pc(c('origin_project'), 'var/sort_deps');
deps = deps.sort;
END;
FOREACH pkg IN deps;
SET p = tmpl(pkg);
IF p;
GET c('install_package', { pkg_name => p });
GET "\n";
END;
END;
END;
-%]
[% IF pc(c('origin_project'), 'var/post_pkginst') -%]
[% pc(c('origin_project'), 'var/post_pkginst') %]
[% END -%]
remote_get: |
#!/bin/sh
set -e
[%
SET src = shell_quote(c('get_src', { error_if_undef => 1 }));
SET dst = shell_quote(c('get_dst', { error_if_undef => 1 }));
-%]
mkdir -p "[% dst %]"
sudo tar -C "[% c("var/container/dir") %]/rootfs" -czf "[% dst %]/[% c("filename") %]" .
input_files:
- project: debootstrap-image
target:
- '[% c("var/container/suite") %]-[% c("var/container/arch") %]'

@ -0,0 +1,2 @@
#!/bin/sh
set -e

@ -0,0 +1,55 @@
filename: 'container-image_[% c("var/container/suite") %]-[% c("var/container/arch") %].tar.gz'
pkg_type: build
var:
ubuntu_version: 18.04.1
container:
use_container: 1
# We need CAP_SYS_ADMIN for debootstrap to work
CAP_SYS_ADMIN: 1
pre: |
#!/bin/sh
set -e
apt-get update -y
apt-get install -y debian-archive-keyring ubuntu-keyring debootstrap
container=systemd-nspawn debootstrap --arch=[% c("var/container/arch") %] [% c("var/container/debootstrap_opt") %] [% c("var/container/suite") %] base-image [% c("var/container/debootstrap_mirror") %]
tar -C ./base-image -czf [% dest_dir %]/[% c("filename") %] .
targets:
wheezy-amd64:
var:
container:
suite: wheezy
arch: amd64
wheezy-i386:
var:
container:
suite: wheezy
arch: i386
jessie-amd64:
var:
container:
suite: jessie
arch: amd64
jessie-i386:
var:
container:
suite: jessie
arch: i386
buster-amd64:
var:
container:
suite: buster
arch: amd64
stretch-amd64:
var:
container:
suite: stretch
arch: amd64
input_files:
- URL: 'http://cdimage.ubuntu.com/ubuntu-base/releases/[% c("var/ubuntu_version") %]/release/ubuntu-base-[% c("var/ubuntu_version") %]-base-amd64.tar.gz'
filename: 'container-image_ubuntu-base-[% c("var/ubuntu_version") %]-base-amd64.tar.gz'
sha256sum: ed76e649f65548a80b361b68011085ec4dde7bb762d667657acbef87765e1a12

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/BurntSushi/toml.git
git_hash: '[% config.var_p.id.${"github.com/BurntSushi/toml"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/BurntSushi/toml
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/alecthomas/template.git
git_hash: '[% config.var_p.id.${"github.com/alecthomas/template"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/alecthomas/template
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/alecthomas/units.git
git_hash: '[% config.var_p.id.${"github.com/alecthomas/units"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/alecthomas/units
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,19 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/coreos/go-systemd.git
git_hash: '[% config.var_p.id.${"github.com/coreos/go-systemd"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/coreos/go-systemd
go_lib_install:
- github.com/coreos/go-systemd/journal
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,19 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/golang/groupcache.git
git_hash: '[% config.var_p.id.${"github.com/golang/groupcache"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/golang/groupcache
go_lib_install:
- github.com/golang/groupcache/lru
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,20 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/buildinfo.git
git_hash: '[% config.var_p.id.${"github.com/hlandau/buildinfo"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandau/buildinfo
go_lib_deps:
- gopkg.in,hlandau,easyconfig.v1
input_files:
- project: container-image
- name: go
project: go
- name: gopkg.in,hlandau,easyconfig.v1
project: gopkg.in,hlandau,easyconfig.v1

@ -0,0 +1,22 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/degoutils.git
git_hash: '[% config.var_p.id.${"github.com/hlandau/degoutils"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandau/degoutils
go_lib_install:
- github.com/hlandau/degoutils/net
go_lib_deps:
- golang.org,x,net
input_files:
- project: container-image
- name: go
project: go
- name: golang.org,x,net
project: golang.org,x,net

@ -0,0 +1,29 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/dexlogconfig.git
git_hash: '[% config.var_p.id.${"github.com/hlandau/dexlogconfig"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandau/dexlogconfig
go_lib_deps:
- github.com,hlandau,xlog
- gopkg.in,hlandau,easyconfig.v1
- github.com,coreos,go-systemd
- github.com,hlandau,buildinfo
input_files:
- project: container-image
- name: go
project: go
- name: github.com,hlandau,xlog
project: github.com,hlandau,xlog
- name: gopkg.in,hlandau,easyconfig.v1
project: gopkg.in,hlandau,easyconfig.v1
- name: github.com,coreos,go-systemd
project: github.com,coreos,go-systemd
- name: github.com,hlandau,buildinfo
project: github.com,hlandau,buildinfo

@ -0,0 +1,20 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/ncbtcjsontypes.git
git_hash: '[% config.var_p.id.${"github.com/hlandau/ncbtcjsontypes"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandau/ncbtcjsontypes
go_lib_deps:
- github.com,hlandauf,btcjson
input_files:
- project: container-image
- name: go
project: go
- name: github.com,hlandauf,btcjson
project: github.com,hlandauf,btcjson

@ -0,0 +1,23 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/xlog.git
git_hash: '[% config.var_p.id.${"github.com/hlandau/xlog"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandau/xlog
go_lib_deps:
- github.com,mattn,go-isatty
- github.com,shiena,ansicolor
input_files:
- project: container-image
- name: go
project: go
- name: github.com,mattn,go-isatty
project: github.com,mattn,go-isatty
- name: github.com,shiena,ansicolor
project: github.com,shiena,ansicolor

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandauf/btcjson.git
git_hash: '[% config.var_p.id.${"github.com/hlandauf/btcjson"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/hlandauf/btcjson
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,20 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/kr/pretty.git
git_hash: '[% config.var_p.id.${"github.com/kr/pretty"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/kr/pretty
go_lib_deps:
- github.com,kr,text
input_files:
- project: container-image
- name: go
project: go
- name: github.com,kr,text
project: github.com,kr,text

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/kr/text.git
git_hash: '[% config.var_p.id.${"github.com/kr/text"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/kr/text
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,16 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/mattn/go-isatty.git
git_hash: '[% config.var_p.id.${"github.com/mattn/go-isatty"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/mattn/go-isatty
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/miekg/dns.git
git_hash: '[% config.var_p.id.${"github.com/miekg/dns"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/miekg/dns
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,17 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/ogier/pflag.git
git_hash: '[% config.var_p.id.${"github.com/ogier/pflag"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/ogier/pflag
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,16 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/shiena/ansicolor.git
git_hash: '[% config.var_p.id.${"github.com/shiena/ansicolor"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: github.com/shiena/ansicolor
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,51 @@
#!/usr/bin/env bash
[% c("var/set_default_env") -%]
[% c("var/setarch") -%]
distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/dist
[% IF c("var/linux") %]
# Config options for hardening-wrapper
export DEB_BUILD_HARDENING=1
export DEB_BUILD_HARDENING_STACKPROTECTOR=1
export DEB_BUILD_HARDENING_FORTIFY=1
export DEB_BUILD_HARDENING_FORMAT=1
export DEB_BUILD_HARDENING_PIE=1
[% END %]
mkdir -p /var/tmp/build
# Building go 1.4.x
# This is needed to bootstrap the go that we actually use
# https://golang.org/doc/install/source#go14
tar -C /var/tmp/build --transform='s,^go\>,go1.4,' -xf $rootdir/[% c('input_files_by_name/go14') %]
cd /var/tmp/build/go1.4/src
# Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
# https://github.com/golang/go/issues/13114#issuecomment-186922245
# Disable CC etc. that are set up for cross builds.
CGO_ENABLED=0 CC= CFLAGS= LDFLAGS= ./make.bash
export GOROOT_BOOTSTRAP="/var/tmp/build/go1.4"
cd $rootdir
[% IF ! c("var/linux") %]
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
[% END %]
# Building go
# http://golang.org/doc/install/source#environment
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/go') %]
export GOROOT="$distdir"
cd /var/tmp/dist/go/src
[% IF c("var/linux") %]
./make.bash
[% ELSIF c("var/osx") %]
# TODO
[% ELSIF c("var/windows") %]
# TODO
[% END -%]
cd /var/tmp/dist
[% c('tar', {
tar_src => [ project ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
}) %]

@ -0,0 +1,90 @@
version: 1.11.1
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
go14_version: 1.4.3
container:
use_container: 1
setup: |
[% c("var/setarch") -%]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf $rootdir/[% c("go_tarfile") %]
export GOOS=[% c("var/GOOS") %]
export GOARCH=[% c("var/GOARCH") %]
export GOPATH=/var/tmp/dist/gopath
export PATH=/var/tmp/dist/go/bin:/var/tmp/dist/gopath/bin:"$PATH"
# Template build script for building a go library.
# This can be called as projects/go/var/build_go_lib.
# You need to define /var/go_lib, and optionally var/go_lib_install as a list
# of install targets.
build_go_lib: |
#!/bin/sh
[% c("var/set_default_env") -%]
[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
[% FOREACH dep = c("var/go_lib_deps") -%]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
[% END -%]
mkdir -p $(dirname "$GOPATH/src/[% c("var/go_lib") %]")
mv /var/tmp/build/[% project %]-[% c('version') %] "$GOPATH/src/[% c("var/go_lib") %]"
cd "$GOPATH/src/[% c("var/go_lib") %]"
for p in $(ls -1 $rootdir/*.patch 2> /dev/null | sort)
do
patch -p1 < $p
done
[% IF c("var/build_go_lib_pre"); GET c("var/build_go_lib_pre"); END; -%]
[% IF c("var/go_lib_install") -%]
[% FOREACH inst IN c("var/go_lib_install") %]
go install [% inst %]
[% END %]
[% ELSE %]
go install [% c("var/go_lib") %]
[% END %]
cd /var/tmp/dist
[% c('tar', {
tar_src => [ 'gopath' ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
}) %]
targets:
windows:
var:
GOOS: windows
windows-i686:
var:
GOARCH: 386
windows-x86_64:
var:
GOARCH: amd64
osx-x86_64:
var:
GOOS: darwin
GOARCH: amd64
arch_deps:
- faketime
linux:
var:
GOOS: linux
linux-x86_64:
var:
GOARCH: amd64
linux-i686:
var:
GOARCH: 386
input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
enable: '[% c("var/windows") || c("var/osx") %]'
- URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
name: go
sha256sum: 558f8c169ae215e25b81421596e8de7572bd3ba824b79add22fba6e284db1117
- URL: 'https://golang.org/dl/go[% c("var/go14_version") %].src.tar.gz'
name: go14
sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959

@ -0,0 +1,19 @@
version: '[% c("abbrev") %]'
git_url: https://go.googlesource.com/net
git_hash: '[% config.var_p.id.${"golang.org/x/net"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: golang.org/x/net
go_lib_install:
- golang.org/x/net/context
go_lib_deps: []
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,23 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/alecthomas/kingpin.git
git_hash: '[% config.var_p.id.${"gopkg.in/alecthomas/kingpin.v2"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/alecthomas/kingpin.v2
go_lib_deps:
- github.com,alecthomas,template
- github.com,alecthomas,units
input_files:
- project: container-image
- name: go
project: go
- name: github.com,alecthomas,template
project: github.com,alecthomas,template
- name: github.com,alecthomas,units
project: github.com,alecthomas,units

@ -0,0 +1,16 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/configurable.git
git_hash: '[% config.var_p.id.${"gopkg.in/hlandau/configurable.v1"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/hlandau/configurable.v1
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,35 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/easyconfig.git
git_hash: '[% config.var_p.id.${"gopkg.in/hlandau/easyconfig.v1"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/hlandau/easyconfig.v1
go_lib_deps:
- gopkg.in,hlandau,configurable.v1
- gopkg.in,hlandau,svcutils.v1
- github.com,BurntSushi,toml
- github.com,ogier,pflag
- gopkg.in,alecthomas,kingpin.v2
go_lib_install:
- gopkg.in/hlandau/easyconfig.v1
- gopkg.in/hlandau/easyconfig.v1/cflag
input_files:
- project: container-image
- name: go
project: go
- name: gopkg.in,hlandau,configurable.v1
project: gopkg.in,hlandau,configurable.v1
- name: gopkg.in,hlandau,svcutils.v1
project: gopkg.in,hlandau,svcutils.v1
- name: github.com,BurntSushi,toml
project: github.com,BurntSushi,toml
- name: github.com,ogier,pflag
project: github.com,ogier,pflag
- name: gopkg.in,alecthomas,kingpin.v2
project: gopkg.in,alecthomas,kingpin.v2

@ -0,0 +1,29 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/madns.git
git_hash: '[% config.var_p.id.${"gopkg.in/hlandau/madns.v1"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/hlandau/madns.v1
go_lib_deps:
- github.com,miekg,dns
- github.com,hlandau,buildinfo
- github.com,hlandau,xlog
go_lib_install:
- gopkg.in/hlandau/madns.v1
- gopkg.in/hlandau/madns.v1/merr
input_files:
- project: container-image
- name: go
project: go
- name: github.com,miekg,dns
project: github.com,miekg,dns
- name: github.com,hlandau,buildinfo
project: github.com,hlandau,buildinfo
- name: github.com,hlandau,xlog
project: github.com,hlandau,xlog

@ -0,0 +1,29 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/service.git
git_hash: '[% config.var_p.id.${"gopkg.in/hlandau/service.v2"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/hlandau/service.v2
go_lib_deps:
- gopkg.in,hlandau,svcutils.v1
- gopkg.in,hlandau,easyconfig.v1
targets:
linux:
var:
arch_deps:
- libcap-dev
input_files:
- project: container-image
- name: go
project: go
- name: gopkg.in,hlandau,svcutils.v1
project: gopkg.in,hlandau,svcutils.v1
- name: gopkg.in,hlandau,easyconfig.v1
project: gopkg.in,hlandau,easyconfig.v1

@ -0,0 +1,22 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/hlandau/svcutils.git
git_hash: '[% config.var_p.id.${"gopkg.in/hlandau/svcutils.v1"} %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
build: '[% c("projects/go/var/build_go_lib") %]'
var:
container:
use_container: 1
go_lib: gopkg.in/hlandau/svcutils.v1
targets:
linux:
var:
arch_deps:
- libcap-dev
input_files:
- project: container-image
- name: go
project: go

@ -0,0 +1,41 @@
#!/bin/sh
[% c("var/set_default_env") -%]
[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
distdir=/var/tmp/dist/[% project %]
mkdir -p $distdir
[% FOREACH dep = c("var/go_lib_deps") -%]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
[% END -%]
mkdir -p $GOPATH/src/github.com/namecoin
tar -C $GOPATH/src/github.com/namecoin -xf [% project %]-[% c('version') %].tar.gz
mv $GOPATH/src/github.com/namecoin/ncdns-[% c('version') %] $GOPATH/src/github.com/namecoin/ncdns
go generate github.com/namecoin/ncdns/x509
go install -ldflags '-s' github.com/namecoin/ncdns/...
#mkdir -p /var/tmp/build
#tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
#cd /var/tmp/build/[% project %]-[% c('version') %]
#mkdir -p "$GOPATH/src/github.com/namecoin"
#ln -sf "$PWD" "$GOPATH/src/github.com/namecoin/ncdns"
#mkdir -p out
#cd out
#for x in .. ../ncdumpzone ../generate_nmc_cert; do
# go build -ldflags '-s' "$x"
#done
ls $GOPATH/bin
for x in ncdns ncdumpzone ncdt generate_nmc_cert tlsrestrict_chromium_tool; do
cp -a $GOPATH/bin/"$x"[% IF c("var/windows") %].exe[% END %] $distdir/
done
cd $distdir
[% c('tar', {
tar_src => [ '.' ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
}) %]

@ -0,0 +1,55 @@
version: 0.0.8
git_url: https://github.com/namecoin/ncdns.git
git_hash: 'v[% c("version") %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
container:
use_container: 1
go_lib_deps:
- github.com,golang,groupcache
- github.com,hlandau,degoutils
- github.com,hlandau,dexlogconfig
- github.com,hlandau,ncbtcjsontypes
- github.com,hlandauf,btcjson
- github.com,kr,pretty
- github.com,miekg,dns
- gopkg.in,hlandau,madns.v1
- gopkg.in,hlandau,easyconfig.v1
- gopkg.in,hlandau,service.v2
- golang.org,x,net
targets:
linux:
var:
arch_deps:
- libcap-dev
input_files:
- project: container-image
- name: go
project: go
- name: github.com,hlandau,xlog
project: github.com,hlandau,xlog
- name: github.com,hlandau,dexlogconfig
project: github.com,hlandau,dexlogconfig
- name: gopkg.in,hlandau,easyconfig.v1
project: gopkg.in,hlandau,easyconfig.v1
- name: gopkg.in,hlandau,service.v2
project: gopkg.in,hlandau,service.v2
- name: github.com,golang,groupcache
project: github.com,golang,groupcache
- name: github.com,hlandau,ncbtcjsontypes
project: github.com,hlandau,ncbtcjsontypes
- name: github.com,hlandauf,btcjson
project: github.com,hlandauf,btcjson
- name: github.com,miekg,dns
project: github.com,miekg,dns
- name: gopkg.in,hlandau,madns.v1
project: gopkg.in,hlandau,madns.v1
- name: github.com,kr,pretty
project: github.com,kr,pretty
- name: github.com,hlandau,degoutils
project: github.com,hlandau,degoutils
- name: golang.org,x,net
project: golang.org,x,net

1
rbm

@ -0,0 +1 @@
Subproject commit eb500fa9467fb4d7229c9ca87f202ef18603d023

@ -0,0 +1,180 @@
debug: '[% GET ! ENV.RBM_NO_DEBUG %]'
compress_tar: gz
output_dir: 'out/[% project %]'
tmp_dir: '[% c("basedir") %]/tmp'
_build_log: 'logs/[% project %][% IF c("var/osname") %]-[% c("var/osname") %][% END %].log'
pkg_type: build
var:
sort_deps: 1
build_id: '[% sha256(c("var/build_id_txt", { buildconf => { num_procs => 4 } })).substr(0, 6) %]'
build_id_txt: |
[% c("version") %]
[% IF c("git_hash") || c("hg_hash"); GET c("abbrev"); END; %]
[% IF c("var/container/use_container") -%]
[% c("var/container/suite") %]
[% c("var/container/arch") %]
[% END -%]
input_files: [% c("input_files_id") %]
build:
[% c("build", { filename => 'f', output_dir => '/out' }) %]
container:
dir: '[% c("rbm_tmp_dir") %]/rbm-containers/[% sha256(c("build_id")) %]'
user: rbm
input_files_list: |
[% FOREACH file IN c("input_files_by_name").keys.sort -%]
[% c("input_files_by_name/" _ file) %]
[% END -%]
set_default_env: |
set -e
[% FOREACH env = c('ENV') -%]
export [% env.key %]="[% env.value %]"
[% END -%]
rootdir=$(pwd)
export SHELL=/bin/sh
export HOME=$rootdir
umask 0022
targets:
notarget: linux-x86_64
noint:
debug: 0
ncdns-linux-x86_64:
- linux-x86_64
- linux
linux-x86_64:
arch: x86_64
var:
linux-x86_64: 1
osname: linux-x86_64
container:
arch: amd64
linux:
var:
linux: 1
compiler: gcc
container:
suite: wheezy
deps:
- build-essential
- zip
- unzip
remote_start: '[% IF c("var/container/use_container") %][% c("runc/remote_start") %][% END %]'
remote_exec: '[% IF c("var/container/use_container") %][% c("runc/remote_exec") %][% END %]'
remote_put: '[% IF c("var/container/use_container") %][% c("runc/remote_put") %][% END %]'
remote_get: '[% IF c("var/container/use_container") %][% c("runc/remote_get") %][% END %]'
remote_finish: '[% IF c("var/container/use_container") %][% c("runc/remote_finish") %][% END %]'
runc:
remote_start: |
#!/bin/sh
set -e
if [ $(ls -1 '[% c("remote_srcdir", { error_if_undef => 1 }) %]/container-image_'* | wc -l) -ne 1 ]
then
echo "Can't find container image in input files" >&2
ls -l '[% c("remote_srcdir") %]' >&2
exit 1
fi
mkdir -p '[% c("var/container/dir") %]'/rootfs/rbm
sudo tar -C '[% c("var/container/dir") %]'/rootfs -xf $(ls -1 '[% c("remote_srcdir", { error_if_undef => 1 }) %]/container-image_'*)
[% SET user = c("var/container/user") -%]
[% c("remote_exec", { exec_as_root => 1, exec_cmd => 'id ' _ user
_ ' >/dev/null 2>&1 || adduser -m ' _ user _ ' || useradd -m ' _ user }) %]
remote_exec: |
#!/bin/sh
set -e
[% IF c("interactive") -%]
echo Container directory: [% shell_quote(c("var/container/dir")) %]
[% END -%]
mkdir -p '[% c("var/container/dir", { error_if_undef => 1 }) %]'/rootfs/rbm
echo '#!/bin/sh' > '[% c("var/container/dir") %]'/rootfs/rbm/cmd
echo [% shell_quote(c('exec_cmd')) %] >> '[% c("var/container/dir") %]'/rootfs/rbm/cmd
echo '#!/bin/sh' > '[% c("var/container/dir") %]'/rootfs/rbm/run
[% IF c('exec_as_root'); SET user = 'root'; ELSE; SET user = c("var/container/user", { error_if_undef => 1 }); END; %]
echo 'su - [% user %] -c /rbm/cmd' >> '[% c("var/container/dir") %]'/rootfs/rbm/run
chmod +x '[% c("var/container/dir") %]'/rootfs/rbm/cmd
chmod +x '[% c("var/container/dir") %]'/rootfs/rbm/run
cat > '[% c("var/container/dir") %]'/config.json <<EOF
[% INCLUDE 'runc-config.json' %]
EOF
sudo runc [% IF c("var_p/runc100") %]run[% ELSE %]start[% END %] -b '[% c("var/container/dir") %]' rbm-[% sha256(c("build_id", { error_if_undef => 1 })) %] [% IF c("runc_hide_stderr") %]2>/dev/null[% END %]
remote_put: |
#!/bin/sh
set -e
[%
SET src = shell_quote(c('put_src', { error_if_undef => 1 }));
SET dst = shell_quote(c('put_dst', { error_if_undef => 1 }));
-%]
sudo mkdir -p '[% c("var/container/dir") %]'/rootfs/[% dst %]
sudo cp -aP [% src %] '[% c("var/container/dir") %]'/rootfs/[% dst %]
# On Ubuntu, the /root/.profile file contains a `mesg n` line which is
# producing some `stdin: is not a tty` messages. To hide them, we hide
# stderr from this part by setting runc_hide_stderr.
[% c("remote_exec", { exec_as_root => 1, exec_cmd => 'chown -R ' _ c("var/container/user") _ ' ' _ dst, runc_hide_stderr => 1 }) %]
remote_get: |
#!/bin/sh
set -e
[%
SET src = shell_quote(c('get_src', { error_if_undef => 1 }));
SET dst = shell_quote(c('get_dst', { error_if_undef => 1 }));
-%]
mkdir -p [% dst %]
srcdir='[% c("var/container/dir", { error_if_undef => 1 }) %]'/rootfs/[% src %]
sudo chown -R $(whoami) "$srcdir"
if [ $(ls -1 "$srcdir"/* 2> /dev/null | wc -l) -gt 0 ]
then
for file in "$srcdir"/*
do
bname="$(basename "$file")"
test -e [% dst %]/"$bname" && rm -Rf [% dst %]/"$bname"
mv -f "$file" [% dst %]/
done
fi
remote_finish: |
#!/bin/sh
set -e
sudo rm -Rf '[% c("var/container/dir", { error_if_undef => 1 }) %]'/rootfs '[% c("var/container/dir", { error_if_undef => 1 }) %]'/config.json
rmdir '[% c("var/container/dir") %]'
ENV:
TZ: UTC
LC_ALL: C
--- |
# This part of the file contains options written in perl
use IO::CaptureOutput qw(capture_exec);
my $hashlist = {};
open(my $f, '<:encoding(UTF-8)', 'hashlist') or die "Cannot open hashlist";
while (my $row = <$f>) {
chomp $row;
my @words = split / /, $row;
my $repo = $words[1];
my $hash = $words[2];
$hashlist->{$repo} = $hash;
#print "$repo = $hash\n";
}
(
var_p => {
# runc100 is true if we are using runc >= 1.0.0
# we assume that any version that is not 0.1.1 is >= 1.0.0
runc100 => sub {
my ($out) = capture_exec('sudo', 'runc', '--version');
return !($out =~ m/^runc version 0.1.1/);
},
# runc_spec100 is true if runc spec is at least 1.0.0
# We will need to update this when there is a new spec version available
runc_spec100 => sub {
my ($out) = capture_exec('sudo', 'runc', '--version');
return $out =~ m/^.*spec: 1\.[0-9]+\.[0-9]+$/m;
},
id => $hashlist,
},
)
Loading…
Cancel
Save