1 1.1 jmmv #! /bin/sh 2 1.7 wiz # $NetBSD: prepare-import.sh,v 1.7 2026/02/09 08:36:49 wiz 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 # See the README file for general instructions. 10 1.1 jmmv # 11 1.1 jmmv 12 1.1 jmmv set -e 13 1.1 jmmv 14 1.1 jmmv ProgName=${0##*/} 15 1.1 jmmv 16 1.1 jmmv err() { 17 1.1 jmmv echo "${ProgName}:" "${@}" 1>&2 18 1.1 jmmv exit 1 19 1.1 jmmv } 20 1.1 jmmv 21 1.1 jmmv log() { 22 1.1 jmmv echo "${ProgName}:" "${@}" 23 1.1 jmmv } 24 1.1 jmmv 25 1.1 jmmv backup_dist() { 26 1.1 jmmv if [ -d dist.old ]; then 27 1.1 jmmv log "Removing dist; dist.old exists" 28 1.1 jmmv rm -rf dist 29 1.1 jmmv else 30 1.1 jmmv log "Backing up dist as dist.old" 31 1.1 jmmv mv dist dist.old 32 1.1 jmmv fi 33 1.1 jmmv } 34 1.1 jmmv 35 1.1 jmmv extract_distfile() { 36 1.1 jmmv local distfile="${1}"; shift 37 1.1 jmmv local distname="${1}"; shift 38 1.1 jmmv 39 1.1 jmmv log "Extracting ${distfile}" 40 1.1 jmmv tar -xzf "${distfile}" 41 1.1 jmmv [ -d "${distname}" ] || err "Distfile did not create ${distname}" 42 1.1 jmmv log "Renaming ${distname} to dist" 43 1.1 jmmv mv "${distname}" dist 44 1.1 jmmv } 45 1.1 jmmv 46 1.1 jmmv get_distname() { 47 1.1 jmmv local distfile="${1}"; shift 48 1.1 jmmv basename "${distfile}" | sed -e 's,\.tar.*,,' 49 1.1 jmmv } 50 1.1 jmmv 51 1.1 jmmv cleanup_dist() { 52 1.1 jmmv log "Removing unnecessary files from dist" 53 1.4 christos find dist -name .deps -exec rm -fr {} + 54 1.4 christos find dist -name .dirstamp -exec rm -f {} + 55 1.6 wiz rm dist/cmd-parse.c 56 1.6 wiz rm dist/compat/asprintf.c 57 1.6 wiz rm dist/compat/bitstring.h 58 1.6 wiz rm dist/compat/closefrom.c 59 1.6 wiz rm dist/compat/daemon.c 60 1.6 wiz rm dist/compat/fgetln.c 61 1.6 wiz rm dist/compat/forkpty-aix.c 62 1.6 wiz rm dist/compat/forkpty-hpux.c 63 1.6 wiz rm dist/compat/forkpty-sunos.c 64 1.7 wiz rm dist/compat/getopt_long.c 65 1.6 wiz rm dist/compat/queue.h 66 1.6 wiz rm dist/compat/setenv.c 67 1.6 wiz rm dist/compat/strcasestr.c 68 1.6 wiz rm dist/compat/strlcat.c 69 1.6 wiz rm dist/compat/strlcpy.c 70 1.6 wiz rm dist/compat/strsep.c 71 1.6 wiz rm dist/compat/strtonum.c 72 1.6 wiz rm dist/compat/tree.h 73 1.6 wiz rm dist/compat/unvis.c 74 1.6 wiz rm dist/compat/vis.c 75 1.6 wiz rm dist/compat/vis.h 76 1.1 jmmv } 77 1.1 jmmv 78 1.1 jmmv diff_dirs() { 79 1.1 jmmv local old_dir="${1}"; shift 80 1.1 jmmv local new_dir="${1}"; shift 81 1.1 jmmv 82 1.1 jmmv local old_list=$(mktemp -t tmux-import.XXXXXX) 83 1.1 jmmv local new_list=$(mktemp -t tmux-import.XXXXXX) 84 1.1 jmmv local diff=$(mktemp -t tmux-import.XXXXXX) 85 1.1 jmmv trap "rm -f '${old_list}' '${new_list}' '${diff}'; exit 1" \ 86 1.1 jmmv HUP INT QUIT TERM 87 1.1 jmmv 88 1.1 jmmv ( cd "${old_dir}" && find . | sort >>"${old_list}" ) 89 1.1 jmmv ( cd "${new_dir}" && find . | sort >>"${new_list}" ) 90 1.1 jmmv 91 1.1 jmmv diff -u "${old_list}" "${new_list}" | grep '^+\.' >>"${diff}" || true 92 1.1 jmmv if [ -s "${diff}" ]; then 93 1.1 jmmv log "New files found" 94 1.1 jmmv diff -u "${old_list}" "${new_list}" | grep '^+\.' 95 1.1 jmmv log "Check if any files have to be cleaned up and update" \ 96 1.1 jmmv "the prepare-import.sh script accordingly" 97 1.1 jmmv else 98 1.1 jmmv log "No new files; all good!" 99 1.1 jmmv fi 100 1.1 jmmv 101 1.1 jmmv rm -f "${old_list}" "${new_list}" "${diff}" 102 1.1 jmmv } 103 1.1 jmmv 104 1.1 jmmv main() { 105 1.1 jmmv [ ${#} -eq 1 ] || err "Must provide a distfile name" 106 1.1 jmmv local distfile="${1}"; shift 107 1.1 jmmv 108 1.1 jmmv [ -f Makefile -a -f prepare-import.sh ] || \ 109 1.1 jmmv err "Must be run from the src/external/bsd/tmux subdirectory" 110 1.1 jmmv 111 1.1 jmmv local distname="$(get_distname ${distfile})" 112 1.1 jmmv 113 1.1 jmmv backup_dist 114 1.1 jmmv extract_distfile "${distfile}" "${distname}" 115 1.1 jmmv cleanup_dist 116 1.1 jmmv diff_dirs dist.old dist 117 1.3 christos cleantags dist 118 1.2 jmmv log "Don't forget to update the -D flags in usr.bin/tmux/Makefile" \ 119 1.2 jmmv "and to update the version in doc/3RDPARTY" 120 1.1 jmmv } 121 1.1 jmmv 122 1.1 jmmv main "${@}" 123