From 7eddfeb87f28c4cf8ba6839efdad8b366214ec01 Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Wed, 24 Apr 2002 12:51:00 +0000 Subject: Rework Debian packaging ito incorporate changes from Moshe Zadka, official Debian SCons package maintainer. --- HOWTO/release.txt | 4 +- SConstruct | 70 +++++++++++---------- debian/changelog | 11 +++- debian/control | 42 +++---------- debian/copyright | 38 ++++++++++++ debian/dirs | 4 ++ debian/docs | 1 + debian/postinst | 17 ++++++ debian/prerm | 12 ++++ debian/python-scons.postinst | 27 --------- debian/python-scons.prerm | 14 ----- debian/python2-scons.postinst | 27 --------- debian/python2-scons.prerm | 14 ----- debian/rules | 138 ++++++++++++++++++++---------------------- debian/scons.postinst | 27 --------- debian/scons.prerm | 14 ----- runtest.py | 7 ++- src/CHANGES.txt | 4 ++ 18 files changed, 205 insertions(+), 266 deletions(-) create mode 100644 debian/dirs create mode 100644 debian/docs create mode 100644 debian/postinst create mode 100644 debian/prerm delete mode 100644 debian/python-scons.postinst delete mode 100644 debian/python-scons.prerm delete mode 100644 debian/python2-scons.postinst delete mode 100644 debian/python2-scons.prerm delete mode 100644 debian/scons.postinst delete mode 100644 debian/scons.prerm diff --git a/HOWTO/release.txt b/HOWTO/release.txt index 6e1eaac..7c37637 100644 --- a/HOWTO/release.txt +++ b/HOWTO/release.txt @@ -83,9 +83,9 @@ Things to do to release a new version of SCons: # Change the hard-coded package version numbers # in the following files. - aecp README SConstruct debian/changelog rpm/scons.spec + aecp README SConstruct debian/changelog debian/files rpm/scons.spec - vi README SConstruct debian/changelog rpm/scons.spec + vi README SConstruct debian/changelog debian/files rpm/scons.spec # Optionally, do the same in the following: [optional] aecp HOWTO/change.txt diff --git a/SConstruct b/SConstruct index 4d91bb3..8e56006 100644 --- a/SConstruct +++ b/SConstruct @@ -71,13 +71,6 @@ rpm = whereis('rpm') unzip = whereis('unzip') zip = whereis('zip') -# My installation on Red Hat doesn't like any debhelper version -# beyond 2, so let's use 2 as the default on any non-Debian build. -if os.path.isfile('/etc/debian_version'): - dh_compat = 3 -else: - dh_compat = 2 - # # Now grab the information that we "build" into the files (using sed). # @@ -252,7 +245,7 @@ env = Environment( DEVELOPER = developer, REVISION = revision, VERSION = version, - DH_COMPAT = dh_compat, + DH_COMPAT = 2, TAR_HFLAG = tar_hflag, @@ -298,12 +291,14 @@ python_scons = { 'inst_subdir' : os.path.join('lib', 'python1.5', 'site-packages'), 'debian_deps' : [ - 'debian/rules', - 'debian/control', 'debian/changelog', + 'debian/control', 'debian/copyright', - 'debian/python-scons.postinst', - 'debian/python-scons.prerm', + 'debian/dirs', + 'debian/docs', + 'debian/postinst', + 'debian/prerm', + 'debian/rules', ], 'files' : [ 'LICENSE.txt', @@ -331,12 +326,14 @@ python_scons = { # 'inst_subdir' : os.path.join('lib', 'python2.1', 'site-packages'), # # 'debian_deps' : [ -# 'debian/rules', -# 'debian/control', -# 'debian/changelog', -# 'debian/copyright', -# 'debian/python2-scons.postinst', -# 'debian/python2-scons.prerm', +# 'debian/changelog', +# 'debian/control', +# 'debian/copyright', +# 'debian/dirs', +# 'debian/docs', +# 'debian/postinst', +# 'debian/prerm', +# 'debian/rules', # ], # # 'files' : [ @@ -357,12 +354,14 @@ scons_script = { 'inst_subdir' : 'bin', 'debian_deps' : [ - 'debian/rules', - 'debian/control', 'debian/changelog', + 'debian/control', 'debian/copyright', - 'debian/python-scons.postinst', - 'debian/python-scons.prerm', + 'debian/dirs', + 'debian/docs', + 'debian/postinst', + 'debian/prerm', + 'debian/rules', ], 'files' : [ @@ -382,12 +381,14 @@ scons = { 'pkg' : project, 'debian_deps' : [ - 'debian/rules', - 'debian/control', 'debian/changelog', + 'debian/control', 'debian/copyright', - 'debian/scons.postinst', - 'debian/scons.prerm', + 'debian/dirs', + 'debian/docs', + 'debian/postinst', + 'debian/prerm', + 'debian/rules', ], 'files' : [ @@ -661,14 +662,21 @@ for p in [ scons ]: # Our Debian packaging builds directly into build/dist, # so we don't need to add the .debs to install_targets. deb = os.path.join('build', 'dist', "%s_%s-1_all.deb" % (pkg, version)) + for d in p['debian_deps']: + b = env.SCons_revision(os.path.join(build, d), d) + env.Depends(deb, b) env.Command(deb, build_src_files, [ - "fakeroot make -f debian/rules VERSION=$VERSION DH_COMPAT=$DH_COMPAT ENVOKED_BY_CONSTRUCT=1 binary-$PKG", - "env DH_COMPAT=$DH_COMPAT dh_clean" + "cd %s && fakeroot make -f debian/rules PYTHON=python BUILDDEB_OPTIONS=--destdir=../../build/dist binary" % build, ]) - env.Depends(deb, p['debian_deps']) - dfiles = map(lambda x, d=test_deb_dir: os.path.join(d, 'usr', x), - dst_files) + old = os.path.join('lib', 'scons', '') + new = os.path.join('lib', 'python2.1', 'site-packages', '') + def xxx(s, old=old, new=new): + if s[:len(old)] == old: + s = new + s[len(old):] + return os.path.join('usr', s) + dfiles = map(lambda x, t=test_deb_dir: os.path.join(t, x), + map(xxx, dst_files)) env.Command(dfiles, deb, "dpkg --fsys-tarfile $SOURCES | (cd $TEST_DEB_DIR && tar -xf -)") diff --git a/debian/changelog b/debian/changelog index 8e330bd..ef0eb56 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,15 @@ scons (0.07-1) unstable; urgency=low - * Seventh Release. + * Folding uploaded Debian build into SCons source - -- Steven Knight Thu, 28 Mar 2002 01:24:29 -0600 + -- Steven Knight Tue, 23 Apr 2002 07:04:54 -0500 + + +scons (0.05-1) unstable; urgency=low + + * First upload (closes: #140128) + + -- Moshe Zadka Wed, 27 Mar 2002 10:40:42 +0200 scons (0.06-1) unstable; urgency=low diff --git a/debian/control b/debian/control index e628688..b5ecaff 100644 --- a/debian/control +++ b/debian/control @@ -1,39 +1,13 @@ Source: scons Section: devel -Priority: extra -Maintainer: Anthony Roach -Standards-Version: 3.5.6.0 -Build-Depends: debhelper +Priority: optional +Maintainer: Moshe Zadka +Build-Depends-Indep: debhelper (>> 2.0.0), python2.1 +Standards-Version: 3.2.1 Package: scons Architecture: all -Depends: python-base(>=1.5.2)|python2-base -Description: An Open Source software construction tool - SCons is an Open Source software construction tool--that is, a build tool; an - improved substitute for the classic Make utility; a better way to build - software. - -Package: python-scons -Architecture: all -Depends: python-base(<<2.0), python-base(>=1.5.2) -Description: SCons Python 1.5.2 extension modules - SCons is an Open Source software construction tool--that is, a build tool; an - improved substitute for the classic Make utility; a better way to build - software. - -Package: python2-scons -Architecture: all -Depends: python2-base(<<2.1), python2-base(>=2.0) -Description: SCons Python 2.0 extension modules - SCons is an Open Source software construction tool--that is, a build tool; an - improved substitute for the classic Make utility; a better way to build - software. - -Package: scons-script -Architecture: all -Depends: python-scons|python2-scons,python-base(>=1.5.2)|python2-base -Suggests: python-scons, python2-scons -Description: An Open Source software construction tool script - SCons is an Open Source software construction tool--that is, a build tool; an - improved substitute for the classic Make utility; a better way to build - software. +Depends: python2.1 +Description: A replacement for Make + Scons is able to build files from other files, based on the + dependency DAG. diff --git a/debian/copyright b/debian/copyright index 612fa86..0c394f4 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,3 +1,41 @@ +This package was debianized by Moshe Zadka on +Wed, 27 Mar 2002 10:40:28 +0200. + +Upstream Author(s): +Steven Knight +knight at baldmt dot com +http://www.baldmt.com/~knight/ + +With plenty of help from the SCons Development team: + Chad Austin + Charles Crain + Steve Leblanc + Anthony Roach + + +Copyright: + +The software comes with the following notice in the file LICENSE.txt: +Copyright (c) 2001, 2002 Steven Knight + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This package was debianized by Anthony Roach The package source can be downloaded from http://www.scons.org/ diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..cb88363 --- /dev/null +++ b/debian/dirs @@ -0,0 +1,4 @@ +usr/bin +usr/lib/python2.1/site-packages +usr/share/doc/scons +usr/share/man/man1 diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..09547ff --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +usr/share/doc/scons/* diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..1e05a5d --- /dev/null +++ b/debian/postinst @@ -0,0 +1,17 @@ +#!/bin/sh +set -e +if [ "$1" = "configure" ]; then + if [ -d /usr/doc -a ! -e /usr/doc/scons -a -d /usr/share/doc/scons ]; then + ln -sf ../share/doc/scons /usr/doc/scons + fi +fi + +NAME=scons +case "$1" in + configure|abort-upgrade|abort-remove|abort-deconfigure) + dpkg --listfiles $NAME | grep '\.py$' | \ + xargs -n 1 /usr/bin/python -c 'import py_compile,sys;py_compile.compile(sys.argv[1])' + dpkg --listfiles $NAME | grep '\.py$' | \ + xargs -n 1 /usr/bin/python -O -c 'import py_compile,sys;py_compile.compile(sys.argv[1])' + ;; +esac diff --git a/debian/prerm b/debian/prerm new file mode 100644 index 0000000..62531a3 --- /dev/null +++ b/debian/prerm @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +NAME=scons + +dpkg --listfiles $NAME | + awk '$0~/\.py$/ {print $0"c\n" $0"o"}' | + xargs rm -f >&2 + +if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/scons ]; then + rm -f /usr/doc/scons +fi diff --git a/debian/python-scons.postinst b/debian/python-scons.postinst deleted file mode 100644 index 362860a..0000000 --- a/debian/python-scons.postinst +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/sh -e -# -# postinst script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=python-scons -DIRLIST="/usr/lib/python1.5/site-packages/SCons" - -case "$1" in - configure|abort-upgrade|abort-remove|abort-deconfigure) - for i in $DIRLIST ; do - python2 -O /usr/lib/python1.5/compileall.py -q $i - python2 /usr/lib/python1.5/compileall.py -q $i - done - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/python-scons.prerm b/debian/python-scons.prerm deleted file mode 100644 index 24e558c..0000000 --- a/debian/python-scons.prerm +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh -e -# -# sample prerm script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=python-scons - -dpkg --listfiles $PACKAGE | - awk '$0~/\.py$/ {print $0"c\n" $0"o"}' | - xargs rm -f >&2 - -#DEBHELPER# diff --git a/debian/python2-scons.postinst b/debian/python2-scons.postinst deleted file mode 100644 index eedb8ab..0000000 --- a/debian/python2-scons.postinst +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/sh -e -# -# postinst script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=python2-scons -DIRLIST="/usr/lib/python2.0/site-packages/SCons" - -case "$1" in - configure|abort-upgrade|abort-remove|abort-deconfigure) - for i in $DIRLIST ; do - python2 -O /usr/lib/python2.0/compileall.py -q $i - python2 /usr/lib/python2.0/compileall.py -q $i - done - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/python2-scons.prerm b/debian/python2-scons.prerm deleted file mode 100644 index 2bc8081..0000000 --- a/debian/python2-scons.prerm +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh -e -# -# sample prerm script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=python2-scons - -dpkg --listfiles $PACKAGE | - awk '$0~/\.py$/ {print $0"c\n" $0"o"}' | - xargs rm -f >&2 - -#DEBHELPER# diff --git a/debian/rules b/debian/rules index e3b0e06..2b3b36c 100644 --- a/debian/rules +++ b/debian/rules @@ -1,113 +1,105 @@ #!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. -# -# This file is more complex than it needs to be to just build binary packages, -# because it satisfies the relevant Debian policies. See ../README for more -# information. -# +######## +# Overridable variables added to support building test .deb files +# as part of routine SCons builds. --SK +BUILDDEB_OPTIONS= +PYTHON=/usr/bin/python2.1 +####### # Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 +export DH_VERBOSE=1 # This is the debhelper compatability version to use. -# We expect this to be provided by the calling build script: -export DH_COMPAT -# Here's the previous/"normal" Debian value (?), but it breaks on a -# converted Red Hat debhelper installation: -#export DH_COMPAT=3 +export DH_COMPAT=2 -# This has to be exported to make some magic below work. -export DH_OPTIONS +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + -ifeq ($(ENVOKED_BY_CONSTRUCT),1) -BUILDDEB_OPTIONS=--destdir=build/dist -endif + touch configure-stamp -build: build-stamp +build: configure-stamp build-stamp build-stamp: -ifneq ($(ENVOKED_BY_CONSTRUCT),1) dh_testdir - cons + $(PYTHON) setup.py build touch build-stamp -endif clean: dh_testdir dh_testroot - rm -f build-stamp configure-stamp install-common-stamp - rm -rf build - find -name .construct -exec rm "{}" ";" + rm -f build-stamp configure-stamp + rm -rf build/ dh_clean -install-common: install-common-stamp -install-common-stamp: DH_OPTIONS= -install-common-stamp: +install: build dh_testdir dh_testroot dh_clean -k dh_installdirs - touch install-common-stamp -install-scons: build install-common - python build/scons/setup.py install \ ---install-scripts=`pwd`/debian/scons/usr/bin \ ---install-purelib=`pwd`/debian/scons/usr/lib/scons --no-compile -# Here's how we'd install the build engine in a version-specific directory. -#--install-purelib=`pwd`/debian/scons/usr/lib/scons-$VERSION --no-compile + # Add here commands to install the package into debian/scons. + @######## + @# The SCons project uses Aegis for development, which requires + @# that targets be removed explicitly before they're created. + @# (They could be symlinks to checked-in read-only copies in the + @# repository.) We also can't assume that the proper directories + @# already exist on our non-Debian test build systems. Hence, + @# we do a lot of mkdir -p and rm -f here... --SK + @######## + mkdir -p debian/scons/usr/lib/python2.1/site-packages/ + rm -rf debian/scons/usr/lib/python2.1/site-packages/SCons + cp -r build/lib/SCons debian/scons/usr/lib/python2.1/site-packages/ + + mkdir -p debian/scons/usr/bin/ + rm -f debian/scons/usr/bin/scons +ifeq ($(PYTHON),python) + cp build/scripts/scons debian/scons/usr/bin/scons +else + sed '1s|.*|#!/usr/bin/python2.1|' build/scripts/scons > debian/scons/usr/bin/scons +endif + chmod +x debian/scons/usr/bin/scons + + mkdir -p debian/scons/usr/share/man/man1/ + rm -f debian/scons/usr/share/man/man1/scons.1 + cp scons.1 debian/scons/usr/share/man/man1/ + + mkdir -p debian/scons/usr/share/doc/scons + rm -f debian/scons/usr/share/doc/scons/changelog + rm -f debian/scons/usr/share/doc/scons/README.txt + rm -f debian/scons/usr/share/doc/scons/*.gz + rm -f debian/scons/usr/share/doc/scons/copyright -install-python-scons: build install-common - python build/python-scons/setup.py install \ ---install-purelib=`pwd`/debian/python-scons/usr/lib/python1.5/site-packages --no-compile + cp README.txt debian/scons/usr/share/doc/scons/ -install-python2-scons: build install-common - python build/python2-scons/setup.py install \ ---install-purelib=`pwd`/debian/python2-scons/usr/lib/python2.0/site-packages --no-compile + gzip -9 debian/scons/usr/share/doc/scons/* -install-scons-script: build install-common - python build/scons-script/setup.py install \ ---install-scripts=`pwd`/debian/scons/usr/bin --no-compile + cp debian/changelog debian/scons/usr/share/doc/scons/changelog + cp debian/copyright debian/scons/usr/share/doc/scons/ -# This single target is used to build all the packages, all at once, or -# one at a time. So keep in mind: any options passed to commands here will -# affect _all_ packages. Anything you want to only affect one package -# should be put in another target, such as the install target. -binary-common: +# Build architecture-independent files here. +binary-indep: build install dh_testdir dh_testroot - dh_installdocs - dh_installexamples - dh_installmanpages + #dh_installdocs dh_installchangelogs + dh_link + dh_strip dh_compress dh_fixperms dh_installdeb + dh_shlibdeps dh_gencontrol dh_md5sums - dh_builddeb $(BUILDDEB_OPTIONS) - -# Build architecture independant packages using the common target. -binary-indep: build install - $(MAKE) ENVOKED_BY_CONSTRUCT=$(ENVOKED_BY_CONSTRUCT) -f debian/rules DH_OPTIONS=-i binary-common + DH_COMPAT=$(DH_COMPAT) dh_builddeb $(BUILDDEB_OPTIONS) -# Build architecture dependant packages using the common target. +# Build architecture-dependent files here. binary-arch: build install -# Any other binary targets build just one binary package at a time. -binary-scons: build install-scons - $(MAKE) ENVOKED_BY_CONSTRUCT=$(ENVOKED_BY_CONSTRUCT) -f debian/rules binary-common DH_OPTIONS=-pscons - -binary-python-scons: build install-python-scons - $(MAKE) ENVOKED_BY_CONSTRUCT=$(ENVOKED_BY_CONSTRUCT) -f debian/rules binary-common DH_OPTIONS=-ppython-scons - -binary-python2-scons: build install-python2-scons - $(MAKE) ENVOKED_BY_CONSTRUCT=$(ENVOKED_BY_CONSTRUCT) -f debian/rules binary-common DH_OPTIONS=-ppython2-scons - -binary-scons-script: build install-scons-script - $(MAKE) ENVOKED_BY_CONSTRUCT=$(ENVOKED_BY_CONSTRUCT) -f debian/rules binary-common DH_OPTIONS=-pscons-script - binary: binary-indep binary-arch - -.PHONY: build clean binary-indep binary-arch binary install binary-scons binary-python-scons binary-python2-scons binary-scons-script install-scons install-python-scons install-python2-scons install-scons-script - - +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/debian/scons.postinst b/debian/scons.postinst deleted file mode 100644 index 7dd248d..0000000 --- a/debian/scons.postinst +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/sh -e -# -# postinst script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=scons -DIRLIST="/usr/lib/scons-0.07" - -case "$1" in - configure|abort-upgrade|abort-remove|abort-deconfigure) - for i in $DIRLIST ; do - python2 -O /usr/lib/python1.5/compileall.py -q $i - python2 /usr/lib/python1.5/compileall.py -q $i - done - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/scons.prerm b/debian/scons.prerm deleted file mode 100644 index 0b62083..0000000 --- a/debian/scons.prerm +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh -e -# -# sample prerm script for Debian python2 packages. -# Written 1998 by Gregor Hoffleit . -# Modified for SCons 2001 by Anthony Roach . -# - -PACKAGE=scons - -dpkg --listfiles $PACKAGE | - awk '$0~/\.py$/ {print $0"c\n" $0"o"}' | - xargs rm -f >&2 - -#DEBHELPER# diff --git a/runtest.py b/runtest.py index 400f84c..b894a7f 100644 --- a/runtest.py +++ b/runtest.py @@ -93,6 +93,10 @@ if package: 'zip' : '', } + lib = { + 'deb' : os.path.join('python2.1', 'site-packages') + } + if not dir.has_key(package): sys.stderr.write("Unknown package '%s'\n" % package) sys.exit(2) @@ -104,7 +108,8 @@ if package: lib_dir = os.path.join(test_dir, dir[package]) else: scons_dir = os.path.join(test_dir, dir[package], 'bin') - lib_dir = os.path.join(test_dir, dir[package], 'lib', 'scons') + l = lib.get(package, 'scons') + lib_dir = os.path.join(test_dir, dir[package], 'lib', l) else: diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 999b2c5..41b5899 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -122,6 +122,10 @@ RELEASE 0.07 - - Fixed use of sys.path so Python modules can be imported from the SConscript directory. + From Moshe Zadka: + + - Changes for official Debian packaging. + RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600 -- cgit v0.12