Sean Whitton: Spring Break in San Francisco

dcmd
supports .buildinfo files. Original patch by josch.qch
reproducible by using a fixed date instead of the current time. Original patch by Dhole.CreationDate
not appear in comments of DVI / PS files produced by TeX. He also mentioned that some timestamps can be replaced by using the -output-comment
option and that the next version of pdftex
will have patches inspired by reproducible build to mitigate the effects (see SOURCE_DATE_EPOCH patches) .
SOURCE_DATE_EPOCH
.armhf
build node has been added (thanks to Vagrant Cascadian) and integrated into the Jenkins setup for 4 new armhf
builder jobs. (h01ger)
All packages for Debian testing (Stretch) have been tested on armhf
in just 42 days. It took 114 days to get the same point for unstable back when the armhf
test infrastructure was much smaller.
Package sets have been enabled for testing on armhf
. (h01ger)
Packages producing architecture-independent ( Arch:all ) binary packages together with architecture dependent packages targeted for specific architectures will now only be tested on matching architectures. (Steven Chamberlain, h01ger)
As the Jenkins setup is now made of 252 different jobs, the overview has been split into 11 different smalller views. (h01ger)
clean-github-pr.py
, forks a repository
and then sets various attributes of it to make it as obvious as GitHub
allows that it s just a temporary fork made in order to submit a pull
request. Invoke it like this:
$ clean-github-pr.py upstream-owner/repo-to-fork
You will need the PyGitHub python library, which on a Debian Stretch
system can be installed with apt-get install python-github
.
#!/usr/bin/python
# clean-github-pr --- Create tidy repositories for pull requests
#
# Copyright (C) 2016 Sean Whitton
#
# clean-github-pr is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# clean-github-pr is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with clean-github-pr. If not, see <http://www.gnu.org/licenses/>.
import github
import sys
import time
import tempfile
import shutil
import subprocess
import os
CREDS_FILE = os.getenv("HOME") + "/.cache/clean-github-pr-creds"
def main():
# check arguments
if len(sys.argv) != 2:
print sys.argv[0] + ": usage: " + sys.argv[0] + " USER/REPO"
sys.exit(1)
# check creds file
try:
f = open(CREDS_FILE, 'r')
except IOError:
print sys.argv[0] + ": please put your github username and password, separated by a colon, in the file ~/.cache/clean-github-pr-creds"
sys.exit(1)
# just to be sure
os.chmod(CREDS_FILE, 0600)
# make the fork
creds = f.readline()
username = creds.split(":")[0]
pword = creds.split(":")[1].strip()
g = github.Github(username, pword)
u = g.get_user()
source = sys.argv[1]
fork = sys.argv[1].split("/")[1]
print "forking repo " + source
u.create_fork(g.get_repo(source))
while True:
try:
r = u.get_repo(fork)
except github.UnknownObjectException:
print "still waiting"
time.sleep(5)
else:
break
# set up & push github branch
user_work_dir = os.getcwd()
work_area = tempfile.mkdtemp()
os.chdir(work_area)
subprocess.call(["git", "clone", "https://github.com/" + username + "/" + fork])
os.chdir(work_area + "/" + fork)
subprocess.call(["git", "checkout", "--orphan", "github"])
subprocess.call(["git", "rm", "-rf", "."])
with open("README.md", 'w') as f:
f.write("This repository is just a fork made in order to submit a pull request; please ignore.")
subprocess.call(["git", "add", "README.md"])
subprocess.call(["git", "commit", "-m", "fork for a pull request; please ignore"])
subprocess.call(["git", "push", "origin", "github"])
os.chdir(user_work_dir)
shutil.rmtree(work_area)
# set clean repository settings
r.edit(fork,
has_wiki=False,
description="Fork for a pull request; please ignore",
homepage="",
has_issues=False,
has_downloads=False,
default_branch="github")
if __name__ == "__main__":
main()
clean-github-pr.py
, please send me a
patch or a pull request against the version in
my dotfiles repository.
apt-get
it. It s hard
to get the systems and processes to make this possible right,
especially without a team being paid full-time to set it all up.
Debian has managed it on the backs of volunteers. That s something I
want to be a part of.
So far, most of my efforts have been confined to packaging addons for
the Emacs text editor and the Firefox web browser. Debian has common
frameworks for packaging these and lots of scripts that make it pretty
easy to produce new packages (I did one yesterday in about 30
minutes). It s valuable to package these addons because there are a
great many advantages for a user in obtaining them from their local
Debian mirror rather than downloading them from
the de facto Emacs addons repository or the
Mozilla addons site. Users know that trusted Debian project
volunteers have reviewed the software I cannot yet upload my
packages to the Debian archive by myself and the whole Debian
infrastructure for reporting and classifying bugs can be brought to
bear. The quality assurance standards built into these processes are
higher than your average addon author s, not that I mean to suggest
anything about authors of the particular addons I ve packaged so far.
And automating the installation of such addons is easy as there are
all sorts of tools to automate installations of Debian systems and
package sets.
I hope that I can expand my work beyond packaging Emacs and Firefox
addons in the future. It s been great, though, to build my general
knowledge of the Debian toolchain and the project s social
organisation while working on something that is both relatively simple
and valuable to package. Now I said at the beginning of this post
that it was following the work of Joey Hess that brought me to Debian
development. One thing that worries me about becoming involved in
more contentious parts of the Debian project is the dysfunction that
he saw in the Debian decision-making process, dysfunction which
eventually led to his
resignation
from the project in 2014. I hope that I can avoid getting quagmired
and demotivated.
Next.