1#! /bin/sh 2# $NetBSD: prepare-import.sh,v 1.1 2011/03/10 09:10:41 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} configure*" 19 20err() { 21 echo "${ProgName}:" "${@}" 1>&2 22 exit 1 23} 24 25log() { 26 echo "${ProgName}:" "${@}" 27} 28 29backup_dist() { 30 if [ -d dist.old ]; then 31 log "Removing dist; dist.old exists" 32 rm -rf dist 33 else 34 log "Backing up dist as dist.old" 35 mv dist dist.old 36 fi 37} 38 39extract_distfile() { 40 local distfile="${1}"; shift 41 local distname="${1}"; shift 42 43 log "Extracting ${distfile}" 44 tar -xzf "${distfile}" 45 [ -d "${distname}" ] || err "Distfile did not create ${distname}" 46 log "Renaming ${distname} to dist" 47 mv "${distname}" dist 48} 49 50get_distname() { 51 local distfile="${1}"; shift 52 basename "${distfile}" | sed -e 's,\.tar.*,,' 53} 54 55cleanup_dist() { 56 log "Removing unnecessary files from dist" 57 ( cd dist && rm -rf ${CLEAN_PATTERNS} ) 58} 59 60extract_version() { 61 local version=$(grep '^VERSION[ \t]*=' dist/Makefile | \ 62 cut -d '=' -f 2 | sed -e 's,[ \t]*,,g') 63 log "Version is ${version}" 64 echo "${version}" >usr.bin/tmux/version.txt 65} 66 67diff_dirs() { 68 local old_dir="${1}"; shift 69 local new_dir="${1}"; shift 70 71 local old_list=$(mktemp -t tmux-import.XXXXXX) 72 local new_list=$(mktemp -t tmux-import.XXXXXX) 73 local diff=$(mktemp -t tmux-import.XXXXXX) 74 trap "rm -f '${old_list}' '${new_list}' '${diff}'; exit 1" \ 75 HUP INT QUIT TERM 76 77 ( cd "${old_dir}" && find . | sort >>"${old_list}" ) 78 ( cd "${new_dir}" && find . | sort >>"${new_list}" ) 79 80 diff -u "${old_list}" "${new_list}" | grep '^+\.' >>"${diff}" || true 81 if [ -s "${diff}" ]; then 82 log "New files found" 83 diff -u "${old_list}" "${new_list}" | grep '^+\.' 84 log "Check if any files have to be cleaned up and update" \ 85 "the prepare-import.sh script accordingly" 86 else 87 log "No new files; all good!" 88 fi 89 90 rm -f "${old_list}" "${new_list}" "${diff}" 91} 92 93main() { 94 [ ${#} -eq 1 ] || err "Must provide a distfile name" 95 local distfile="${1}"; shift 96 97 [ -f Makefile -a -f prepare-import.sh ] || \ 98 err "Must be run from the src/external/bsd/tmux subdirectory" 99 100 local distname="$(get_distname ${distfile})" 101 102 backup_dist 103 extract_distfile "${distfile}" "${distname}" 104 extract_version 105 cleanup_dist 106 diff_dirs dist.old dist 107 log "Don't forget to validate usr.bin/tmux/version.txt and to update" \ 108 "the version in doc/3RDPARTY" 109} 110 111main "${@}" 112