#!/usr/bin/env bash ######################################################################## # Convert PKGBUILD of Arch Linux to Pkgfile of CRUX # Usage: ./PKGBUILD2Pkgfile # # Author: Colin Zheng ######################################################################## ######################################################################## # Change this line if necessary MAINTAINER='your name ' ######################################################################## ######################################################################## # Constants PKGBUILD=PKGBUILD CPkgfile=Pkgfile CMD5file=.md5sum Cpre_install="pre-install" Cpost_install="post-install" Cpre_remove="pre-remove" Cpost_remove="post-remove" tags=('pkgname' 'pkgver' 'pkgrel' 'source' \ '$startdir/pkg' '${startdir}/pkg' \ '$startdir/src' '${startdir}/src') Ctags=('name' 'version' 'release' 'source' '$PKG' '$PKG' '' '') APP=`basename "$0"` ######################################################################## set -o errexit msg_unimplemented() { echo "$APP: WARNING: $1 unsupported in Pkgfile"; } msg_file_written() { echo "$APP: wrote $1"; } tmpfile=`mktemp` trap "rm -f $tmpfile; echo \"$APP: ERROR\"; exit" INT TERM EXIT cp "$PKGBUILD" $tmpfile for ((i=0; i<${#tags[@]}; ++i)); do sed -ie "s|${tags[$i]}|${Ctags[$i]}|g" $tmpfile done . $tmpfile; rm $tmpfile [ "$makedepends" ] && msg_unimplemented 'option makedepends' cat > "$CPkgfile" <> "$CPkgfile" msg_file_written "$CPkgfile" # Get install scripts if [ "$install" ]; then . "$install" [ "$pre_install" ] && ( declare -f pre_install > "$Cpre_install" msg_file_written $Cpre_install ) [ "$post_install" ] && ( declare -f post_install > "$Cpost_install" msg_file_written $Cpost_install ) [ "$pre_remove" ] && ( declare -f d pre_remove > "$Cpre_remove" msg_file_written $Cpre_remove ) [ "$post_remove" ] && ( declare -f post_remove > "$Cpost_remove" msg_file_written $Cpost_remove ) [ "$pre_upgrade" ] && msg_unimplemented 'pre_upgrade script' [ "$post_upgrade" ] && msg_unimplemented 'post_upgrade script' fi # Get MD5 sums if [ "$md5sums" ]; then true > "$CMD5file" for ((i=0; i<${#source[@]}; ++i)); do echo ${md5sums[$i]} ${source[$i]} >> "$CMD5file" done msg_file_written "$CMD5file" fi trap - INT TERM EXIT exit 0