Home | History | Annotate | Line # | Download | only in heimdal
heimdal2netbsd revision 1.2
      1  1.1     elric #! /bin/sh
      2  1.1     elric #
      3  1.2  christos #	$NetBSD: heimdal2netbsd,v 1.2 2011/04/13 22:16:52 christos Exp $
      4  1.1     elric #
      5  1.1     elric # Copyright (c) 2011 The NetBSD Foundation, Inc.
      6  1.1     elric # All rights reserved.
      7  1.1     elric #
      8  1.1     elric # Redistribution and use in source and binary forms, with or without
      9  1.1     elric # modification, are permitted provided that the following conditions
     10  1.1     elric # are met:
     11  1.1     elric # 1. Redistributions of source code must retain the above copyright
     12  1.1     elric #    notice, this list of conditions and the following disclaimer.
     13  1.1     elric # 2. Redistributions in binary form must reproduce the above copyright
     14  1.1     elric #    notice, this list of conditions and the following disclaimer in the
     15  1.1     elric #    documentation and/or other materials provided with the distribution.
     16  1.1     elric #
     17  1.1     elric # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     18  1.1     elric # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     19  1.1     elric # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     20  1.1     elric # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     21  1.1     elric # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22  1.1     elric # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23  1.1     elric # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     24  1.1     elric # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     25  1.1     elric # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     26  1.1     elric # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     27  1.1     elric # POSSIBILITY OF SUCH DAMAGE.
     28  1.1     elric #
     29  1.1     elric # heimdal2netbsd:  convert a heimdal source tree into a
     30  1.2  christos # netbsd heimdal source tree, under src/crypto/external/bsd/heimdal/dist
     31  1.1     elric # based on bind2netbsd by Bernd Ernesti and changes by Simon Burge
     32  1.1     elric #
     33  1.1     elric # Rough instructions for importing new heimdal release from their git
     34  1.1     elric # repository:
     35  1.1     elric #
     36  1.1     elric #	$ export SRCDIR=/usr/src
     37  1.1     elric #	$ export HEIMDAL_SRCDIR=src/crypto/external/bsd/heimdal
     38  1.1     elric #	$ cd /some/where/temporary
     39  1.1     elric #	$ git clone git://svn.h5l.org/heimdal.git
     40  1.1     elric #	$ sh $SRCDIR/$HEIMDAL_SRCDIR/heimdal2netbsd heimdal `pwd`
     41  1.1     elric #	$ cd $HEIMDAL_SRCDIR/dist
     42  1.1     elric #       $ cvs -d ... import $HEIMDAL_SRCDIR/dist HEIMDAL head-20110317
     43  1.1     elric #	$ cd /some/where/temporary/heimdal
     44  1.1     elric #	$ autoreconf -f -i
     45  1.1     elric #	$ ./configure
     46  1.1     elric #	$ make
     47  1.1     elric #	>>> merge newly generated config.h
     48  1.1     elric #	>>> with $HEIMDAL_SRCDIR/include/config.h
     49  1.1     elric #	>>> and check out diffs in generated headers
     50  1.1     elric #	>>> and C files.
     51  1.1     elric #	$ cd ..
     52  1.1     elric #	$ rm -r src heimdal
     53  1.1     elric #	$ cd $SRCDIR/$HEIMDAL_SRCDIR
     54  1.1     elric #	$ cvs commit -m "Updated generated files for Heimdal head-20110317"
     55  1.1     elric #
     56  1.1     elric #	- check makefiles to see if any extra sources have been added.
     57  1.1     elric #	- update distrib/sets if necessary.
     58  1.1     elric 
     59  1.2  christos prog="$(basename "$0")"
     60  1.1     elric r=$1
     61  1.1     elric d=$2/src/crypto/external/bsd/heimdal/dist
     62  1.1     elric 
     63  1.2  christos if [ $# -ne 2 ]; then echo "${prog} src dest"; exit 1; fi
     64  1.2  christos 
     65  1.2  christos 
     66  1.1     elric case "$d" in
     67  1.1     elric 	/*)
     68  1.1     elric 		;;
     69  1.1     elric 	*)
     70  1.2  christos 		d="$(pwd)/$d"
     71  1.1     elric 		;;
     72  1.1     elric esac
     73  1.1     elric 
     74  1.1     elric case "$r" in
     75  1.1     elric 	/*)
     76  1.1     elric 		;;
     77  1.1     elric 	*)
     78  1.2  christos 		r=$(pwd)/$r
     79  1.1     elric 		;;
     80  1.1     elric esac
     81  1.1     elric 
     82  1.1     elric echo preparing directory $d
     83  1.1     elric rm -rf $d
     84  1.1     elric mkdir -p $d
     85  1.1     elric 
     86  1.1     elric ### Copy the files and directories
     87  1.1     elric echo copying $r to $d
     88  1.1     elric cd $r
     89  1.1     elric pax -rw * $d
     90  1.1     elric 
     91  1.1     elric ### Remove unneeded files
     92  1.1     elric #echo removing unneeded directories and files
     93  1.1     elric #find $d/po -name '*[0-9] XXX:
     94  1.1     elric find $d -name '*.cat[0-9]' | xargs rm -f && echo removed catman pages
     95  1.1     elric find $d -name '*.info' | xargs rm -f	 && echo removed info pages
     96  1.1     elric rm -rf $d/appl				 && echo removed appl
     97  1.1     elric rm -rf $d/lib/libedit			 && echo removed lib/libedit
     98  1.1     elric rm -rf $d/lib/sqlite			 && echo removed lib/sqlite
     99  1.1     elric rm -rf $d/doc/standardisation		 && echo removed doc/standardisation
    100  1.1     elric 
    101  1.1     elric # Fix man pages
    102  1.1     elric find $d -type f -name '*.[1358]' -print | while read f; do
    103  1.1     elric 	sed \
    104  1.1     elric 	    -e 's,\.Os HEIMDAL,.Os,' \
    105  1.1     elric 	    -e 's,\.Pa krb5.h,.Pa krb5/krb5.h,' \
    106  1.1     elric 	    -e 's,\.In krb5.h,.In krb5/krb5.h,' \
    107  1.1     elric 	    -e 's,\.Pa gssapi.h,.Pa gssapi/gssapi.h,' \
    108  1.1     elric 	    -e 's,\.In gssapi.h,.In gssapi/gssapi.h,' \
    109  1.1     elric 	    -e 's,#include <krb5.h>,#include <krb5/krb5.h>,' \
    110  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    111  1.1     elric 	echo fixing man page $f
    112  1.1     elric done
    113  1.1     elric 
    114  1.1     elric # Fix include usage
    115  1.1     elric 
    116  1.1     elric KRB5_INCRE="asn1-common|asn1_err"
    117  1.1     elric KRB5_INCRE="$KRB5_INCRE|base64"
    118  1.1     elric KRB5_INCRE="$KRB5_INCRE|cms_asn1"
    119  1.1     elric KRB5_INCRE="$KRB5_INCRE|com_err"
    120  1.1     elric KRB5_INCRE="$KRB5_INCRE|com_right"
    121  1.1     elric KRB5_INCRE="$KRB5_INCRE|crmf_asn1"
    122  1.1     elric KRB5_INCRE="$KRB5_INCRE|der|der-protos"
    123  1.1     elric KRB5_INCRE="$KRB5_INCRE|digest_asn1"
    124  1.1     elric KRB5_INCRE="$KRB5_INCRE|getarg"
    125  1.1     elric KRB5_INCRE="$KRB5_INCRE|hdb|hdb_err|hdb-protos|hdb_asn1"
    126  1.1     elric KRB5_INCRE="$KRB5_INCRE|heim_asn1|heim_err"
    127  1.1     elric KRB5_INCRE="$KRB5_INCRE|heimbase"
    128  1.1     elric KRB5_INCRE="$KRB5_INCRE|heimntlm|heimntlm-protos"
    129  1.1     elric KRB5_INCRE="$KRB5_INCRE|hex"
    130  1.1     elric KRB5_INCRE="$KRB5_INCRE|hx509|hx509-protos|hx509_err"
    131  1.1     elric KRB5_INCRE="$KRB5_INCRE|k524_err"
    132  1.1     elric KRB5_INCRE="$KRB5_INCRE|kafs"
    133  1.1     elric KRB5_INCRE="$KRB5_INCRE|kcm|kcm-protos"
    134  1.1     elric KRB5_INCRE="$KRB5_INCRE|kdc|kdc-protos"
    135  1.1     elric KRB5_INCRE="$KRB5_INCRE|krb5|krb5-private|krb5-protos|krb5-types"
    136  1.1     elric KRB5_INCRE="$KRB5_INCRE|krb5_asn1|krb5_err|krb5_ccapi"
    137  1.1     elric KRB5_INCRE="$KRB5_INCRE|krb5-v4compat"
    138  1.1     elric KRB5_INCRE="$KRB5_INCRE|krb_err"
    139  1.1     elric KRB5_INCRE="$KRB5_INCRE|kx509_asn1"
    140  1.1     elric KRB5_INCRE="$KRB5_INCRE|ntlm_err"
    141  1.1     elric KRB5_INCRE="$KRB5_INCRE|ocsp_asn1"
    142  1.1     elric KRB5_INCRE="$KRB5_INCRE|parse_bytes|parse_time|parse_units"
    143  1.1     elric KRB5_INCRE="$KRB5_INCRE|pkcs8_asn1|pkcs9_asn1|pkcs10_asn1|pkcs12_asn1"
    144  1.1     elric KRB5_INCRE="$KRB5_INCRE|pkinit_asn1"
    145  1.1     elric KRB5_INCRE="$KRB5_INCRE|resolve"
    146  1.1     elric KRB5_INCRE="$KRB5_INCRE|rfc2459_asn1"
    147  1.1     elric KRB5_INCRE="$KRB5_INCRE|roken|roken-common"
    148  1.1     elric KRB5_INCRE="$KRB5_INCRE|rtbl"
    149  1.1     elric KRB5_INCRE="$KRB5_INCRE|sl|ss"
    150  1.1     elric KRB5_INCRE="$KRB5_INCRE|wind|wind_err"
    151  1.1     elric KRB5_INCRE="$KRB5_INCRE|xdbm"
    152  1.1     elric 
    153  1.1     elric GSS_INCRE="gssapi|gssapi_krb5|gssapi_spnego|gssapi_ntlm|gssapi_oid"
    154  1.1     elric 
    155  1.1     elric KADM5_INCRE="admin|kadm5-protos|kadm5-pwcheck|kadm5_err"
    156  1.1     elric 
    157  1.1     elric find $d -type f -name '*.[ch]' -a ! -name compile_et.? -print | while read f; do
    158  1.1     elric 	sed -E \
    159  1.1     elric 	    -e "s,#include <($GSS_INCRE)\\.h>,#include <gssapi/\\1.h>,"	   \
    160  1.1     elric 	    -e "s,#include \"($KRB5_INCRE)\\.h\",#include <krb5/\\1.h>,"   \
    161  1.1     elric 	    -e "s,#include <($KRB5_INCRE)\\.h>,#include <krb5/\\1.h>,"	   \
    162  1.1     elric 	    -e "s,#include <($KADM5_INCRE)\\.h>,#include <kadm5/\\1.h>,"   \
    163  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    164  1.1     elric 	echo fixing include paths in $f
    165  1.1     elric done
    166  1.1     elric 
    167  1.1     elric #
    168  1.1     elric # In these files, we want only to fix the paths in the generated files, not
    169  1.1     elric # in the file itself.  To do this, we search for "#include meaning that
    170  1.1     elric # it can't be on the left column.
    171  1.1     elric 
    172  1.1     elric for f in $d/lib/sl/slc-gram.y $d/lib/com_err/compile_et.c; do
    173  1.1     elric 	sed -E -e "s,(.#include <)($KRB5_INCRE)\\.h>,\\1krb5/\\2.h>," \
    174  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    175  1.1     elric 	echo fixing include paths in $f
    176  1.1     elric done
    177  1.1     elric 
    178  1.1     elric # Freeze imported NetBSD RCSID's.
    179  1.1     elric find $d -type f -print | xargs egrep -l '\$NetBSD:' | while read f; do
    180  1.1     elric 	sed \
    181  1.1     elric 	    -e 's/\$\(NetBSD.*\) \$/\1/' \
    182  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    183  1.1     elric 	echo froze NetBSD RCSID for $f
    184  1.1     elric done
    185  1.1     elric 
    186  1.1     elric # Convert unexpanded RCSID's to the NetBSD way.
    187  1.1     elric find $d -type f -print | xargs egrep -l 'RCSID\("\$Id\$"\)' | while read f; do
    188  1.1     elric 	sed -e 's/RCSID("\$\Id\$")/__RCSID("\$NetBSD\$")/' \
    189  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    190  1.1     elric 	echo converted RCSID to NetBSD for $f
    191  1.1     elric done
    192  1.1     elric 
    193  1.1     elric ### Remove the $'s around RCS tags
    194  1.1     elric find $d -type f -print | xargs egrep -l \
    195  1.1     elric     '\$(Author|Date|Header|Id|Locker|Log|Name|RCSfile|Revision|Source|State)' |
    196  1.1     elric     while read f; do
    197  1.1     elric 	sed \
    198  1.1     elric 	    -e 's/\$\(Author.*\) \$/\1/' \
    199  1.1     elric 	    -e 's/\$\(Date.*\) \$/\1/' \
    200  1.1     elric 	    -e 's/\$\(Header.*\) \$/\1/' \
    201  1.1     elric 	    -e 's/\$\(Id.*\) \$/\1/' \
    202  1.1     elric 	    -e 's/\$\(Locker.*\) \$/\1/' \
    203  1.1     elric 	    -e 's/\$\(Log.*\) \$/\1/' \
    204  1.1     elric 	    -e 's/\$\(Name.*\) \$/\1/' \
    205  1.1     elric 	    -e 's/\$\(RCSfile.*\) \$/\1/' \
    206  1.1     elric 	    -e 's/\$\(Revision.*\) \$/\1/' \
    207  1.1     elric 	    -e 's/\$\(Source.*\) \$/\1/' \
    208  1.1     elric 	    -e 's/\$\(State.*\) \$/\1/' \
    209  1.1     elric 	    < $f > /tmp/heimdal1f$$ && mv /tmp/heimdal1f$$ $f && \
    210  1.1     elric 	echo removed \$RCS tag from $f
    211  1.1     elric done
    212  1.1     elric 
    213  1.1     elric ### Add our NetBSD RCS Id
    214  1.1     elric find $d -type f -name '*.[chly]' -print | while read c; do
    215  1.1     elric 	sed 1q < $c | grep -q '\$NetBSD' || (
    216  1.2  christos echo "/*	\$NetBSD\$	*/" >/tmp/${prog}3n$$
    217  1.2  christos echo "" >>/tmp/${prog}3n$$
    218  1.2  christos cat $c  >> /tmp/${prog}3n$$
    219  1.2  christos mv /tmp/${prog}3n$$ $c && echo added NetBSD RCS tag to $c
    220  1.1     elric 	)
    221  1.1     elric done
    222  1.1     elric 
    223  1.1     elric find $d -type f -name '*.[0-9]' -print | while read m; do
    224  1.1     elric 	sed 1q < $m | grep -q '\$NetBSD' || (
    225  1.2  christos echo ".\\\"	\$NetBSD\$" >/tmp/${prog}2m$$
    226  1.2  christos echo ".\\\"" >>/tmp/${prog}2m$$
    227  1.2  christos cat $m >> /tmp/${prog}2m$$
    228  1.2  christos mv /tmp/${prog}2m$$ $m && echo added NetBSD RCS tag to $m
    229  1.1     elric 	)
    230  1.1     elric done
    231  1.1     elric 
    232  1.1     elric find $d -type f -name '*.texi' -print | while read t; do
    233  1.1     elric         sed "2 s/^/@c \$NetBSD\$\\
    234  1.2  christos /" < $t > /tmp/${prog}4t$$
    235  1.2  christos 	mv /tmp/${prog}4t$$ $t && echo added NetBSD RCS tag to $t
    236  1.1     elric done
    237  1.1     elric 
    238  1.1     elric echo done
    239  1.1     elric 
    240  1.1     elric ### Clean up any CVS directories that might be around.
    241  1.1     elric echo "cleaning up CVS residue."
    242  1.1     elric (
    243  1.1     elric 	cd $d
    244  1.1     elric 	find . -type d -name "CVS" -print | xargs rm -r
    245  1.1     elric )
    246  1.1     elric echo done
    247  1.1     elric 
    248  1.1     elric echo "cleaning up git residue."
    249  1.1     elric rm -rf $d/.git
    250  1.1     elric 
    251  1.1     elric ### Fixing file and directory permissions.
    252  1.1     elric echo "Fixing file/directory permissions."
    253  1.1     elric (
    254  1.1     elric 	cd $d
    255  1.1     elric 	find . -type f -print | xargs chmod u+rw,go+r
    256  1.1     elric 	find . -type d -print | xargs chmod u+rwx,go+rx
    257  1.1     elric )
    258  1.1     elric echo done
    259  1.1     elric 
    260  1.1     elric exit 0
    261