13cbdda60SSimon J. Gerraty#!/bin/sh 23cbdda60SSimon J. Gerraty 33cbdda60SSimon J. Gerraty# NAME: 43cbdda60SSimon J. Gerraty# meta2deps.sh - extract useful info from .meta files 53cbdda60SSimon J. Gerraty# 63cbdda60SSimon J. Gerraty# SYNOPSIS: 73cbdda60SSimon J. Gerraty# meta2deps.sh SB="SB" "meta" ... 83cbdda60SSimon J. Gerraty# 93cbdda60SSimon J. Gerraty# DESCRIPTION: 103cbdda60SSimon J. Gerraty# This script looks each "meta" file and extracts the 113cbdda60SSimon J. Gerraty# information needed to deduce build and src dependencies. 123cbdda60SSimon J. Gerraty# 133cbdda60SSimon J. Gerraty# To do this, we extract the 'CWD' record as well as all the 143cbdda60SSimon J. Gerraty# syscall traces which describe 'R'ead, 'C'hdir and 'E'xec 153cbdda60SSimon J. Gerraty# syscalls. 163cbdda60SSimon J. Gerraty# 173cbdda60SSimon J. Gerraty# The typical meta file looks like:: 183cbdda60SSimon J. Gerraty#.nf 193cbdda60SSimon J. Gerraty# 203cbdda60SSimon J. Gerraty# # Meta data file "path" 213cbdda60SSimon J. Gerraty# CMD "command-line" 223cbdda60SSimon J. Gerraty# CWD "cwd" 233cbdda60SSimon J. Gerraty# TARGET "target" 243cbdda60SSimon J. Gerraty# -- command output -- 253cbdda60SSimon J. Gerraty# -- filemon acquired metadata -- 263cbdda60SSimon J. Gerraty# # buildmon version 2 273cbdda60SSimon J. Gerraty# V 2 283cbdda60SSimon J. Gerraty# E "pid" "path" 293cbdda60SSimon J. Gerraty# R "pid" "path" 303cbdda60SSimon J. Gerraty# C "pid" "cwd" 313cbdda60SSimon J. Gerraty# R "pid" "path" 323cbdda60SSimon J. Gerraty# X "pid" "status" 333cbdda60SSimon J. Gerraty#.fi 343cbdda60SSimon J. Gerraty# 353cbdda60SSimon J. Gerraty# The fact that all the syscall entry lines start with a single 363cbdda60SSimon J. Gerraty# character make these files quite easy to process using sed(1). 373cbdda60SSimon J. Gerraty# 383cbdda60SSimon J. Gerraty# To simplify the logic the 'CWD' line is made to look like a 393cbdda60SSimon J. Gerraty# normal 'C'hdir entry, and "cwd" is remembered so that it can 403cbdda60SSimon J. Gerraty# be prefixed to any "path" which is not absolute. 413cbdda60SSimon J. Gerraty# 423cbdda60SSimon J. Gerraty# If the "path" being read ends in '.srcrel' it is the content 433cbdda60SSimon J. Gerraty# of (actually the first line of) that file that we are 443cbdda60SSimon J. Gerraty# interested in. 453cbdda60SSimon J. Gerraty# 463cbdda60SSimon J. Gerraty# Any "path" which lies outside of the sandbox "SB" is generally 473cbdda60SSimon J. Gerraty# not of interest and is ignored. 483cbdda60SSimon J. Gerraty# 493cbdda60SSimon J. Gerraty# The output, is a set of absolute paths with "SB" like: 503cbdda60SSimon J. Gerraty#.nf 513cbdda60SSimon J. Gerraty# 5252d86256SSimon J. Gerraty# $SB/obj-i386/bsd/gnu/lib/csu 5352d86256SSimon J. Gerraty# $SB/obj-i386/bsd/gnu/lib/libgcc 543cbdda60SSimon J. Gerraty# $SB/obj-i386/bsd/include 554ed220cdSEd Maste# $SB/obj-i386/bsd/lib/csu/i386 563cbdda60SSimon J. Gerraty# $SB/obj-i386/bsd/lib/libc 573cbdda60SSimon J. Gerraty# $SB/src/bsd/include 583cbdda60SSimon J. Gerraty# $SB/src/bsd/sys/i386/include 593cbdda60SSimon J. Gerraty# $SB/src/bsd/sys/sys 603cbdda60SSimon J. Gerraty# $SB/src/pan-release/rtsock 613cbdda60SSimon J. Gerraty# $SB/src/pfe-shared/include/jnx 623cbdda60SSimon J. Gerraty#.fi 633cbdda60SSimon J. Gerraty# 643cbdda60SSimon J. Gerraty# Which can then be further processed by 'gendirdeps.mk' 653cbdda60SSimon J. Gerraty# 663cbdda60SSimon J. Gerraty# If we are passed 'DPDEPS='"dpdeps", then for each src file 673cbdda60SSimon J. Gerraty# outside of "CURDIR" we read, we output a line like: 683cbdda60SSimon J. Gerraty#.nf 693cbdda60SSimon J. Gerraty# 703cbdda60SSimon J. Gerraty# DPDEPS_$path += $RELDIR 713cbdda60SSimon J. Gerraty#.fi 723cbdda60SSimon J. Gerraty# 733cbdda60SSimon J. Gerraty# with "$path" geting turned into reldir's, so that we can end 743cbdda60SSimon J. Gerraty# up with a list of all the directories which depend on each src 753cbdda60SSimon J. Gerraty# file in another directory. This can allow for efficient yet 763cbdda60SSimon J. Gerraty# complete testing of changes. 773cbdda60SSimon J. Gerraty 783cbdda60SSimon J. Gerraty 793cbdda60SSimon J. Gerraty# RCSid: 80db29cad8SSimon J. Gerraty# $Id: meta2deps.sh,v 1.9 2015/04/03 18:23:25 sjg Exp $ 813cbdda60SSimon J. Gerraty 8252d86256SSimon J. Gerraty# Copyright (c) 2010-2013, Juniper Networks, Inc. 831748de26SSimon J. Gerraty# All rights reserved. 843cbdda60SSimon J. Gerraty# 853cbdda60SSimon J. Gerraty# Redistribution and use in source and binary forms, with or without 863cbdda60SSimon J. Gerraty# modification, are permitted provided that the following conditions 873cbdda60SSimon J. Gerraty# are met: 883cbdda60SSimon J. Gerraty# 1. Redistributions of source code must retain the above copyright 893cbdda60SSimon J. Gerraty# notice, this list of conditions and the following disclaimer. 903cbdda60SSimon J. Gerraty# 2. Redistributions in binary form must reproduce the above copyright 913cbdda60SSimon J. Gerraty# notice, this list of conditions and the following disclaimer in the 923cbdda60SSimon J. Gerraty# documentation and/or other materials provided with the distribution. 933cbdda60SSimon J. Gerraty# 943cbdda60SSimon J. Gerraty# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 953cbdda60SSimon J. Gerraty# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 963cbdda60SSimon J. Gerraty# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 973cbdda60SSimon J. Gerraty# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 983cbdda60SSimon J. Gerraty# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 993cbdda60SSimon J. Gerraty# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1003cbdda60SSimon J. Gerraty# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1013cbdda60SSimon J. Gerraty# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1023cbdda60SSimon J. Gerraty# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1033cbdda60SSimon J. Gerraty# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1043cbdda60SSimon J. Gerraty# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1053cbdda60SSimon J. Gerraty 1063cbdda60SSimon J. Gerratymeta2src() { 1073cbdda60SSimon J. Gerraty cat /dev/null "$@" | 1083cbdda60SSimon J. Gerraty sed -n '/^R .*\.[chyl]$/s,^..[0-9]* ,,p' | 1093cbdda60SSimon J. Gerraty sort -u 1103cbdda60SSimon J. Gerraty} 1113cbdda60SSimon J. Gerraty 1123cbdda60SSimon J. Gerratymeta2dirs() { 1133cbdda60SSimon J. Gerraty cat /dev/null "$@" | 1143cbdda60SSimon J. Gerraty sed -n '/^R .*\/.*\.[a-z0-9][^\/]*$/s,^..[0-9]* \(.*\)/[^/]*$,\1,p' | 1153cbdda60SSimon J. Gerraty sort -u 1163cbdda60SSimon J. Gerraty} 1173cbdda60SSimon J. Gerraty 11852d86256SSimon J. Gerratyadd_list() { 11952d86256SSimon J. Gerraty sep=' ' 12052d86256SSimon J. Gerraty suffix= 12152d86256SSimon J. Gerraty while : 12252d86256SSimon J. Gerraty do 12352d86256SSimon J. Gerraty case "$1" in 12452d86256SSimon J. Gerraty "|") sep="$1"; shift;; 12552d86256SSimon J. Gerraty -s) suffix="$2"; shift 2;; 12652d86256SSimon J. Gerraty *) break;; 12752d86256SSimon J. Gerraty esac 12852d86256SSimon J. Gerraty done 12952d86256SSimon J. Gerraty name=$1 13052d86256SSimon J. Gerraty shift 13152d86256SSimon J. Gerraty eval list="\$$name" 13252d86256SSimon J. Gerraty for top in "$@" 13352d86256SSimon J. Gerraty do 13452d86256SSimon J. Gerraty case "$sep$list$sep" in 13552d86256SSimon J. Gerraty *"$sep$top$suffix$sep"*) continue;; 13652d86256SSimon J. Gerraty esac 13752d86256SSimon J. Gerraty list="${list:+$list$sep}$top$suffix" 13852d86256SSimon J. Gerraty done 13952d86256SSimon J. Gerraty eval "$name=\"$list\"" 14052d86256SSimon J. Gerraty} 14152d86256SSimon J. Gerraty 142db29cad8SSimon J. Gerraty_excludes_f() { 143db29cad8SSimon J. Gerraty egrep -v "$EXCLUDES" 144db29cad8SSimon J. Gerraty} 145db29cad8SSimon J. Gerraty 1463cbdda60SSimon J. Gerratymeta2deps() { 1473cbdda60SSimon J. Gerraty DPDEPS= 14852d86256SSimon J. Gerraty SRCTOPS=$SRCTOP 14952d86256SSimon J. Gerraty OBJROOTS= 150db29cad8SSimon J. Gerraty EXCLUDES= 1513cbdda60SSimon J. Gerraty while : 1523cbdda60SSimon J. Gerraty do 1533cbdda60SSimon J. Gerraty case "$1" in 1543cbdda60SSimon J. Gerraty *=*) eval export "$1"; shift;; 15552d86256SSimon J. Gerraty -a) MACHINE_ARCH=$2; shift 2;; 15652d86256SSimon J. Gerraty -m) MACHINE=$2; shift 2;; 15752d86256SSimon J. Gerraty -C) CURDIR=$2; shift 2;; 15852d86256SSimon J. Gerraty -H) HOST_TARGET=$2; shift 2;; 15952d86256SSimon J. Gerraty -S) add_list SRCTOPS $2; shift 2;; 16052d86256SSimon J. Gerraty -O) add_list OBJROOTS $2; shift 2;; 161db29cad8SSimon J. Gerraty -X) add_list EXCLUDES '|' $2; shift 2;; 16252d86256SSimon J. Gerraty -R) RELDIR=$2; shift 2;; 16352d86256SSimon J. Gerraty -T) TARGET_SPEC=$2; shift 2;; 1643cbdda60SSimon J. Gerraty *) break;; 1653cbdda60SSimon J. Gerraty esac 1663cbdda60SSimon J. Gerraty done 1673cbdda60SSimon J. Gerraty 16852d86256SSimon J. Gerraty _th= _o= 16952d86256SSimon J. Gerraty case "$MACHINE" in 17052d86256SSimon J. Gerraty host) _ht=$HOST_TARGET;; 17152d86256SSimon J. Gerraty esac 17252d86256SSimon J. Gerraty 17352d86256SSimon J. Gerraty for o in $OBJROOTS 17452d86256SSimon J. Gerraty do 17552d86256SSimon J. Gerraty case "$MACHINE,/$o/" in 17652d86256SSimon J. Gerraty host,*$HOST_TARGET*) ;; 17752d86256SSimon J. Gerraty *$MACHINE*|*${TARGET_SPEC:-$MACHINE}*) ;; 17852d86256SSimon J. Gerraty *) add_list _o $o; continue;; 17952d86256SSimon J. Gerraty esac 18052d86256SSimon J. Gerraty for x in $_ht $TARGET_SPEC $MACHINE 18152d86256SSimon J. Gerraty do 18252d86256SSimon J. Gerraty case "$o" in 18352d86256SSimon J. Gerraty "") continue;; 18452d86256SSimon J. Gerraty */$x/) add_list _o ${o%$x/}; o=;; 18552d86256SSimon J. Gerraty */$x) add_list _o ${o%$x}; o=;; 18652d86256SSimon J. Gerraty *$x/) add_list _o ${o%$x/}; o=;; 18752d86256SSimon J. Gerraty *$x) add_list _o ${o%$x}; o=;; 18852d86256SSimon J. Gerraty esac 18952d86256SSimon J. Gerraty done 19052d86256SSimon J. Gerraty done 19152d86256SSimon J. Gerraty OBJROOTS="$_o" 19252d86256SSimon J. Gerraty 19352d86256SSimon J. Gerraty case "$OBJTOP" in 19452d86256SSimon J. Gerraty "") 19552d86256SSimon J. Gerraty for o in $OBJROOTS 19652d86256SSimon J. Gerraty do 19752d86256SSimon J. Gerraty OBJTOP=$o${TARGET_SPEC:-$MACHINE} 19852d86256SSimon J. Gerraty break 19952d86256SSimon J. Gerraty done 20052d86256SSimon J. Gerraty ;; 20152d86256SSimon J. Gerraty esac 20252d86256SSimon J. Gerraty src_re= 20352d86256SSimon J. Gerraty obj_re= 20452d86256SSimon J. Gerraty add_list '|' -s '/*' src_re $SRCTOPS 20552d86256SSimon J. Gerraty add_list '|' -s '*' obj_re $OBJROOTS 20652d86256SSimon J. Gerraty 2073cbdda60SSimon J. Gerraty [ -z "$RELDIR" ] && unset DPDEPS 2083cbdda60SSimon J. Gerraty tf=/tmp/m2d$$-$USER 2093cbdda60SSimon J. Gerraty rm -f $tf.* 2103cbdda60SSimon J. Gerraty trap 'rm -f $tf.*; trap 0' 0 2113cbdda60SSimon J. Gerraty 2123cbdda60SSimon J. Gerraty > $tf.dirdep 2133cbdda60SSimon J. Gerraty > $tf.qual 2143cbdda60SSimon J. Gerraty > $tf.srcdep 2153cbdda60SSimon J. Gerraty > $tf.srcrel 2163cbdda60SSimon J. Gerraty > $tf.dpdeps 2173cbdda60SSimon J. Gerraty 2183cbdda60SSimon J. Gerraty seenit= 2193cbdda60SSimon J. Gerraty seensrc= 2203cbdda60SSimon J. Gerraty lpid= 221db29cad8SSimon J. Gerraty case "$EXCLUDES" in 222db29cad8SSimon J. Gerraty "") _excludes=cat;; 223db29cad8SSimon J. Gerraty *) _excludes=_excludes_f;; 224db29cad8SSimon J. Gerraty esac 225db29cad8SSimon J. Gerraty # handle @list files 226db29cad8SSimon J. Gerraty case "$@" in 227db29cad8SSimon J. Gerraty *@[!.]*) 228db29cad8SSimon J. Gerraty for f in "$@" 229db29cad8SSimon J. Gerraty do 230db29cad8SSimon J. Gerraty case "$f" in 231db29cad8SSimon J. Gerraty *.meta) cat $f;; 232db29cad8SSimon J. Gerraty @*) xargs cat < ${f#@};; 233db29cad8SSimon J. Gerraty *) cat $f;; 234db29cad8SSimon J. Gerraty esac 235db29cad8SSimon J. Gerraty done 236db29cad8SSimon J. Gerraty ;; 237db29cad8SSimon J. Gerraty *) cat /dev/null "$@";; 238db29cad8SSimon J. Gerraty esac 2> /dev/null | 239db29cad8SSimon J. Gerraty sed -e 's,^CWD,C C,;/^[CREFLM] /!d' -e "s,',,g" | 240db29cad8SSimon J. Gerraty $_excludes | 2413cbdda60SSimon J. Gerraty while read op pid path junk 2423cbdda60SSimon J. Gerraty do 2433cbdda60SSimon J. Gerraty : op=$op pid=$pid path=$path 2443cbdda60SSimon J. Gerraty # we track cwd and ldir (of interest) per pid 2453cbdda60SSimon J. Gerraty # CWD is bmake's cwd 2463cbdda60SSimon J. Gerraty case "$lpid,$pid" in 2473cbdda60SSimon J. Gerraty ,C) CWD=$path cwd=$path ldir=$path 2483cbdda60SSimon J. Gerraty if [ -z "$SB" ]; then 2493cbdda60SSimon J. Gerraty SB=`echo $CWD | sed 's,/obj.*,,'` 2503cbdda60SSimon J. Gerraty fi 2513cbdda60SSimon J. Gerraty SRCTOP=${SRCTOP:-$SB/src} 2523cbdda60SSimon J. Gerraty continue 2533cbdda60SSimon J. Gerraty ;; 2543cbdda60SSimon J. Gerraty $pid,$pid) ;; 2553cbdda60SSimon J. Gerraty *) 2563cbdda60SSimon J. Gerraty case "$lpid" in 2573cbdda60SSimon J. Gerraty "") ;; 2583cbdda60SSimon J. Gerraty *) eval ldir_$lpid=$ldir cwd_$lpid=$cwd;; 2593cbdda60SSimon J. Gerraty esac 2603cbdda60SSimon J. Gerraty eval ldir=\${ldir_$pid:-$CWD} cwd=\${cwd_$pid:-$CWD} 2613cbdda60SSimon J. Gerraty lpid=$pid 2623cbdda60SSimon J. Gerraty ;; 2633cbdda60SSimon J. Gerraty esac 2643cbdda60SSimon J. Gerraty 2653cbdda60SSimon J. Gerraty case "$op,$path" in 26652d86256SSimon J. Gerraty W,*srcrel|*.dirdep) continue;; 2673cbdda60SSimon J. Gerraty C,*) 2683cbdda60SSimon J. Gerraty case "$path" in 2693cbdda60SSimon J. Gerraty /*) cwd=$path;; 2703cbdda60SSimon J. Gerraty *) cwd=`cd $cwd/$path 2> /dev/null && /bin/pwd`;; 2713cbdda60SSimon J. Gerraty esac 2723cbdda60SSimon J. Gerraty # watch out for temp dirs that no longer exist 2733cbdda60SSimon J. Gerraty test -d ${cwd:-/dev/null/no/such} || cwd=$CWD 2743cbdda60SSimon J. Gerraty continue 2753cbdda60SSimon J. Gerraty ;; 2763cbdda60SSimon J. Gerraty F,*) eval cwd_$path=$cwd ldir_$path=$ldir 2773cbdda60SSimon J. Gerraty continue 2783cbdda60SSimon J. Gerraty ;; 2793cbdda60SSimon J. Gerraty *) dir=${path%/*} 2803cbdda60SSimon J. Gerraty case "$path" in 28152d86256SSimon J. Gerraty $src_re|$obj_re) ;; 2823cbdda60SSimon J. Gerraty /*/stage/*) ;; 2833cbdda60SSimon J. Gerraty /*) continue;; 2843cbdda60SSimon J. Gerraty *) for path in $ldir/$path $cwd/$path 2853cbdda60SSimon J. Gerraty do 2863cbdda60SSimon J. Gerraty test -e $path && break 2873cbdda60SSimon J. Gerraty done 2883cbdda60SSimon J. Gerraty dir=${path%/*} 2893cbdda60SSimon J. Gerraty ;; 2903cbdda60SSimon J. Gerraty esac 2913cbdda60SSimon J. Gerraty ;; 2923cbdda60SSimon J. Gerraty esac 2933cbdda60SSimon J. Gerraty # avoid repeating ourselves... 2943cbdda60SSimon J. Gerraty case "$DPDEPS,$seensrc," in 2953cbdda60SSimon J. Gerraty ,*) 2963cbdda60SSimon J. Gerraty case ",$seenit," in 2973cbdda60SSimon J. Gerraty *,$dir,*) continue;; 2983cbdda60SSimon J. Gerraty esac 2993cbdda60SSimon J. Gerraty ;; 3003cbdda60SSimon J. Gerraty *,$path,*) continue;; 3013cbdda60SSimon J. Gerraty esac 3023cbdda60SSimon J. Gerraty # canonicalize if needed 3033cbdda60SSimon J. Gerraty case "/$dir/" in 3043cbdda60SSimon J. Gerraty */../*|*/./*) 3053cbdda60SSimon J. Gerraty rdir=$dir 3063cbdda60SSimon J. Gerraty dir=`cd $dir 2> /dev/null && /bin/pwd` 3073cbdda60SSimon J. Gerraty seen="$rdir,$dir" 3083cbdda60SSimon J. Gerraty ;; 3093cbdda60SSimon J. Gerraty *) seen=$dir;; 3103cbdda60SSimon J. Gerraty esac 3113cbdda60SSimon J. Gerraty case "$dir" in 3123cbdda60SSimon J. Gerraty ${CURDIR:-.}|${CURDIR:-.}/*|"") continue;; 31352d86256SSimon J. Gerraty $src_re) 3143cbdda60SSimon J. Gerraty # avoid repeating ourselves... 3153cbdda60SSimon J. Gerraty case "$DPDEPS,$seensrc," in 3163cbdda60SSimon J. Gerraty ,*) 3173cbdda60SSimon J. Gerraty case ",$seenit," in 3183cbdda60SSimon J. Gerraty *,$dir,*) continue;; 3193cbdda60SSimon J. Gerraty esac 3203cbdda60SSimon J. Gerraty ;; 3213cbdda60SSimon J. Gerraty esac 3223cbdda60SSimon J. Gerraty ;; 3233cbdda60SSimon J. Gerraty *) 3243cbdda60SSimon J. Gerraty case ",$seenit," in 3253cbdda60SSimon J. Gerraty *,$dir,*) continue;; 3263cbdda60SSimon J. Gerraty esac 3273cbdda60SSimon J. Gerraty ;; 3283cbdda60SSimon J. Gerraty esac 3293cbdda60SSimon J. Gerraty if [ -d $path ]; then 3303cbdda60SSimon J. Gerraty case "$path" in 3313cbdda60SSimon J. Gerraty */..) ldir=${dir%/*};; 3323cbdda60SSimon J. Gerraty *) ldir=$path;; 3333cbdda60SSimon J. Gerraty esac 3343cbdda60SSimon J. Gerraty continue 3353cbdda60SSimon J. Gerraty fi 3363cbdda60SSimon J. Gerraty [ -f $path ] || continue 3373cbdda60SSimon J. Gerraty case "$dir" in 3383cbdda60SSimon J. Gerraty $CWD) continue;; # ignore 33952d86256SSimon J. Gerraty $src_re) 3403cbdda60SSimon J. Gerraty seenit="$seenit,$seen" 3413cbdda60SSimon J. Gerraty echo $dir >> $tf.srcdep 3423cbdda60SSimon J. Gerraty case "$DPDEPS,$reldir,$seensrc," in 3433cbdda60SSimon J. Gerraty ,*) ;; 3443cbdda60SSimon J. Gerraty *) seensrc="$seensrc,$path" 3453cbdda60SSimon J. Gerraty echo "DPDEPS_$dir/${path##*/} += $RELDIR" >> $tf.dpdeps 3463cbdda60SSimon J. Gerraty ;; 3473cbdda60SSimon J. Gerraty esac 3483cbdda60SSimon J. Gerraty continue 3493cbdda60SSimon J. Gerraty ;; 3503cbdda60SSimon J. Gerraty esac 3513cbdda60SSimon J. Gerraty # if there is a .dirdep we cannot skip 3523cbdda60SSimon J. Gerraty # just because we've seen the dir before. 3533cbdda60SSimon J. Gerraty if [ -s $path.dirdep ]; then 3543cbdda60SSimon J. Gerraty # this file contains: 3553cbdda60SSimon J. Gerraty # '# ${RELDIR}.<machine>' 3563cbdda60SSimon J. Gerraty echo $path.dirdep >> $tf.qual 3573cbdda60SSimon J. Gerraty continue 3583cbdda60SSimon J. Gerraty elif [ -s $dir.dirdep ]; then 3593cbdda60SSimon J. Gerraty echo $dir.dirdep >> $tf.qual 3603cbdda60SSimon J. Gerraty seenit="$seenit,$seen" 3613cbdda60SSimon J. Gerraty continue 3623cbdda60SSimon J. Gerraty fi 3633cbdda60SSimon J. Gerraty seenit="$seenit,$seen" 3643cbdda60SSimon J. Gerraty case "$dir" in 36552d86256SSimon J. Gerraty $obj_re) 3663cbdda60SSimon J. Gerraty echo $dir;; 3673cbdda60SSimon J. Gerraty esac 3683cbdda60SSimon J. Gerraty done > $tf.dirdep 3693cbdda60SSimon J. Gerraty _nl=echo 3703cbdda60SSimon J. Gerraty for f in $tf.dirdep $tf.qual $tf.srcdep 3713cbdda60SSimon J. Gerraty do 3723cbdda60SSimon J. Gerraty [ -s $f ] || continue 3733cbdda60SSimon J. Gerraty case $f in 3743cbdda60SSimon J. Gerraty *qual) # a list of .dirdep files 3755bcb7424SSimon J. Gerraty # we can prefix everything with $OBJTOP to 3763cbdda60SSimon J. Gerraty # tell gendirdeps.mk that these are 3773cbdda60SSimon J. Gerraty # DIRDEP entries, since they are already 3783cbdda60SSimon J. Gerraty # qualified with .<machine> as needed. 3793cbdda60SSimon J. Gerraty # We strip .$MACHINE though 3803cbdda60SSimon J. Gerraty xargs cat < $f | sort -u | 38152d86256SSimon J. Gerraty sed "s,^# ,,;s,^,$OBJTOP/,;s,\.${TARGET_SPEC:-$MACHINE}\$,,;s,\.$MACHINE\$,," 3823cbdda60SSimon J. Gerraty ;; 3833cbdda60SSimon J. Gerraty *) sort -u $f;; 3843cbdda60SSimon J. Gerraty esac 3853cbdda60SSimon J. Gerraty _nl=: 3863cbdda60SSimon J. Gerraty done 3873cbdda60SSimon J. Gerraty if [ -s $tf.dpdeps ]; then 3883cbdda60SSimon J. Gerraty case "$DPDEPS" in 3893cbdda60SSimon J. Gerraty */*) ;; 3903cbdda60SSimon J. Gerraty *) echo > $DPDEPS;; # the echo is needed! 3913cbdda60SSimon J. Gerraty esac 3923cbdda60SSimon J. Gerraty sort -u $tf.dpdeps | 3933cbdda60SSimon J. Gerraty sed "s,${SRCTOP}/,,;s,${SB_BACKING_SB:-$SB}/src/,," >> $DPDEPS 3943cbdda60SSimon J. Gerraty fi 3953cbdda60SSimon J. Gerraty # ensure we produce _something_ else egrep -v gets upset 3963cbdda60SSimon J. Gerraty $_nl 3973cbdda60SSimon J. Gerraty} 3983cbdda60SSimon J. Gerraty 3993cbdda60SSimon J. Gerratycase /$0 in 4003cbdda60SSimon J. Gerraty*/meta2dep*) meta2deps "$@";; 4013cbdda60SSimon J. Gerraty*/meta2dirs*) meta2dirs "$@";; 4023cbdda60SSimon J. Gerraty*/meta2src*) meta2src "$@";; 4033cbdda60SSimon J. Gerratyesac 404