1#!/bin/sh 2# $FreeBSD$ 3# 4# Unpack an ACPI CA drop and restructure it to fit the FreeBSD layout 5# 6 7if [ ! $# -eq 1 ]; then 8 echo "usage: $0 acpica_archive" 9 exit 10fi 11 12src=$1 13wrk=./_acpi_ca_unpack 14dst=./acpi_ca_destination 15 16# files that should keep their full directory path 17fulldirs="common compiler" 18# files to remove 19stripdirs="generate acpisrc" 20stripfiles="16bit.h Makefile README a16find.c a16utils.asm \ 21 a16utils.lst a16utils.obj abcompare.c abmain.c acdos16.h \ 22 acintel.h aclinux.h acmsvc.h acnetbsd.h acpibin.h acwin.h \ 23 acwin64.h adisasm.h aemain.c osunixdir.c readme.txt" 24# include files to canonify 25src_headers="acapps.h acconfig.h acdebug.h acdisasm.h acdispat.h \ 26 acenv.h acevents.h acexcep.h acfreebsd.h acgcc.h acglobal.h \ 27 achware.h acinterp.h aclocal.h acmacros.h acnames.h acnamesp.h \ 28 acobject.h acopcode.h acoutput.h acparser.h acpi.h acpiosxf.h \ 29 acpixf.h acresrc.h acstruct.h actables.h actbl.h actbl1.h \ 30 actbl2.h actypes.h acutils.h aecommon.h amlcode.h amlresrc.h \ 31 mlresrc.h" 32comp_headers="aslcompiler.h asldefine.h aslglobal.h asltypes.h" 33 34# files to update paths in 35src_update_files="acpi.h acpiosxf.h" 36 37# pre-clean 38echo pre-clean 39rm -rf ${wrk} 40rm -rf ${dst} 41mkdir -p ${wrk} 42mkdir -p ${dst} 43 44# unpack 45echo unpack 46tar -x -z -f ${src} -C ${wrk} 47 48# strip files 49echo strip 50for i in ${stripdirs}; do 51 find ${wrk} -name ${i} -type d | xargs rm -r 52done 53for i in ${stripfiles}; do 54 find ${wrk} -name ${i} -type f -delete 55done 56 57echo copying full dirs 58for i in ${fulldirs}; do 59 find ${wrk} -name ${i} -type d | xargs -J % mv % ${dst} 60done 61 62# move files to destination 63echo copying flat dirs 64find ${wrk} -type f | xargs -J % mv % ${dst} 65mv ${dst}/changes.txt ${dst}/CHANGES.txt 66 67# update src/headers for appropriate paths 68echo updating paths 69for i in ${src_update_files}; do 70 i=${dst}/$i 71 sed -e 's/platform\///' $i > $i.new && mv $i.new $i 72done 73 74# canonify include paths 75for H in ${src_headers}; do 76 find ${dst} -name "*.[chy]" -type f | \ 77 xargs sed -i "" -e "s|[\"<]$H[\">]|\<contrib/dev/acpica/$H\>|g" 78done 79for H in ${comp_headers}; do 80 find ${dst}/compiler -name "*.[chly]" -type f | \ 81 xargs sed -i "" -e "s|[\"<]$H[\">]|\<contrib/dev/acpica/compiler/$H\>|g" 82done 83 84# post-clean 85echo post-clean 86rm -rf ${wrk} 87 88# assist the developer in generating a diff 89echo "Directories you may want to 'cvs diff':" 90echo " src/sys/contrib/dev/acpica src/sys/dev/acpica \\" 91echo " src/sys/amd64/acpica src/sys/i386/acpica src/sys/ia64/acpica \\" 92echo " src/sys/amd64/include src/sys/i386/include src/sys/ia64/include \\" 93echo " src/sys/boot src/sys/conf src/sys/modules/acpi src/usr.sbin/acpi" 94