TODO 25.5 KB
Newer Older
1 2
ToDo for jenkins.debian.net
===========================
3 4 5
:Author:           Holger Levsen
:Authorinitials:   holger
:EMail:            holger@layer-acht.org
6
:Status:           working, in progress
7 8 9 10
:lang:             en
:Doctype:          article
:Licence:	   GPLv2

11 12
== About jenkins.debian.net

13
See link:https://jenkins.debian.net/userContent/about.html["about jenkins.debian.net"] for a general description of the setup. Below is the current TODO list, which is long and probably incomplete too. The links:https://jenkins.debian.net/userContent/contributing.html[the preferred form of contributions] are patches via pull requests.
14

Holger Levsen's avatar
Holger Levsen committed
15 16
== Fix user submitted bugs

17
* There are  link:https://bugs.debian.org/jenkins.debian.org[bugs filed against the pseudopackage 'jenkins.debian.org'] in the BTS which would be nice to be fixed rather sooner than later, as some people actually care to file bugs.
Holger Levsen's avatar
Holger Levsen committed
18

19 20
== meeting agenda for jenkins-qa meetings

21
* where: on #debian-qa on irc.oftc.net
Holger Levsen's avatar
Holger Levsen committed
22 23
* schedule: currently none
* next meeting: no idea
24 25 26

=== reoccuring agenda

27
* short intro, why are we here (aka: say hi)
28 29
* jenkins.d.n status
* jenkins.d.o migration next steps (see below for details)
30
* jenkins sprint in spring 2018? 
31 32 33 34 35 36 37 38
* AOB
* thanks to profitbricks for hosting

=== old meetings

* 2016-08-24: http://meetbot.debian.net/debian-qa/2016/debian-qa.2016-08-24-18.00.html
* 2016-09-28: http://meetbot.debian.net/debian-qa/2016/debian-qa.2016-09-28-19.02.html
* 2016-10: none
39
* 2016-11-23: http://meetbot.debian.net/debian-qa/2016/debian-qa.2016-11-23-18.06.html
40 41 42
* 2016-12: canceled because of 33C3
* 2017-01: none
* 2017-02-22: http://meetbot.debian.net/debian-qa/2017/debian-qa.2017-02-22-18.04.html
43
* 2017-03-22: http://meetbot.debian.net/debian-qa/2017/debian-qa.2017-03-22-18.01.html
44
* 2017-04-26: http://meetbot.debian.net/debian-qa/2017/debian-qa.2017-04-26-18.14.html
45
* 2017-08-21: http://meetbot.debian.net/debian-qa/2017/debian-qa.2017-08-23-18.30.html
46
* 2017-09-27: http://meetbot.debian.net/debian-qa/2017/debian-qa.2017-09-27-17.58.html
Holger Levsen's avatar
Holger Levsen committed
47

48 49
== General ToDo

Holger Levsen's avatar
Holger Levsen committed
50
* replace amd64 in scripts with $HOSTARCH
51
* extend /etc/rc.local to do cleanup of lockfiles
52
* explain in README how to write jobs, eg which pathes are on tmpfs
53
** EXECUTOR_NUMBER for X
54
* run all bash scripts with set -u and set -o pipefail: http://redsymbol.net/articles/unofficial-bash-strict-mode/
55
* teach bin/chroot-*.sh and bin/d-i_build.sh how to nicely deal with network problems… (as both reproducible_build.sh and schroot-create.sh do)
Holger Levsen's avatar
Holger Levsen committed
56
* use static IP for the nodes (h01ger)
57
* use vmdebootstrap where applicable
58
* Tango Icons are gone: #824477 - update footer once this bug is fixed
59
* this is outdated with salsa: add to all git post-receive hooks: `curl -s "https://jenkins.debian.net/git/notifyCommit?url=https://salsa.debian.org/installer-team/$(basename $PWD .git)"` which will trigger jenkins to pull (check) that git repo…
60 61
* salsa stuff:
** triggers for d-i repos are missing
Holger Levsen's avatar
Holger Levsen committed
62

63 64 65 66 67
=== ToDo for improving disk space

* make live-build jobs work again or remove them
* make sure the live-build jobs clean up /srv/live-build/results/*iso once they are done. thats 8gb wasted.

68
==== proper backup
69

70
* postponed til we run on .debian.org
71
* this needs to be backed up:
72 73 74 75 76 77 78 79 80
* '/var/lib/jenkins/jobs' (the results - the configs are in .git)
* '/var/lib/munin'
* '/var/log'
* '/root/' (contains etckeeper.git)
* '/var/lib/jenkins/reproducible.db' (is backed up manually)
* '/srv/jenkins.debian.net-scm-sync.git' (is backed up manually)
* '/var/lib/jenkins/plugins/*.jpi' (can be derived from jdn-scm-sync.git)
* '/srv/jenkins.debian.net-scm-sync.git'
* '/etc/.git' and '/etc'
81

82 83
=== To be done once bugs are fixed

84 85
* link:https://bugs.debian.org/767100[#767100] work in progress in etc/munin/plugins/cpu
* link:https://bugs.debian.org/767018[#767018] work in progress in etc/munin/plugins/iostat_ios
86

87 88
=== jenkins-job-builder related

Holger Levsen's avatar
Holger Levsen committed
89
* investigate whether its possible nowadays to let it delete jobs which were removed.. nope. But there is a Makefile now which will find zombies…
90
* yaml should be refactored, lots of duplication in there. this seems to be helpful: http://en.wikipedia.org/wiki/YAML#References (pyyaml which jenkins-job-builder uses supports them)
Holger Levsen's avatar
Holger Levsen committed
91

Holger Levsen's avatar
Holger Levsen committed
92
=== debugging job runs should be made easy
93 94 95 96 97 98 99 100

----
 <      h01ger> | i think the jenkins-debug-job script should be a python script
 <      h01ger> | and j-j-b or another yaml parser can supply job configuration knowledge to that script
 <      h01ger> | \o/
 <      h01ger> | and that python script can also first determine whether the environment is as needed for the job, and if not, complain verbosely+helpfully and exit
----

Holger Levsen's avatar
Holger Levsen committed
101
== Improve existing tests
Holger Levsen's avatar
Holger Levsen committed
102

103
=== tests.reproducible-builds.org
104

105
==== General website
106

107 108 109
* install cbfstool in diffoscope schroots: (useful for openwrt+coreboot)
** 'git clone --recursive http://review.coreboot.org/p/coreboot.git ; cd coreboot/util/cbfstool ; make ; cp cbfstool $TARGET/usr/local/bin/'

110
* See https://wiki.debian.org/ReproducibleBuilds/TestsToDo for the tests.reproducible-builds.org related ToDo list.
111 112

=== Debian reproducible builds
113

Holger Levsen's avatar
Holger Levsen committed
114
* get rid off "set -x # # to debug diffoscoppe/schroot problems"
115
** add check if package to be build has been blacklisted since scheduling and abort
116
** on SIGTERM, also cleanup on remote build nodes there! (via ssh &)
Holger Levsen's avatar
Holger Levsen committed
117
** check rbuild logs for "DIFFOSCOPE='E: Failed to change to directory /tmp: Permission denied' and deal with those
118

119
* higher prio:
Holger Levsen's avatar
Holger Levsen committed
120
** reenable disorderfs setup, check that it *always* unmounts + cleans up nicely
121 122 123
** pkg pages
*** new table in pkg/test history page: schedule - if that package is currently scheduled
*** add link to pkg set(s) if pkg is member of some
124
** link pkg sets and issues, that is: at least show packages without issues on pkg set pages, maybe also some issues which need actions (like uninvestigated test failures)
Holger Levsen's avatar
Holger Levsen committed
125 126
** notes related:
*** #786396: classify issue by "toolchain" or "package" fix needed: show bugs which block a bug
127
*** new page with annoted packages without categorized issues (and probably without bugs as only note content too, else there are too many)
Holger Levsen's avatar
Holger Levsen committed
128 129 130 131
*** new page with packages that have notes with comments (which are often useful / contain solutions / low-hanging fruits for newcomers)
*** new page with notes that doesnt make sense: a.) packages which are reproducible but should not, packages that build but shouldn't, etc.
*** new page with packages which are reproducible on one arch and unreproducible on another arch (in the same suite, so unstable only atm)
*** new page with packages which ftbfs on one arch and build fine on another arch (in the same suite, so unstable only atm)
132
*** new page with packages which ftbfs in stretch but build fine on sid
Holger Levsen's avatar
Holger Levsen committed
133
*** new page with packages which are orphaned but have a reproducible usertagged patch
Holger Levsen's avatar
Holger Levsen committed
134
*** new page showing arch all packages which are cross-reproducible, and those which are not
135
** new pages: r.d.n/$maintainer-email redirecting to r.d.n/maintainers/unstable/${maintainer-email}.html, showing the unreproducible packages for that address. and a sunny "yay, thank you"-summary for those with only reproducible packages.
136
** new page: "open bugs with patches, sorted by maintainers" page and to the navigation, make those NMUable bugs visible
Holger Levsen's avatar
Holger Levsen committed
137
** improve ftbfs page: list packages without bugs and notes first
138
** bin/_html_indexes.py: bugs = get_bugs() # this variable should not be global, else merely importing _html_indexes always queries UDD
139
** once firefox 48 is available: revert 1b4dc1b3191e3623a0eeb7cacef80be1ab71d0a2 / grep for _js and remove it…
140 141

* lesser prio
142
** scheduler: check if there have been more than X failures or depwait in the last Y hours and if so unschedule all packages, disable scheduling and send a mail informing us.
143
** pkg sets related:
144
*** add new pkg set: torbrowser-build-depends
145
*** fix essential set: currently it only has the ones explicitly marked Essential:yes; they and their dependencies make up the full "essential closure set" (sometimes also called pseudo-essential)
Holger Levsen's avatar
Holger Levsen committed
146
*** replace bin/reproducible_installed_on_debian.org with a proper data provider from DSA, eg https://salsa.debian.org/dsa-team/mirror/debian.org/blob/master/debian/control
147
** a reproducible_log_grep_by_sql.(py|sh) would be nice, to only grep in packages with a certain status (build in the last X days)
148 149
** database issues
*** stats_build table should have package ids, not just src+suite+arch as primary key
150
*** move "untested" field in stats table too? (as in csv output...)
151
** blacklist script should tell if a package was already blacklisted. also proper options should be used...
152
** maintenance.sh: delete the history pages once a page has been removed from all suites+archs
153
** reproducible.debian.net rename: rgrep all the files…
154
** debbindiff2diffoscope rename: do s#dbd#ds#g and s#DBD#DS#g and rename dbd directories?
155
** diffoscope needs to be run on the target arch... (or rather: run on a 64bit architecture for 64bit architectures and on 32bit for 32 bit archs), this should probably be doable with a simple i386 chroot on the host (so using qemu-static to run it on armhf should not be needed, probably.)
156 157 158
** support for arbitrary (to be implemented) Debian-PPAs and external repos, by just giving a source URL
** once stabilized notification emails should go through the package tracker.  The 'build' keyword seems to be the better fit for this.  To do so just send the emails to dispatch@tracker.debian.org, setting "X-Distro-Tracker-Package: foo" and "X-Distro-Tracker-Keyword: build".  This way people wanting to subscribe to our notification don't need to ask us and can do that by themselves.
** repo-comparison: check for binaries without source
159
** issues: currently only state of amd64 is shown. it would be better to display packages as unreproducible if they are unreproducible on any architecture.
160
** include diffoscope run time in log
161

162
* missing variations:
163
** 32/64 bit kernel variation on i386
164
** prebuilder does (user) group variation like this: https://salsa.debian.org/reproducible-builds/reproducible-misc/blob/master/prebuilder/pbuilderhooks/A02_user
Holger Levsen's avatar
Holger Levsen committed
165
** variation of $TERM and $COLUMN (and maybe $LINES), unset in the first run, set to "linux" and "77" (and maybe "42") in the 2nd run.
166
*** actually TERM is set to "linux" by default already, COLUMN is unset
167
** vary order of $PATH entries, see #844500
168
** have redundant $PATH entries (`/bin:/bin:…`)
Mattia Rizzolo's avatar
Mattia Rizzolo committed
169
** vary the length of the build paths (/build/first vs /build/second), only once the unreproducibilities caused by different build paths are solved
170
** vary the init system: sysv and systemd
171
** vary (with) usrmerge and without (needs debootstrap from jessie-backports) once #843073 is fixed (#810499 might be relevant as well)
172
** vary SSD/HDD on i386?
173
** vary temp dir variables such as TMP/TMPDIR/TEMP/TEMPDIR/MAGICK_TMPDIR
174
** maybe vary build with pbuilder and sbuild (but maybe only useful with different setup jobs only…)
Holger Levsen's avatar
Holger Levsen committed
175

176 177
==== reproducible Debian armhf

178 179 180
* rename all the nodes from $HOSTNAME to $HOSTNAME-armhf-rb ?
** we could get rid of the links in jenkins.d.n.git/hosts/
** we could simplefy .../hosts/*/etc/munin/munin-node.conf
181
* make systems send mail, use port 465
182

183 184
==== reproducible Debian arm64

185
* vary DEB_BUILD_OPTS? (NUM_CPU)
186

187 188 189
==== reproducible Debian installation

* see https://wiki.debian.org/ReproducibleInstalls
Holger Levsen's avatar
Holger Levsen committed
190
* run this as a new job
191

192 193 194 195 196 197 198 199 200 201 202
==== reproducible non-Debian tests, new host for 398 day variation is unused

* locations in the code which need to be changed
** RPM_BUILD_NODE=profitbricks-build3-amd64
** grep for profitbricks-build3-amd64, there's more
* IOW: these tests should use it:
** coreboot
** netbsd
** fedora
** (fdroid)

203 204 205 206 207 208 209 210 211 212 213 214 215
==== reproducible coreboot

* add more variations: domain+hostname, uid+gid, USER, UTS namespace
* build the docs?
* also build with payloads. x86 use seabios as default, arm boards dont have a default. grub is another payload. and these: bayou  coreinfo  external  filo  libpayload  nvramcui - and:
** CONFIG_PAYLOAD_NONE=y
** CONFIG_PAYLOAD_ELF is not set
** CONFIG_PAYLOAD_LINUX is not set
** CONFIG_PAYLOAD_SEABIOS is not set
** CONFIG_PAYLOAD_FILO is not set
** CONFIG_PAYLOAD_GRUB2 is not set
** CONFIG_PAYLOAD_TIANOCORE is not set
* libreboot ships images, verify those?
216
* explain status in plain english
217
* use disorderfs for 2nd build
218

219 220 221 222
==== reproducible LEDE 

* build path variation
* use disorderfs for 2nd build
223 224 225 226
* html: build variations are wrong
* html: git commit output includes garbage
* html: css: add some space on the left side
* html: css: make it more look like https://lede-project.org/
227 228

==== reproducible OpenWrt
229 230

* add credit for logo/artwork
231
* build path variation
232
* incorporate popular third-party ("external feeds") packages?
233
* explain status in plain english
234
* use disorderfs for 2nd build
235

236
==== reproducible NetBSD
237

238
* explain status in plain english
239
** explain MKREPRO is set to "yes"
240
** explain MKREPRO_TIMESTAMP set to $SOURCE_DATE_EPOCH
241
* use disorderfs for 2nd build
242

243
==== reproducible FreeBSD
244

245
* useful improvements:
246 247
** investigate how to use tmpfs on freebsd and build there. see mdmfs(8)
** find a way to be informed about updates and keep it updated - see 'freebsd-update cron' and 'pkg audit'.  The latter is run periodic(8) as part of the nightly root@ emails.
248
** modify PATH, uid, gid and USER too and host+domainname as well. The VM is only used for this, so we could change the host+domainname temporaily between builds too.
249
** add freebsd vm as node to jenkins and run the script directly there, saves lot of ssh hassle
250
** run diffoscope nativly
251 252 253 254 255 256 257 258

* random notes, to be moved to README
** we build freebsd 10.1 (=released) atm
** we build with sudo too
*** rather not change /usr/obj to be '~jenkins/obj' and build with WITH_INSTALL_AS_USER. also not build in /usr/src. if so, we need to define some variable so we can do so.... but we need a stable path anyway, so whats the point.
*** maybe build as user in /usr/src...
* first build world, later build ports (pkg info...)

259
* document how the freebsd build VM was set up:
260
** base 10.1 install following https://www.urbas.eu/freebsd-10-and-profitbricks/
261 262 263 264
** modified files:
*** /etc/rc.conf
*** /etc/resolv.conf
*** /boot/loader.conf.local
265
** pkg install screen git vim sudo denyhosts munin-node poudriere
266 267
*** configure /usr/local/etc/munin/munin-node.conf to allow jenkins to access it
*** configure /usr/local/etc/denyhosts.conf and /etc/hosts.allow and touch /etc/hosts.deniedssh
268 269
** adduser holger
** adduser jenkins (with bash as default shell)
270
** adduser mattia
271 272
** mkdir -p /srv/reproducible-results
** chown -R jenkins:jenkins /srv/
273

274
* system maintenance
275 276 277
** upgraded the VM to FreeBSD 11.0
*** done with: 'freebsd-update upgrade -r 10.2'
*** and with:  'freebsd-update upgrade -r 10.3'
278 279
*** and with:  'freebsd-update upgrade -r 11.0'
*** and with:  'freebsd-update upgrade -r 11.1' in screen, followed by 'pkg-static install pkg ; pkg upgrade'
280

281 282
* online disk resizing howto: https://www.freebsd.org/doc/handbook/disks-growing.html

283 284
==== reproducible Fedora

285 286
* make sure the pages meet https://fedoraproject.org/wiki/Design/Requirements
 and ask the web design team for help via filing a ticket as described there
287 288
* '/var/cache/mock/fedora-23-x86_64/' has three subdirs we need to handle (put on tmpfs, monitor size, clean sometimes): ccache, root_cache and  yum_cache
* '/var/lib/mock' should be put on /srv/workspace aka tmpfs
289
* dont hardcode 23 in reproducible_setup_mock.sh and …build_rpm.sh
290 291 292
* setup script:
** mock --clean just uninstalls the chroot but it'll still be rebuilt next time using cache.  you can delete the caches from /var/cache/mock/ or touch the mock config
** is /etc/yum/repos.d/fedora.repo really needed?
293
** hosts/pb-build3/etc/yum/repos.d/* is really not sooo good but works…
294
* build script
295
** cleanup mock cache between two builds: --scrub=all might be too much, but whats sensible (or is it --scrub=all?)?
296 297 298 299
** no variations introduced yet:
*** use '-j$NUM_CPU' and 'NEW_NUM_CPU=$(echo $NUM_CPU-1|bc)'
*** modify TZ, LANG, LC_ALL, umask
* other bits:
300 301
** use modified rpmbuild package from dhiru
** verify gpg signatures (via /etc/mock/)
302
** one day we will want to schedule all 17k source packages in fedora…
303
* build rawhide too (once fedora-23 builds nicely), releasever=rawhide
304 305

* more notes:
306 307
** https://fedoraproject.org/wiki/Using_Mock_to_test_package_builds
** http://miroslav.suchy.cz/blog/archives/2015/05/28/increase_mock_performance_-_build_packages_in_memory/index.html
308
** manually create a fedora chroot using rpm, wget + yum: http://geek.co.il/2010/03/14/how-to-build-a-chroot-jail-environment-for-centos
309

310
==== reproducible Arch Linux
311

312 313
* use pacman's error code, see FIXME in _html_.sh

314 315
* setup_archlinux_schroot job:
** needs to be made idempotent (currently it removes the schroot at the beginning of the job, instead of creating it elsewhere and replacing it on success at the job end…)
Mattia Rizzolo's avatar
Mattia Rizzolo committed
316
** use schroot tarballs (gzipped), moves are atomic then
317
* only disable cert checking on the node running in the future
318
* compare the just built pkg.tar.xz with the one available on the arch mirrors. *then* one can truely say "X% of the Arch Linux packages are reproducible and could bit by bit be reproduced in the real world."
319 320
* maintenance job:
** check for archlinux schroot sessions which should not be there and delete them. complain if that fails.
321

322 323 324 325 326 327 328 329 330 331
* html
** disable html + builder jobs
** then rename all diffoscope html files to diffoscope_results.html
** then rename all good pkg html files to index.html
** if ! -f pkg.state || ! -f index.html... recreate
** create index.html for all ftbr pkgs
** create index.html for all other pkgs
** include link to debian note if it exists
** create page for untested packages?

332
* use db
333
** problem: we currently have more (detailed) stati in archlinux
334
** extend scheduler.sh:
335
*** stop checking making 8000 queries instead of 1...
336 337 338
*** actually schedule old packages once queue is empty (except blacklisted packages)
*** also delete unknown packages from db: sources and schedule, later results as well
*** check/make sure that packages which are newer in trunk than repo are only scheduled once
339
** make build.sh read & write db
340 341 342 343 344 345
*** delete all pkg.needs_build files on disk
*** drop all occurrances of pkg.needs_build from the code
*** really share /var/log/jenkins/reproducible-stale-builds.log
 with debian?
*** same for /var/log/jenkins/reproducible-race-conditions.log
**** i think we want to split those... (into debian and archlinux ones)
346 347 348
** make build respect pacman exit code
** create new job to recreate all pkg pages
** call pkg html function after each build
349
** cleanup now useless code from scheduler
350
** create json
351 352

* fix build.sh:
353
** build2.log doesnt get deleted if build1 fails
354
** -> rename build2.log to $pkg_$version_build2.log
355

356 357 358 359 360 361
* test against real archlinux pkgs:
** https://github.com/Foxboron/devtools-repro

* things to be done before enabling more builders:
** build in /srv/workspace instead of /tmp (once this has been done reduce /tmp size back to 15G)

362 363
==== reproducible fdroid

364
* reproducible_setup_fdroid_buildserver.sh:
365
** ./jenkins-build-makebuildserver
366
*** manually added the jenkins user to the vboxdrv group
367 368
*** this downloads a base debian image and all Android tarballs (SDK, NDK, Gradle...)
*** then enters the image, installs all debian packages and Android stuff from the cached tarballs
369 370
** cache is kept outside ('~/.cache/fdroidserver') but installed inside
** '~/.cache/fdroidserver' needs to be cleaned at some times…
371 372

* reproducible_build_fdroid_apk.sh
373 374 375 376 377 378 379
** 1st run ./fdroid build some.app:vercode --server
** 2nd run ./fdroid build some.app:vercode --server
*** eg: org.fdroid.fdroid:98006
*** or: "fdroid build -l org.fdroid.fdroid" to build the latest
** run diffopscope on the results

* also see https://f-droid.org/wiki/page/Build_Server_Setup
380

381 382 383 384 385 386 387 388 389 390
* diskspace needs:
----
$ du -hd1 | sort -h | tail -n 6
4.4G    ./android-sdk-linux_86
8.1G    ./fdroidserver
8.3G    ./.vagrant.d
71G     ./VirtualBox VMs
150G    ./fdroiddata
242G    .
----
391

392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
==== reproducible qubes

* dont forget: rm holger@profitbricks-build3-amd64:qubes-test/
* dont forget: rm userContent/qubes/q(1|2) on jenkins
* add qubes test on pb3 / t.r-b.o
----
        git clone https://github.com/qubesos/qubes-builder
        make get-sources BUILDERCONF=scripts/travis-builder.conf COMPONENTS=installer-qubes-os
        export DIST_DOM0=fc23
        export USE_QUBES_REPO_VERSION=3.2
        export INSTALLER_KICKSTART=/tmp/qubes-installer/conf/travis-iso.ks

        make qubes iso BUILDERCONF=scripts/travis-builder.conf VERBOSE=0 COMPONENTS=installer-qubes-os
----
* pb3 has been modified manually:  apt install createrepo python-yaml
* once this iso is being tested, it will be interesting to build the Qubes templates as well, as those images (Qubes templates are images) will be copied on the installation iso. the above iso is a stripped down iso without templates… (and not the real thing)

409 410 411 412 413
==== reproducible guix

* there's no "apt-get install", because of non-FHS conformance, but see https://www.gnu.org/software/guix/download/
*  there's a privileged build daemon, which is needed to perform fully isolated builds, see https://www.gnu.org/software/guix/manual/html_node/Build-Environment-Setup.html#Build-Environment-Setup
* it's a bit of work to set up, but all the steps are documented. the "binary installation" method being the easiest.
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444
* Manolis wrote:
----
There are two ways to install guix, through prebuilt binaries or through
the source.

*Binary installation:

Go to
<http://www.gnu.org/software/guix/manual/html_node/Binary-Installation.html>,
grab the tarball and follow the instructions there.

*Source instalation:

First make sure you have the dependencies mentioned at
<http://www.gnu.org/software/guix/manual/guix.html#Requirements> installed.

Then download Guix's source from
ftp://alpha.gnu.org/gnu/guix/guix-0.9.0.tar.gz and use the usual
./configure && make && make install

After you have Guix built, you need to create the build-users and have
the guix-daemon run as root, as described here
<https://www.gnu.org/software/guix/manual/html_node/Build-Environment-Setup.html>.

Keep in mind that the guix-daemon must always run as root.

*Testing if everything works:

Now just run `guix package -i vim` as a non-root user. If it runs
correctly, Guix is ready for work.
----
445

446 447 448
==== reproducible...

* openembedded.org!
449
* Gentoo?
450

Holger Levsen's avatar
Holger Levsen committed
451 452
=== qa.debian.org*

Holger Levsen's avatar
Holger Levsen committed
453
* udd-versionskew: explain jobs in README
454
* udd-versionskew: also provide arch-relative version numbers in output too
Holger Levsen's avatar
Holger Levsen committed
455

Holger Levsen's avatar
Holger Levsen committed
456 457
=== d-i_manual*

458
* d-i_check_jobs.sh: check for removed manuals (but with existing jobs) missing
Holger Levsen's avatar
Holger Levsen committed
459 460 461 462 463
* svn:trunk/manual/po triggers the full build, should trigger language specific builds.
* svn:trunk/manual is all thats needed, not whole svn:trunk

=== d-i_build*

464
* d-i_check_jobs.sh: check for removed package (but with existing jobs) missing
Holger Levsen's avatar
Holger Levsen committed
465
* build packages using jenkins-debian-glue and not with the custom scripts used today?
Holger Levsen's avatar
Holger Levsen committed
466 467 468 469
* run scripts/digress/ ?

=== chroot-installation_*

Holger Levsen's avatar
Holger Levsen committed
470
* use schroot for chroot-installation, stop using plain chroot everywhere
471 472
** https://salsa.debian.org/dsa-team/mirror/dsa-puppet/tree/master/modules/schroot
** https://salsa.debian.org/dsa-team/mirror/dsa-puppet/tree/master/modules/porterbox/files/dd-schroot-cmd
Holger Levsen's avatar
Holger Levsen committed
473
** https://gitweb.torproject.org/project/jenkins/tools.git/tree/slaves/linux/build-wrapper
474
* add alternative tests with aptitude and possible apt
Holger Levsen's avatar
Holger Levsen committed
475
* split etc/schroot/default
Holger Levsen's avatar
Holger Levsen committed
476
* inform debian-devel@l.d.o or -qa@?
Holger Levsen's avatar
Holger Levsen committed
477
* warn about transitional packages installed (on non-upgrades only)
Holger Levsen's avatar
Holger Levsen committed
478
* install all the tasks "instead", thats rather easy nowadays as all task packages are called "task*".
Holger Levsen's avatar
Holger Levsen committed
479
** make sure this includes blends
Holger Levsen's avatar
Holger Levsen committed
480 481 482

=== g-i-installation_*

483
Development of these tests has stopped. In future we will use https://openqa.debian.net instead.
Holger Levsen's avatar
Holger Levsen committed
484

485 486
=== torbrowser-launcher_*

487
* fix "schroot session cleanup loop" in _common.sh to ignore other schroots
488
* test tbl in German
489
** edit '~/.config/torbrowser/settings' file and modify the latest_version setting
490 491
** get version from '~/.cache/torbrowser/download/RecommendedTBBVersions'
** (warning: on update checks these files are written again…)
492
* fix broken screenshot while job is running via apache redirect
493
* notifications should go somewhere public, after a while of testing.
494 495
* run this in qemu and enable apparmor too? -> create new tests for apparmor first :)
** extend setup_schroot.sh to also setup virtual harddrives, see http://diogogomes.com/2012/07/13/debootstrap-kvm-image/
496 497 498 499
** install linux, grub and copy the testscript and ssh keys on the the fs
** configure apparmor
** boot qemu
** ssh into the vm and run the script as usal
500
** touch -d "$(date -u -d '25 hours ago' '+%Y-%m-%d %H:%M')" $FILE
Holger Levsen's avatar
Holger Levsen committed
501 502
*** repeat test…
* run upstream tests on stable and sid too: https://trac.torproject.org/projects/tor/wiki/doc/TorBrowser/Hacking#QAandTesting ?
503

Holger Levsen's avatar
Holger Levsen committed
504

Holger Levsen's avatar
Holger Levsen committed
505
== Further ideas...
Holger Levsen's avatar
Holger Levsen committed
506 507


508 509 510 511 512 513
=== rebuild sid completly on demand

* nthykier wants to be able to rebuild all of sid to test how changes to eg lintian, debhelper, cdbs, gcc affect the archive:
* h01ger> | nthykier: so a.) rebuild everything from sid plus custom repo. b.) option to only rebuild a subset, like all rdepends or all packages build-depending on something
* h01ger> | and c.) only build once, not continously and d.) enable more cores+ram on demand to build faster

Holger Levsen's avatar
Holger Levsen committed
514 515
* have a job to trigger such a rebuild on AWS?

Holger Levsen's avatar
Holger Levsen committed
516
=== Test them all
517

518
* build packages from all team repos on alioth with jenkins-debian-glue on team request (eg, via a .txt file in a git.repo) for specific branches (which shall also be automated, eg. to be able to only have jessie+sid branches build, but not all other branches.)
519

Holger Levsen's avatar
Holger Levsen committed
520
== Debian Packaging related
521

Holger Levsen's avatar
Holger Levsen committed
522
This setup should come as a Debian source package...
523

Holger Levsen's avatar
Holger Levsen committed
524 525
* /usr/sbin/jenkins.debian.net-setup needs to be written
* what update-j.d.n.sh does, needs to be put elsewhere...
Holger Levsen's avatar
Holger Levsen committed
526 527 528 529
* debian/copyright is incorrect about some licenses:
** the profitbricks+debian+jenkins logos
** the preseeding files
** ./feature/ is gpl3
530

Holger Levsen's avatar
Holger Levsen committed
531
// vim: set filetype=asciidoc: