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-head mailing list