1#! /bin/sh 2# 3# $NetBSD: flex2netbsd,v 1.1 2009/10/26 01:34:43 christos Exp $ 4# 5# Copyright (c) 2000 The NetBSD Foundation, Inc. 6# All rights reserved. 7# 8# Redistribution and use in source and binary forms, with or without 9# modification, are permitted provided that the following conditions 10# are met: 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 18# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 19# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 21# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27# POSSIBILITY OF SUCH DAMAGE. 28# 29# flex2netbsd: convert a flex tree into a 30# netbsd flex source tree, under src/external/bsd/flex/dist, 31# based on flex2netbsd by Bernd Ernesti and changes by Simon Burge 32# 33# Rough instructions for importing new flex release: 34# 35# $ cd /some/where/temporary 36# $ tar xpfz /new/flex/release/tar/file 37# $ sh /usr/src/external/bsd/flex/dist/flex2netbsd flex-2.5.x `pwd` 38# $ cd src/external/bsd/flex/dist 39# $ cvs import -m "Import flex 2.5.x" src/external/bsd/flex/dist FLEX flex-2-5-x 40# $ cd ../../../../../flex-9.x.y 41# $ run ./configure 42# $ run make 43# check the config file and copy it to /usr/src/external/bsd/flex/include 44# check the manual page against our copy if there are new options and 45# update 46 47if [ $# -ne 2 ]; then echo "flex2netbsd src dest"; exit 1; fi 48 49r=$1 50d=$2/src/external/bsd/flex/dist 51 52case "$d" in 53 /*) 54 ;; 55 *) 56 d=`/bin/pwd`/$d 57 ;; 58esac 59 60case "$r" in 61 /*) 62 ;; 63 *) 64 r=`/bin/pwd`/$r 65 ;; 66esac 67 68echo preparing directory $d 69rm -rf $d 70mkdir -p $d 71 72### Copy the files and directories 73echo copying $r to $d 74cd $r 75pax -rw * $d 76 77### Remove the $'s around RCS tags 78find $d -type f -print | xargs egrep -l '\$(Id|Created|Header|Revision)' | while read f; do 79 sed -e 's/\$\(Id.*\) \$/\1/' \ 80 -e 's/\$\(Created.*\) \$/\1/' \ 81 -e 's/\$\(Header.*\) \$/\1/' \ 82 -e 's/\$\(Revision.*\) \$/\1/' \ 83 < $f > /tmp/flex1f$$ && mv /tmp/flex1f$$ $f && \ 84 echo removed \$RCS tag from $f 85done 86 87### Add our NetBSD RCS Id 88find $d -type f -name '*.[chly]' -print | while read c; do 89 sed 1q < $c | grep -q '\$NetBSD' || ( 90echo "/* \$NetBSD\$ */" >/tmp/flex3n$$ 91echo "" >>/tmp/flex3n$$ 92cat $c >> /tmp/flex3n$$ 93mv /tmp/flex3n$$ $c && echo added NetBSD RCS tag to $c 94 ) 95done 96 97find $d -type f -name '*.[0-9]' -print | while read m; do 98 sed 1q < $m | grep -q '\$NetBSD' || ( 99echo ".\\\" \$NetBSD\$" >/tmp/flex2m$$ 100echo ".\\\"" >>/tmp/flex2m$$ 101cat $m >> /tmp/flex2m$$ 102mv /tmp/flex2m$$ $m && echo added NetBSD RCS tag to $m 103 ) 104done 105 106find $d -type f -name '*.texi' -print | while read t; do 107 sed "2 s/^/@c \$NetBSD\$\\ 108/" < $t > /tmp/flex4t$$ 109 mv /tmp/flex4t$$ $t && echo added NetBSD RCS tag to $t 110done 111 112echo done 113 114### Clean up any CVS directories that might be around. 115echo "cleaning up CVS residue." 116( 117 cd $d 118 find . -type d -name "CVS" -print | xargs rm -r 119) 120echo done 121 122### Fixing file and directory permissions. 123echo "Fixing file/directory permissions." 124( 125 cd $d 126 find . -type f -print | xargs chmod u+rw,go+r 127 find . -type d -print | xargs chmod u+rwx,go+rx 128) 129echo done 130 131exit 0 132