Home | History | Annotate | Line # | Download | only in tmux
      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