3 # $NetBSD: heimdal2netbsd,v 1.6 2014/04/22 14:07:31 pettai Exp $
5 # Copyright (c) 2011 The NetBSD Foundation, Inc.
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
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.
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.
29 # heimdal2netbsd: convert a heimdal source tree into a
30 # netbsd heimdal source tree, under src/crypto/external/bsd/heimdal/dist
31 # based on bind2netbsd by Bernd Ernesti and changes by Simon Burge
33 # Rough instructions for importing new heimdal release from their git
36 # $ export SRCDIR=/usr/src
37 # $ export HEIMDAL_SRCDIR=src/crypto/external/bsd/heimdal
38 # $ cd /some/where/temporary
39 # $ git clone git@github.com:heimdal/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 # >>> if any conflicts, merge, fix and commit them.
44 # $ cd /some/where/temporary/heimdal
48 # >>> merge newly generated config.h
49 # >>> with $HEIMDAL_SRCDIR/include/config.h
50 # >>> and check out diffs in generated headers
54 # $ cd $SRCDIR/$HEIMDAL_SRCDIR
55 # $ cvs commit -m "Updated generated files for Heimdal head-20110317"
57 # - check makefiles to see if any extra sources have been added.
58 # - update distrib/sets if necessary.
60 prog
="$(basename "$0")"
62 d
=$2/src
/crypto
/external
/bsd
/heimdal
/dist
64 if [ $# -ne 2 ]; then echo "${prog} src dest"; exit 1; fi
83 echo preparing directory
$d
87 ### Copy the files and directories
92 ### Remove unneeded files
93 #echo removing unneeded directories and files
94 #find $d/po -name '*[0-9] XXX:
95 find $d -name '*.cat[0-9]' |
xargs rm -f && echo removed catman pages
96 find $d -name '*.info' |
xargs rm -f && echo removed info pages
97 rm -rf $d/appl
&& echo removed appl
98 rm -rf $d/lib
/libedit
&& echo removed lib
/libedit
99 rm -rf $d/lib
/sqlite
&& echo removed lib
/sqlite
100 rm -rf $d/doc
/standardisation
&& echo removed
doc
/standardisation
103 find $d -type f
-name '*.[1358]' -print |
while read f
; do
105 -e 's,\.Os HEIMDAL,.Os,' \
106 -e 's,\.Pa krb5.h,.Pa krb5/krb5.h,' \
107 -e 's,\.In krb5.h,.In krb5/krb5.h,' \
108 -e 's,\.Pa gssapi.h,.Pa gssapi/gssapi.h,' \
109 -e 's,\.In gssapi.h,.In gssapi/gssapi.h,' \
110 -e 's,#include <krb5.h>,#include <krb5/krb5.h>,' \
111 < $f > /tmp
/heimdal1f$$
&& mv /tmp
/heimdal1f$$
$f && \
112 echo fixing man page
$f
117 KRB5_INCRE
="asn1-common|asn1_err"
118 KRB5_INCRE
="$KRB5_INCRE|base64"
119 KRB5_INCRE
="$KRB5_INCRE|cms_asn1"
120 KRB5_INCRE
="$KRB5_INCRE|com_err"
121 KRB5_INCRE
="$KRB5_INCRE|com_right"
122 KRB5_INCRE
="$KRB5_INCRE|crmf_asn1"
123 KRB5_INCRE
="$KRB5_INCRE|der|der-protos"
124 KRB5_INCRE
="$KRB5_INCRE|digest_asn1"
125 KRB5_INCRE
="$KRB5_INCRE|getarg"
126 KRB5_INCRE
="$KRB5_INCRE|hdb|hdb_err|hdb-protos|hdb_asn1"
127 KRB5_INCRE
="$KRB5_INCRE|heim_asn1|heim_err"
128 KRB5_INCRE
="$KRB5_INCRE|heimbase"
129 KRB5_INCRE
="$KRB5_INCRE|heimntlm|heimntlm-protos"
130 KRB5_INCRE
="$KRB5_INCRE|hex"
131 KRB5_INCRE
="$KRB5_INCRE|hx509|hx509-protos|hx509_err"
132 KRB5_INCRE
="$KRB5_INCRE|k524_err"
133 KRB5_INCRE
="$KRB5_INCRE|kafs"
134 KRB5_INCRE
="$KRB5_INCRE|kcm|kcm-protos"
135 KRB5_INCRE
="$KRB5_INCRE|kdc|kdc-protos"
136 KRB5_INCRE
="$KRB5_INCRE|krb5|krb5-private|krb5-protos|krb5-types"
137 KRB5_INCRE
="$KRB5_INCRE|krb5_asn1|krb5_err|krb5_ccapi"
138 KRB5_INCRE
="$KRB5_INCRE|krb5-v4compat"
139 KRB5_INCRE
="$KRB5_INCRE|krb_err"
140 KRB5_INCRE
="$KRB5_INCRE|kx509_asn1"
141 KRB5_INCRE
="$KRB5_INCRE|ntlm_err"
142 KRB5_INCRE
="$KRB5_INCRE|ocsp_asn1"
143 KRB5_INCRE
="$KRB5_INCRE|parse_bytes|parse_time|parse_units"
144 KRB5_INCRE
="$KRB5_INCRE|pkcs8_asn1|pkcs9_asn1|pkcs10_asn1|pkcs12_asn1"
145 KRB5_INCRE
="$KRB5_INCRE|pkinit_asn1"
146 KRB5_INCRE
="$KRB5_INCRE|resolve"
147 KRB5_INCRE
="$KRB5_INCRE|rfc2459_asn1"
148 KRB5_INCRE
="$KRB5_INCRE|roken|roken-common"
149 KRB5_INCRE
="$KRB5_INCRE|rtbl"
150 KRB5_INCRE
="$KRB5_INCRE|sl|ss"
151 KRB5_INCRE
="$KRB5_INCRE|wind|wind_err"
152 KRB5_INCRE
="$KRB5_INCRE|xdbm"
154 GSS_INCRE
="gssapi|gssapi_krb5|gssapi_spnego|gssapi_ntlm|gssapi_oid"
156 KADM5_INCRE
="admin|kadm5-protos|kadm5-pwcheck|kadm5_err"
158 find $d -type f
-name '*.[ch]' -a ! -name compile_et.?
-print |
while read f
; do
160 -e "s,#include <($GSS_INCRE)\\.h>,#include <gssapi/\\1.h>," \
161 -e "s,#include \"($KRB5_INCRE)\\.h\",#include <krb5/\\1.h>," \
162 -e "s,#include <($KRB5_INCRE)\\.h>,#include <krb5/\\1.h>," \
163 -e "s,#include <($KADM5_INCRE)\\.h>,#include <kadm5/\\1.h>," \
164 < $f > /tmp
/heimdal1f$$
&& mv /tmp
/heimdal1f$$
$f && \
165 echo fixing include paths
in $f
169 # In these files, we want only to fix the paths in the generated files, not
170 # in the file itself. To do this, we search for "#include meaning that
171 # it can't be on the left column.
173 for f
in $d/lib
/sl
/slc-gram.y
$d/lib
/com_err
/compile_et.c
; do
174 sed -E -e "s,(.#include <)($KRB5_INCRE)\\.h>,\\1krb5/\\2.h>," \
175 < $f > /tmp
/heimdal1f$$
&& mv /tmp
/heimdal1f$$
$f && \
176 echo fixing include paths
in $f
179 # Freeze imported NetBSD RCSID's.
180 find $d -type f
-print |
xargs egrep -l '\$NetBSD:' |
while read f
; do
182 -e 's/\$\(NetBSD.*\) \$/\1/' \
183 < $f > /tmp
/heimdal1f$$
&& mv /tmp
/heimdal1f$$
$f && \
184 echo froze NetBSD RCSID
for $f
187 # Convert unexpanded RCSID's to the NetBSD way.
188 find $d -type f
-print |
xargs egrep -l 'RCSID\("\$Id\$"\)' |
while read f
; do
189 sed -e 's/RCSID("\$\Id\$")/__RCSID("\$NetBSD\$")/' \
190 < $f > /tmp
/heimdal1f$$
&& mv /tmp
/heimdal1f$$
$f && \
191 echo converted RCSID to NetBSD
for $f
194 ### Remove the $'s around RCS tags
197 ### Add our NetBSD RCS Id
198 find $d -type f
-name '*.[chly]' -print |
while read c
; do
199 sed 1q
< $c |
grep -q '\$NetBSD' ||
(
200 echo "/* \$NetBSD\$ */" >/tmp
/${prog}3n$$
201 echo "" >>/tmp
/${prog}3n$$
202 cat $c >> /tmp
/${prog}3n$$
203 mv /tmp
/${prog}3n$$
$c && echo added NetBSD RCS tag to
$c
207 find $d -type f
-name '*.[0-9]' -print |
while read m
; do
208 sed 1q
< $m |
grep -q '\$NetBSD' ||
(
209 echo ".\\\" \$NetBSD\$" >/tmp
/${prog}2m$$
210 echo ".\\\"" >>/tmp
/${prog}2m$$
211 cat $m >> /tmp
/${prog}2m$$
212 mv /tmp
/${prog}2m$$
$m && echo added NetBSD RCS tag to
$m
216 find $d -type f
-name '*.texi' -print |
while read t
; do
217 sed "2 s/^/@c \$NetBSD\$\\
218 /" < $t > /tmp
/${prog}4t$$
219 mv /tmp
/${prog}4t$$
$t && echo added NetBSD RCS tag to
$t
224 ### Clean up any CVS directories that might be around.
225 echo "cleaning up CVS residue."
228 find .
-type d
-name "CVS" -print |
xargs rm -r
232 echo "cleaning up git residue."
235 ### Fixing file and directory permissions.
236 echo "Fixing file/directory permissions."
239 find .
-type f
-print |
xargs chmod u
+rw
,go
+r
240 find .
-type d
-print |
xargs chmod u
+rwx
,go
+rx