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