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