xref: /minix3/external/bsd/tmux/prepare-import.sh (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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