Home | History | Annotate | Line # | Download | only in heimdal
heimdal2netbsd revision 1.1
      1 #! /bin/sh
      2 #
      3 #	$NetBSD: heimdal2netbsd,v 1.1 2011/04/13 19:04:40 elric Exp $
      4 #
      5 # Copyright (c) 2011 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 # heimdal2netbsd:  convert a heimdal source tree into a
     30 # netbsd amd source tree, under src/crypto/external/bsd/heimdal/dist
     31 # based on bind2netbsd by Bernd Ernesti and changes by Simon Burge
     32 #
     33 # Rough instructions for importing new heimdal release from their git
     34 # repository:
     35 #
     36 #	$ export SRCDIR=/usr/src
     37 #	$ export HEIMDAL_SRCDIR=src/crypto/external/bsd/heimdal
     38 #	$ cd /some/where/temporary
     39 #	$ git clone git://svn.h5l.org/heimdal.git
     40 #	$ sh $SRCDIR/$HEIMDAL_SRCDIR/heimdal2netbsd heimdal `pwd`
     41 #	$ cd $HEIMDAL_SRCDIR/dist
     42 #       $ cvs -d ... import $HEIMDAL_SRCDIR/dist HEIMDAL head-20110317
     43 #	$ cd /some/where/temporary/heimdal
     44 #	$ autoreconf -f -i
     45 #	$ ./configure
     46 #	$ make
     47 #	>>> merge newly generated config.h
     48 #	>>> with $HEIMDAL_SRCDIR/include/config.h
     49 #	>>> and check out diffs in generated headers
     50 #	>>> and C files.
     51 #	$ cd ..
     52 #	$ rm -r src heimdal
     53 #	$ cd $SRCDIR/$HEIMDAL_SRCDIR
     54 #	$ cvs commit -m "Updated generated files for Heimdal head-20110317"
     55 #
     56 #	- check makefiles to see if any extra sources have been added.
     57 #	- update distrib/sets if necessary.
     58 
     59 if [ $# -ne 2 ]; then echo "heimdal2netbsd src dest"; exit 1; fi
     60 
     61 r=$1
     62 d=$2/src/crypto/external/bsd/heimdal/dist
     63 
     64 case "$d" in
     65 	/*)
     66 		;;
     67 	*)
     68 		d=`/bin/pwd`/$d
     69 		;;
     70 esac
     71 
     72 case "$r" in
     73 	/*)
     74 		;;
     75 	*)
     76 		r=`/bin/pwd`/$r
     77 		;;
     78 esac
     79 
     80 echo preparing directory $d
     81 rm -rf $d
     82 mkdir -p $d
     83 
     84 ### Copy the files and directories
     85 echo copying $r to $d
     86 cd $r
     87 pax -rw * $d
     88 
     89 ### Remove unneeded files
     90 #echo removing unneeded directories and files
     91 #find $d/po -name '*[0-9] XXX:
     92 find $d -name '*.cat[0-9]' | xargs rm -f && echo removed catman pages
     93 find $d -name '*.info' | xargs rm -f	 && echo removed info pages
     94 rm -rf $d/appl				 && echo removed appl
     95 rm -rf $d/lib/libedit			 && echo removed lib/libedit
     96 rm -rf $d/lib/sqlite			 && echo removed lib/sqlite
     97 rm -rf $d/doc/standardisation		 && echo removed doc/standardisation
     98 
     99 # Fix man pages
    100 find $d -type f -name '*.[1358]' -print | while read f; do
    101 	sed \
    102 	    -e 's,\.Os HEIMDAL,.Os,' \
    103 	    -e 's,\.Pa krb5.h,.Pa krb5/krb5.h,' \
    104 	    -e 's,\.In krb5.h,.In krb5/krb5.h,' \
    105 	    -e 's,\.Pa gssapi.h,.Pa gssapi/gssapi.h,' \
    106 	    -e 's,\.In gssapi.h,.In gssapi/gssapi.h,' \
    107 	    -e 's,#include <krb5.h>,#include <krb5/krb5.h>,' \
    108 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    109 	echo fixing man page $f
    110 done
    111 
    112 # Fix include usage
    113 
    114 KRB5_INCRE="asn1-common|asn1_err"
    115 KRB5_INCRE="$KRB5_INCRE|base64"
    116 KRB5_INCRE="$KRB5_INCRE|cms_asn1"
    117 KRB5_INCRE="$KRB5_INCRE|com_err"
    118 KRB5_INCRE="$KRB5_INCRE|com_right"
    119 KRB5_INCRE="$KRB5_INCRE|crmf_asn1"
    120 KRB5_INCRE="$KRB5_INCRE|der|der-protos"
    121 KRB5_INCRE="$KRB5_INCRE|digest_asn1"
    122 KRB5_INCRE="$KRB5_INCRE|getarg"
    123 KRB5_INCRE="$KRB5_INCRE|hdb|hdb_err|hdb-protos|hdb_asn1"
    124 KRB5_INCRE="$KRB5_INCRE|heim_asn1|heim_err"
    125 KRB5_INCRE="$KRB5_INCRE|heimbase"
    126 KRB5_INCRE="$KRB5_INCRE|heimntlm|heimntlm-protos"
    127 KRB5_INCRE="$KRB5_INCRE|hex"
    128 KRB5_INCRE="$KRB5_INCRE|hx509|hx509-protos|hx509_err"
    129 KRB5_INCRE="$KRB5_INCRE|k524_err"
    130 KRB5_INCRE="$KRB5_INCRE|kafs"
    131 KRB5_INCRE="$KRB5_INCRE|kcm|kcm-protos"
    132 KRB5_INCRE="$KRB5_INCRE|kdc|kdc-protos"
    133 KRB5_INCRE="$KRB5_INCRE|krb5|krb5-private|krb5-protos|krb5-types"
    134 KRB5_INCRE="$KRB5_INCRE|krb5_asn1|krb5_err|krb5_ccapi"
    135 KRB5_INCRE="$KRB5_INCRE|krb5-v4compat"
    136 KRB5_INCRE="$KRB5_INCRE|krb_err"
    137 KRB5_INCRE="$KRB5_INCRE|kx509_asn1"
    138 KRB5_INCRE="$KRB5_INCRE|ntlm_err"
    139 KRB5_INCRE="$KRB5_INCRE|ocsp_asn1"
    140 KRB5_INCRE="$KRB5_INCRE|parse_bytes|parse_time|parse_units"
    141 KRB5_INCRE="$KRB5_INCRE|pkcs8_asn1|pkcs9_asn1|pkcs10_asn1|pkcs12_asn1"
    142 KRB5_INCRE="$KRB5_INCRE|pkinit_asn1"
    143 KRB5_INCRE="$KRB5_INCRE|resolve"
    144 KRB5_INCRE="$KRB5_INCRE|rfc2459_asn1"
    145 KRB5_INCRE="$KRB5_INCRE|roken|roken-common"
    146 KRB5_INCRE="$KRB5_INCRE|rtbl"
    147 KRB5_INCRE="$KRB5_INCRE|sl|ss"
    148 KRB5_INCRE="$KRB5_INCRE|wind|wind_err"
    149 KRB5_INCRE="$KRB5_INCRE|xdbm"
    150 
    151 GSS_INCRE="gssapi|gssapi_krb5|gssapi_spnego|gssapi_ntlm|gssapi_oid"
    152 
    153 KADM5_INCRE="admin|kadm5-protos|kadm5-pwcheck|kadm5_err"
    154 
    155 find $d -type f -name '*.[ch]' -a ! -name compile_et.? -print | while read f; do
    156 	sed -E \
    157 	    -e "s,#include <($GSS_INCRE)\\.h>,#include <gssapi/\\1.h>,"	   \
    158 	    -e "s,#include \"($KRB5_INCRE)\\.h\",#include <krb5/\\1.h>,"   \
    159 	    -e "s,#include <($KRB5_INCRE)\\.h>,#include <krb5/\\1.h>,"	   \
    160 	    -e "s,#include <($KADM5_INCRE)\\.h>,#include <kadm5/\\1.h>,"   \
    161 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    162 	echo fixing include paths in $f
    163 done
    164 
    165 #
    166 # In these files, we want only to fix the paths in the generated files, not
    167 # in the file itself.  To do this, we search for "#include meaning that
    168 # it can't be on the left column.
    169 
    170 for f in $d/lib/sl/slc-gram.y $d/lib/com_err/compile_et.c; do
    171 	sed -E -e "s,(.#include <)($KRB5_INCRE)\\.h>,\\1krb5/\\2.h>," \
    172 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    173 	echo fixing include paths in $f
    174 done
    175 
    176 # Freeze imported NetBSD RCSID's.
    177 find $d -type f -print | xargs egrep -l '\$NetBSD:' | while read f; do
    178 	sed \
    179 	    -e 's/\$\(NetBSD.*\) \$/\1/' \
    180 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    181 	echo froze NetBSD RCSID for $f
    182 done
    183 
    184 # Convert unexpanded RCSID's to the NetBSD way.
    185 find $d -type f -print | xargs egrep -l 'RCSID\("\$Id\$"\)' | while read f; do
    186 	sed -e 's/RCSID("\$\Id\$")/__RCSID("\$NetBSD\$")/' \
    187 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    188 	echo converted RCSID to NetBSD for $f
    189 done
    190 
    191 ### Remove the $'s around RCS tags
    192 find $d -type f -print | xargs egrep -l \
    193     '\$(Author|Date|Header|Id|Locker|Log|Name|RCSfile|Revision|Source|State)' |
    194     while read f; do
    195 	sed \
    196 	    -e 's/\$\(Author.*\) \$/\1/' \
    197 	    -e 's/\$\(Date.*\) \$/\1/' \
    198 	    -e 's/\$\(Header.*\) \$/\1/' \
    199 	    -e 's/\$\(Id.*\) \$/\1/' \
    200 	    -e 's/\$\(Locker.*\) \$/\1/' \
    201 	    -e 's/\$\(Log.*\) \$/\1/' \
    202 	    -e 's/\$\(Name.*\) \$/\1/' \
    203 	    -e 's/\$\(RCSfile.*\) \$/\1/' \
    204 	    -e 's/\$\(Revision.*\) \$/\1/' \
    205 	    -e 's/\$\(Source.*\) \$/\1/' \
    206 	    -e 's/\$\(State.*\) \$/\1/' \
    207 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    208 	echo removed \$RCS tag from $f
    209 done
    210 
    211 ### Add our NetBSD RCS Id
    212 find $d -type f -name '*.[chly]' -print | while read c; do
    213 	sed 1q < $c | grep -q '\$NetBSD' || (
    214 echo "/*	\$NetBSD\$	*/" >/tmp/amd3n$$
    215 echo "" >>/tmp/amd3n$$
    216 cat $c  >> /tmp/amd3n$$
    217 mv /tmp/amd3n$$ $c && echo added NetBSD RCS tag to $c
    218 	)
    219 done
    220 
    221 find $d -type f -name '*.[0-9]' -print | while read m; do
    222 	sed 1q < $m | grep -q '\$NetBSD' || (
    223 echo ".\\\"	\$NetBSD\$" >/tmp/amd2m$$
    224 echo ".\\\"" >>/tmp/amd2m$$
    225 cat $m >> /tmp/amd2m$$
    226 mv /tmp/amd2m$$ $m && echo added NetBSD RCS tag to $m
    227 	)
    228 done
    229 
    230 find $d -type f -name '*.texi' -print | while read t; do
    231         sed "2 s/^/@c \$NetBSD\$\\
    232 /" < $t > /tmp/amd4t$$
    233 	mv /tmp/amd4t$$ $t && echo added NetBSD RCS tag to $t
    234 done
    235 
    236 echo done
    237 
    238 ### Clean up any CVS directories that might be around.
    239 echo "cleaning up CVS residue."
    240 (
    241 	cd $d
    242 	find . -type d -name "CVS" -print | xargs rm -r
    243 )
    244 echo done
    245 
    246 echo "cleaning up git residue."
    247 rm -rf $d/.git
    248 
    249 ### Fixing file and directory permissions.
    250 echo "Fixing file/directory permissions."
    251 (
    252 	cd $d
    253 	find . -type f -print | xargs chmod u+rw,go+r
    254 	find . -type d -print | xargs chmod u+rwx,go+rx
    255 )
    256 echo done
    257 
    258 exit 0
    259