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