#!/bin/sh # $OpenBSD: find-build-order,v 1.4 2001/07/19 02:49:56 espie Exp $ # Copyright (c) 1999 Marc Espie. 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 code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Neither the name of OpenBSD nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY ITS AUTHOR AND THE OpenBSD project ``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 REGENTS 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. # This is a simple filter that takes a set of package and outputs a full # dependency list, so that you may build things in order. # input is of the form: dir/package BUILD_PARAM1=something... # and output is a list of dir/package : ${PORTSDIR:=/usr/ports} case "$1" in "build") type=depends-list;; "run") type=package-depends;; "all"|*) type="depends-list package-depends";; esac (while read i j do case $i in \#*);; # comments *) echo "Depending $i" >&2 cd ${PORTSDIR}/$i && make FULL_PACKAGE_NAME=yes $j $type k=`cd ${PORTSDIR}/$i && make FULL_PACKAGE_NAME=yes $j package-name` echo "$k $k";; esac done)|tsort|tail -r