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