#!/bin/sh
#
# Splits NSS into nss-util and nss-softokn
# Takes as command line input the version of nss
# and assumes that a file nss-${nss_version}.tar.gz
# exists in the current directory
set -e
if test -z $1
then
echo "usage: $0 nss-version"
exit
fi
export name=nss
export version=$1
echo "Extracting ${name}-${version}.tar.gz"
tar -xzf ${name}-${version}.tar.gz
# the directory will be named ${name}-${version}
nss_source_dir=${name}-${version}
softokn_dir=${name}-softokn-${version}
# make_nss_softokn
#-------------------------------------------------
# create the nss-softokn subset consisting of
# nss/dbm full directory
# nss/coreconf full directory
# nss top files only
# nss/lib top files only
# nss/lib/freebl full directory
# nss/lib/softoken full directory
# nss/lib/softoken/dbm full directory
#-------------------------------------------------------
WORK=${softokn_dir}-work
rm -rf ${WORK}
mkdir ${WORK}
# copy everything
cp -a ${nss_source_dir} ${WORK}/${softokn_dir}
# remove subdirectories that we don't want
rm -rf ${WORK}/${softokn_dir}/nss/cmd
rm -rf ${WORK}/${softokn_dir}/nss/tests
rm -rf ${WORK}/${softokn_dir}/nss/lib
rm -rf ${WORK}/${softokn_dir}/nss/pkg
rm -rf ${WORK}/${softokn_dir}/nss/automation
rm -rf ${WORK}/${softokn_dir}/nss/external_tests
rm -rf ${WORK}/${softokn_dir}/nss/doc
# start with an empty lib directory and copy only what we need
mkdir ${WORK}/${softokn_dir}/nss/lib
# copy the top files from nss/lib/
topFilesL=`find ${nss_source_dir}/nss/lib/ -maxdepth 1 -mindepth 1 -type f`
for f in $topFilesL; do
cp -p $f ${WORK}/${softokn_dir}/nss/lib
done
mkdir ${WORK}/${softokn_dir}/nss/lib/util
# copy entire dbm, freebl and softoken directories recursively
cp -a ${nss_source_dir}/nss/lib/dbm ${WORK}/${softokn_dir}/nss/lib/dbm
cp -a ${nss_source_dir}/nss/lib/freebl ${WORK}/${softokn_dir}/nss/lib/freebl
cp -a ${nss_source_dir}/nss/lib/softoken ${WORK}/${softokn_dir}/nss/lib/softoken
# and some Makefiles and related files from nss
topFilesN=`find ${nss_source_dir}/nss/ -maxdepth 1 -mindepth 1 -type f`
for f in $topFilesN; do
cp -p $f ${WORK}/${softokn_dir}/nss/
done
# copy private headers that nss-softoken needs
for f in verref.h; do
cp -p ${nss_source_dir}/nss/lib/util/$f ${WORK}/${softokn_dir}/nss/lib/util
done
# we do need bltest, ecperf, fbectest, lib, lowhashtest, and shlibsign
# from nss/cmd
mkdir ${WORK}/${softokn_dir}/nss/cmd
# copy some files at the top and the slhlib subdirectory
topFilesC=`find ${nss_source_dir}/nss/cmd/ -maxdepth 1 -mindepth 1 -type f`
for f in $topFilesC; do
cp -p $f ${WORK}/${softokn_dir}/nss/cmd/
done
cp -a ${nss_source_dir}/nss/cmd/bltest ${WORK}/${softokn_dir}/nss/cmd/bltest
cp -a ${nss_source_dir}/nss/cmd/ecperf ${WORK}/${softokn_dir}/nss/cmd/ecperf
cp -a ${nss_source_dir}/nss/cmd/fbectest ${WORK}/${softokn_dir}/nss/cmd/fbectest
cp -a ${nss_source_dir}/nss/cmd/fipstest ${WORK}/${softokn_dir}/nss/cmd/fipstest
cp -a ${nss_source_dir}/nss/cmd/lib ${WORK}/${softokn_dir}/nss/cmd/lib
cp -a ${nss_source_dir}/nss/cmd/lowhashtest ${WORK}/${softokn_dir}/nss/cmd/lowhashtest
cp -a ${nss_source_dir}/nss/cmd/shlibsign ${WORK}/${softokn_dir}/nss/cmd/shlibsign
# plus common, crypto, and lowhash from nss/tests
mkdir ${WORK}/${softokn_dir}/nss/tests
topFilesT=`find ${nss_source_dir}/nss/tests/ -maxdepth 1 -mindepth 1 -type f`
for f in $topFilesT; do
cp -p $f ${WORK}/${softokn_dir}/nss/tests/
done
keepers="cipher common ec lowhash"
for t in $keepers; do
cp -a ${nss_source_dir}/nss/tests/$t ${WORK}/${softokn_dir}/nss/tests/$t
done
pushd ${WORK}
# the compressed tar ball for nss-softokn
tar -czf ../${name}-softokn-${version}.tar.gz ${softokn_dir}
popd
# cleanup after ourselves
rm -fr ${nss_source_dir}
rm -rf ${WORK}