aboutsummaryrefslogtreecommitdiff
path: root/buildtools/build-freebsd-ca-port.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildtools/build-freebsd-ca-port.py')
-rw-r--r--buildtools/build-freebsd-ca-port.py259
1 files changed, 0 insertions, 259 deletions
diff --git a/buildtools/build-freebsd-ca-port.py b/buildtools/build-freebsd-ca-port.py
deleted file mode 100644
index d712048e..00000000
--- a/buildtools/build-freebsd-ca-port.py
+++ /dev/null
@@ -1,259 +0,0 @@
-"""
-Construct a FreeBSD port template given the URL of a source tarball.
-
-$Id$
-
-Copyright (C) 2012-2013 Internet Systems Consortium ("ISC")
-
-Permission to use, copy, modify, and distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-"""
-
-import sys
-import os
-import subprocess
-import urlparse
-import errno
-import glob
-
-try:
- url = sys.argv[1]
-except IndexError:
- sys.exit("Usage: %s URL-of-source-tarball" % sys.argv[0])
-
-def stripext(fn, *exts):
- fn1, fn2 = os.path.splitext(fn)
- return fn1 if fn2 in exts else fn
-
-def mkdir_maybe(d):
- try:
- print "Creating", d
- os.makedirs(d)
- except OSError, e:
- if e.errno != errno.EEXIST:
- raise
-
-name = os.path.basename(urlparse.urlparse(url).path)
-name = stripext(name, ".gz", ".bz2", ".xz")
-name = stripext(name, ".tar", ".tgz", ".tbz", ".txz")
-
-# Up until this point this is fairly generic, but we reach the point
-# of diminishing returns when we have to parse the port name and
-# version number out of the filename. This will need to be changed
-# when we start doing this with something other than snapshot
-# tarballs.
-
-try:
- base, branch, vers = name.split("-")
-except:
- base, branch, vers = None
-
-if base not in ("rpkitools", "rpki"):
- base = None
-
-if branch != "trunk" and (branch[:2] != "tk" or not branch[2:].isdigit()):
- branch = None
-
-if not vers.isdigit() and (base != "rpki" or vers[0] != "r" or not vers[1:].isdigit()):
- vers = None
-else:
- vers = vers[1:]
-
-if None in (base, branch, vers):
- sys.exit("Unexpected tarball URL name format")
-
-base += "-ca"
-
-mkdir_maybe(base)
-
-with open(os.path.join(base, "Makefile"), "w") as f:
- print "Writing", f.name
-
- f.write('''\
-PORTNAME= %(portname)s
-PORTVERSION= 0.%(snapshot)s
-CATEGORIES= net
-MASTER_SITES= %(master_sites)s
-DISTFILES= %(distfiles)s
-WRKSRC= ${WRKDIR}/%(tarname)s
-MAINTAINER= sra@hactrn.net
-COMMENT= rpki.net RPKI CA tools
-
-GNU_CONFIGURE= yes
-USE_PYTHON= 2.7+
-USE_GNOME= libxml2 libxslt
-USE_MYSQL= server
-USE_APACHE_RUN= 22+
-
-USE_RC_SUBR= rpki-ca
-
-# For OpenSSL, not needed otherwise
-USE_PERL5_BUILD=yes
-
-# For building OpenSSL, not needed otherwise
-BUILD_DEPENDS+= makedepend>0:${PORTSDIR}/devel/makedepend
-
-# Needed at build to keep ./configure from complaining.
-BUILD_DEPENDS+= rsync>0:${PORTSDIR}/net/rsync
-
-RPKID_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>0:${PORTSDIR}/devel/py-lxml \\
- ${PYTHON_PKGNAMEPREFIX}MySQLdb>0:${PORTSDIR}/databases/py-MySQLdb \\
- ${PYTHON_PKGNAMEPREFIX}django>=1.3.7:${PORTSDIR}/www/py-django \\
- ${PYTHON_PKGNAMEPREFIX}vobject>0:${PORTSDIR}/deskutils/py-vobject \\
- ${PYTHON_PKGNAMEPREFIX}yaml>0:${PORTSDIR}/devel/py-yaml \\
- ${PYTHON_PKGNAMEPREFIX}south>=0.7.6:${PORTSDIR}/databases/py-south
-
-BUILD_DEPENDS+= ${RPKID_DEPENDS}
-RUN_DEPENDS+= ${RPKID_DEPENDS}
-
-RUN_DEPENDS+= ${APACHE_PKGNAMEPREFIX}mod_wsgi>3:${PORTSDIR}/www/mod_wsgi3
-
-# Try to use system OpenSSL if we can.
-CONFIGURE_ENV= CFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib"
-
-CONFIGURE_ARGS= --disable-target-installation --disable-rp-tools
-
-.include <bsd.port.mk>
-''' % { "portname" : base,
- "snapshot" : vers,
- "tarname" : name,
- "master_sites" : os.path.dirname(url) + "/",
- "distfiles" : os.path.basename(url) })
-
-with open(os.path.join(base, "pkg-descr"), "w") as f:
- print "Writing", f.name
-
- f.write('''\
-This is a port of the rpki.net RPKI toolkit CA tools.
-
-WWW: http://rpki.net/
-''')
-
-mkdir_maybe(os.path.join(base, "files"))
-
-with open(os.path.join(base, "files", "rpki-ca.in"), "w") as f:
- print "Writing", f.name
-
- f.write('''\
-#!/bin/sh
-
-# PROVIDE: rpki-ca
-# REQUIRE: LOGIN mysql
-# KEYWORD: shutdown
-#
-# Add the following line to /etc/rc.conf[.local] to enable whatever
-# RPKI CA services you have configured in rpki.conf
-#
-# rpkica_enable="YES"
-
-. /etc/rc.subr
-
-name="rpkica"
-rcvar=rpkica_enable
-
-required_files="/usr/local/etc/rpki.conf"
-
-start_cmd="rpkica_start"
-stop_cmd="rpkica_stop"
-
-load_rc_config $name
-
-: ${rpkica_enable="NO"}
-
-: ${rpkica_pid_dir="/var/run/rpki"}
-
-rpkica_start()
-{
- /usr/bin/install -m 755 -d $rpkica_pid_dir
- /usr/local/sbin/rpki-start-servers
- return 0
-}
-
-rpkica_stop()
-{
- for i in rpkid pubd irdbd rootd
- do
- if /bin/test -f $rpkica_pid_dir/$i.pid
- then
- /bin/kill `/bin/cat $rpkica_pid_dir/$i.pid`
- fi
- done
- return 0
-}
-
-run_rc_command "$1"
-''')
-
-
-#with open(os.path.join(base, "pkg-plist"), "w") as f:
-# print "Writing empty", f.name
-
-print "Generating checksum"
-
-subprocess.check_call(("make", "makesum", "DISTDIR=" + os.getcwd()), cwd = base)
-
-# We will need a pkg-install and perhaps a pkg-deinstall, but I don't
-# know what they look like (yet).
-
-print "Building"
-
-# "USE_GNOME=" gets rid of annoying whining due to empty or
-# non-existent pkg-plist. The (direct) Gnome dependency doesn't
-# matter while constructing the port skeleton, so it's simplest just
-# to disable it for this one command.
-
-subprocess.check_call(("make", "DISTDIR=" + os.getcwd(), "USE_GNOME="), cwd = base)
-
-print "Installing to temporary tree"
-
-tempdir = os.path.join(base, "work", "temp-install", "")
-
-subprocess.check_call(("make", "install", "DESTDIR=" + os.path.abspath(tempdir)),
- cwd = os.path.join(base, "work", name))
-
-print "Generating pkg-plist"
-
-with open(os.path.join(base, "pkg-plist"), "w") as f:
-
- dont_remove = ("usr", "etc", "bin", "var", "lib", "sbin", "share", "lib/python2.7", "lib/python2.7/site-packages")
-
- usr_local = None
-
- for dirpath, dirnames, filenames in os.walk(tempdir, topdown = False):
- dn = dirpath[len(tempdir):]
-
- if dn.startswith("usr/local"):
- if not usr_local and usr_local is not None:
- f.write("@cwd\n")
- usr_local = True
- dn = dn[len("usr/local/"):]
- else:
- if usr_local:
- f.write("@cwd /\n")
- usr_local = False
-
- if not dirnames and not filenames:
- f.write("@exec mkdir -p %%D/%s\n" % dn)
-
- for fn in filenames:
- if fn == "rpki.conf.sample":
- f.write("@unexec if cmp -s %%D/%s/rpki.conf.sample %%D/%s/rpki.conf; then rm -f %%D/%s/rpki.conf; fi\n" % (dn, dn, dn))
- f.write(os.path.join(dn, fn) + "\n")
- if fn == "rpki.conf.sample":
- f.write("@exec if [ ! -f %%D/%s/rpki.conf ] ; then cp -p %%D/%s/rpki.conf.sample %%D/%s/rpki.conf; fi\n" % (dn, dn, dn))
-
- if dn and dn not in dont_remove:
- f.write("@dirrm %s\n" % dn)
-
-print "Cleaning up"
-
-subprocess.check_call(("make", "clean"), cwd = base)