svn commit: r255577 - head/contrib/unbound
Dag-Erling Smørgrav
des at FreeBSD.org
Sun Sep 15 00:05:17 UTC 2013
Author: des
Date: Sun Sep 15 00:05:16 2013
New Revision: 255577
URL: http://svnweb.freebsd.org/changeset/base/255577
Log:
Two helper scripts for porting Unbound:
- freebsd-configure.sh runs ./configure with the correct parameters
and regenerates the lex and yacc code.
- freebsd-sources.pl untangles the upstream Makefile and generates
source lists for our Makefiles.
Approved by: re (blanket)
Added:
head/contrib/unbound/freebsd-configure.sh (contents, props changed)
head/contrib/unbound/freebsd-sources.pl (contents, props changed)
Added: head/contrib/unbound/freebsd-configure.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/unbound/freebsd-configure.sh Sun Sep 15 00:05:16 2013 (r255577)
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set -e
+
+error() {
+ echo "$@" >&2
+ exit 1
+}
+
+unbound=$(dirname $(realpath $0))
+cd $unbound
+
+ldnssrc=$(realpath $unbound/../ldns)
+[ -f $ldnssrc/ldns/ldns.h ] || error "can't find LDNS sources"
+export CFLAGS="-I$ldnssrc"
+
+ldnsbld=$(realpath $unbound/../../lib/libldns)
+[ -f $ldnsbld/Makefile ] || error "can't find LDNS build directory"
+
+ldnsobj=$(realpath $(make -C$ldnsbld -V.OBJDIR))
+[ -f $ldnsobj/libldns.a ] || error "can't find LDNS object directory"
+export LDFLAGS="-L$ldnsobj"
+
+./configure \
+ --with-conf-file=/etc/unbound/unbound.conf \
+ --with-run-dir=/var/unbound \
+ --with-username=unbound
+
+# Regenerate the configuration parser
+{
+cat <<EOF
+#include "config.h"
+#include "util/configyyrename.h"
+EOF
+/usr/bin/flex -L -t util/configlexer.lex
+} >util/configlexer.c
+
+/usr/bin/yacc -o util/configparser.c util/configparser.y
Added: head/contrib/unbound/freebsd-sources.pl
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/unbound/freebsd-sources.pl Sun Sep 15 00:05:16 2013 (r255577)
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+#-
+# Copyright (c) 2013 Dag-Erling Smørgrav
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $Id$
+#
+
+use strict;
+use warnings;
+use Text::Wrap;
+
+our @targets = qw(LIBUNBOUND DAEMON UBANCHOR CHECKCONF);
+
+our %target_names = (
+ LIBUNBOUND => "libunbound",
+ DAEMON => "unbound",
+ UBANCHOR => "unbound-anchor",
+ CHECKCONF => "unbound-checkconf",
+);
+
+sub get_sources($) {
+ my ($target) = @_;
+ local $/;
+
+ open(MAKE, "-|", "make", "-V${target}_OBJ_LINK")
+ or die("failed to exec make: $!\n");
+ my $objs = <MAKE>;
+ close(MAKE);
+ chomp($objs);
+ $objs =~ s/\.l?o\b/.c/g;
+ return (split(/\s+/, $objs));
+}
+
+MAIN:{
+ my %sources;
+ foreach my $target (@targets) {
+ $sources{$target} = {
+ map({ $_ => 1 }
+ grep({ !exists($sources{LIBUNBOUND}->{$_}) }
+ get_sources($target)))
+ };
+ print("# $target_names{$target}\n");
+ my $SRCS = fill("SRCS=\t", "\t", sort keys %{$sources{$target}});
+ $SRCS =~ s/\n/ \\\n/gm;
+ print("$SRCS\n");
+ }
+}
+
+1;
+
More information about the svn-src-all
mailing list