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