Home | History | Annotate | Line # | Download | only in lutok
      1  1.1  jmmv #!/bin/sh
      2  1.1  jmmv # $NetBSD: prepare-import.sh,v 1.1 2013/02/16 21:29:45 jmmv Exp $
      3  1.1  jmmv #
      4  1.1  jmmv # Use this script to recreate the 'dist' subdirectory from a newly released
      5  1.1  jmmv # distfile.  The script takes care of unpacking the distfile, removing any
      6  1.1  jmmv # files that are not relevant to NetBSD and checking if there are any new
      7  1.1  jmmv # files in the new release that need to be addressed.
      8  1.1  jmmv #
      9  1.1  jmmv 
     10  1.1  jmmv set -e
     11  1.1  jmmv 
     12  1.1  jmmv ProgName=${0##*/}
     13  1.1  jmmv 
     14  1.1  jmmv CLEAN_PATTERNS=
     15  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} *.m4"
     16  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} INSTALL TODO"
     17  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} Doxyfile*"
     18  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} Makefile* */Makefile* */*/Makefile*"
     19  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} admin"
     20  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} api-docs"
     21  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} config.h.in"
     22  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} configure*"
     23  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} include"
     24  1.1  jmmv CLEAN_PATTERNS="${CLEAN_PATTERNS} m4"
     25  1.1  jmmv 
     26  1.1  jmmv err() {
     27  1.1  jmmv 	echo "${ProgName}:" "${@}" 1>&2
     28  1.1  jmmv 	exit 1
     29  1.1  jmmv }
     30  1.1  jmmv 
     31  1.1  jmmv log() {
     32  1.1  jmmv 	echo "${ProgName}:" "${@}"
     33  1.1  jmmv }
     34  1.1  jmmv 
     35  1.1  jmmv backup_dist() {
     36  1.1  jmmv 	if [ -d dist.old ]; then
     37  1.1  jmmv 		log "Removing dist; dist.old exists"
     38  1.1  jmmv 		rm -rf dist
     39  1.1  jmmv 	else
     40  1.1  jmmv 		log "Backing up dist as dist.old"
     41  1.1  jmmv 		mv dist dist.old
     42  1.1  jmmv 	fi
     43  1.1  jmmv }
     44  1.1  jmmv 
     45  1.1  jmmv extract_distfile() {
     46  1.1  jmmv 	local distfile="${1}"; shift
     47  1.1  jmmv 	local distname="${1}"; shift
     48  1.1  jmmv 
     49  1.1  jmmv 	log "Extracting ${distfile}"
     50  1.1  jmmv 	tar -xzf "${distfile}"
     51  1.1  jmmv 	[ -d "${distname}" ] || err "Distfile did not create ${distname}"
     52  1.1  jmmv 	log "Renaming ${distname} to dist"
     53  1.1  jmmv 	mv "${distname}" dist
     54  1.1  jmmv }
     55  1.1  jmmv 
     56  1.1  jmmv get_distname() {
     57  1.1  jmmv 	local distfile="${1}"; shift
     58  1.1  jmmv 	basename "${distfile}" | sed -e 's,\.tar.*,,'
     59  1.1  jmmv }
     60  1.1  jmmv 
     61  1.1  jmmv cleanup_dist() {
     62  1.1  jmmv 	log "Removing unnecessary files from dist"
     63  1.1  jmmv 	( cd dist && rm -rf ${CLEAN_PATTERNS} )
     64  1.1  jmmv }
     65  1.1  jmmv 
     66  1.1  jmmv diff_dirs() {
     67  1.1  jmmv 	local old_dir="${1}"; shift
     68  1.1  jmmv 	local new_dir="${1}"; shift
     69  1.1  jmmv 
     70  1.1  jmmv 	local old_list=$(mktemp -t lutok-import.XXXXXX)
     71  1.1  jmmv 	local new_list=$(mktemp -t lutok-import.XXXXXX)
     72  1.1  jmmv 	local diff=$(mktemp -t lutok-import.XXXXXX)
     73  1.1  jmmv 	trap "rm -f '${old_list}' '${new_list}' '${diff}'; exit 1" \
     74  1.1  jmmv 	    HUP INT QUIT TERM
     75  1.1  jmmv 
     76  1.1  jmmv 	( cd "${old_dir}" && find . | sort >>"${old_list}" )
     77  1.1  jmmv 	( cd "${new_dir}" && find . | sort >>"${new_list}" )
     78  1.1  jmmv 
     79  1.1  jmmv 	diff -u "${old_list}" "${new_list}" | grep '^+\.' >>"${diff}" || true
     80  1.1  jmmv 	if [ -s "${diff}" ]; then
     81  1.1  jmmv 		log "New files found"
     82  1.1  jmmv 		diff -u "${old_list}" "${new_list}" | grep '^+\.'
     83  1.1  jmmv 		log "Check if any files have to be cleaned up and update" \
     84  1.1  jmmv 		    "the prepare-import.sh script accordingly"
     85  1.1  jmmv 	else
     86  1.1  jmmv 		log "No new files; all good!"
     87  1.1  jmmv 	fi
     88  1.1  jmmv 
     89  1.1  jmmv 	rm -f "${old_list}" "${new_list}" "${diff}"
     90  1.1  jmmv }
     91  1.1  jmmv 
     92  1.1  jmmv main() {
     93  1.1  jmmv 	[ ${#} -eq 1 ] || err "Must provide a distfile name"
     94  1.1  jmmv 	local distfile="${1}"; shift
     95  1.1  jmmv 
     96  1.1  jmmv 	[ -f Makefile -a -f prepare-import.sh ] || \
     97  1.1  jmmv 	    err "Must be run from the src/external/bsd/lutok subdirectory"
     98  1.1  jmmv 
     99  1.1  jmmv 	local distname="$(get_distname ${distfile})"
    100  1.1  jmmv 
    101  1.1  jmmv 	backup_dist
    102  1.1  jmmv 	extract_distfile "${distfile}" "${distname}"
    103  1.1  jmmv 	cleanup_dist
    104  1.1  jmmv 	diff_dirs dist.old dist
    105  1.1  jmmv }
    106  1.1  jmmv 
    107  1.1  jmmv main "${@}"
    108