1 |
#!/bin/bash |
#!/bin/bash |
2 |
|
# $Id$ |
3 |
|
|
4 |
# compiles/installs .smage2 source install scripts |
# compiles/installs .smage2 source install scripts |
5 |
# needs pkgbuild_dir (mage) |
# needs pkgbuild_dir (mage) |
6 |
|
|
7 |
# SMAGE2 |
# TODO: record dynlib, gz | xz database |
|
# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 niro Exp $ |
|
8 |
|
|
|
#01.10.2004 |
|
|
# added ccache support |
|
|
# added distcc support |
|
9 |
|
|
10 |
# set default user mage.rc |
# set default user mage.rc |
11 |
: ${MAGERC="/etc/mage.rc"} |
: ${MAGERC="/etc/mage.rc"} |
68 |
source ${file} |
source ${file} |
69 |
|
|
70 |
[[ -n ${STATE} ]] && mystate="${STATE}" |
[[ -n ${STATE} ]] && mystate="${STATE}" |
71 |
|
|
72 |
|
# do not overide if local state was broken or disabled! |
73 |
|
case ${STATE} in |
74 |
|
broken) return ;; |
75 |
|
disabled) return ;; |
76 |
|
esac |
77 |
|
|
78 |
if [ -f ${SMAGESCRIPTSDIR}/distribution ] |
if [ -f ${SMAGESCRIPTSDIR}/distribution ] |
79 |
then |
then |
80 |
source ${SMAGESCRIPTSDIR}/distribution |
source ${SMAGESCRIPTSDIR}/distribution |
466 |
popd > /dev/null |
popd > /dev/null |
467 |
fi |
fi |
468 |
;; |
;; |
469 |
|
xz) |
470 |
|
IFTAR="$(basename $SRCFILE .xz)" |
471 |
|
IFTAR="${IFTAR##*.}" |
472 |
|
if [[ ${IFTAR} = tar ]] |
473 |
|
then |
474 |
|
tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.xz unpack failed." |
475 |
|
else |
476 |
|
pushd ${DEST} > /dev/null |
477 |
|
xzcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .xz) || die ".xz unpack failed." |
478 |
|
popd > /dev/null |
479 |
|
fi |
480 |
|
;; |
481 |
tbz2|mpks|mpk) |
tbz2|mpks|mpk) |
482 |
tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tbz2 unpack failed." |
tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tbz2 unpack failed." |
483 |
;; |
;; |
484 |
tgz) |
tgz) |
485 |
tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tgz unpack failed." |
tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tgz unpack failed." |
486 |
;; |
;; |
487 |
|
txz|mpkzs|mpkz) |
488 |
|
tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".txz unpack failed." |
489 |
|
;; |
490 |
rar) |
rar) |
491 |
unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST} || die ".rar unpack failed." |
unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST} || die ".rar unpack failed." |
492 |
;; |
;; |
540 |
mlibtoolize() |
mlibtoolize() |
541 |
{ |
{ |
542 |
local opts="$@" |
local opts="$@" |
543 |
[[ -z ${opts} ]] && opts="--copy --force" |
[[ -z ${opts} ]] && opts="--verbose --install --force" |
544 |
|
|
545 |
libtoolize ${opts} || die "running: mlibtoolize ${opts}" |
libtoolize ${opts} || die "running: mlibtoolize ${opts}" |
546 |
} |
} |
580 |
local stripdir="$@" |
local stripdir="$@" |
581 |
|
|
582 |
[ -z "${stripdir}" ] && stripdir=${BINDIR} |
[ -z "${stripdir}" ] && stripdir=${BINDIR} |
583 |
find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null |
find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip ${STRIP_DYN_LIB} 2> /dev/null |
584 |
} |
} |
585 |
|
|
586 |
mstripbins() |
mstripbins() |
588 |
local stripdir="$@" |
local stripdir="$@" |
589 |
|
|
590 |
[ -z "${stripdir}" ] && stripdir=${BINDIR} |
[ -z "${stripdir}" ] && stripdir=${BINDIR} |
591 |
find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null |
find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip ${STRIP_DYN_BIN} 2> /dev/null |
592 |
|
} |
593 |
|
|
594 |
|
mstripstatic() |
595 |
|
{ |
596 |
|
local stripdir="$@" |
597 |
|
|
598 |
|
[ -z "${stripdir}" ] && stripdir=${BINDIR} |
599 |
|
find ${stripdir} | xargs file | grep "ar archive" | cut -f 1 -d : | xargs strip ${STRIP_STATIC_LIB} 2> /dev/null |
600 |
} |
} |
601 |
|
|
602 |
mcompressdocs() |
mcompressdocs() |
771 |
# now build the mage file |
# now build the mage file |
772 |
> ${dest} |
> ${dest} |
773 |
|
|
|
# header |
|
|
echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 niro Exp $' >> ${dest} |
|
|
echo >> ${dest} |
|
|
|
|
774 |
# pgkname and state |
# pgkname and state |
775 |
echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest} |
echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest} |
776 |
echo "STATE=\"${STATE}\"" >> ${dest} |
echo "STATE=\"${STATE}\"" >> ${dest} |
|
echo >> ${dest} |
|
777 |
|
|
778 |
# description and homepage |
# description and homepage |
779 |
echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest} |
echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest} |
780 |
echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest} |
echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest} |
|
echo >> ${dest} |
|
781 |
|
|
782 |
# special tags and vars |
# special tags and vars |
783 |
echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest} |
echo "PKGTYPE=\"${PKGTYPE}\"" >> ${dest} |
784 |
|
|
785 |
# echo MAGE_TARGETS ## note -target is needed ! |
# echo MAGE_TARGETS ## note -target is needed ! |
786 |
echo "MAGE_TARGETS=\"${target}\"" >> ${dest} |
echo "MAGE_TARGETS=\"${target}\"" >> ${dest} |
|
echo >> ${dest} |
|
787 |
|
|
788 |
# split package base |
# split package base |
789 |
echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest} |
echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest} |
|
echo >> ${dest} |
|
790 |
|
|
791 |
# add special vars |
# add special vars |
792 |
if [ -n "${SPECIAL_VARS}" ] |
if [ -n "${SPECIAL_VARS}" ] |
797 |
# being tricky here :) |
# being tricky here :) |
798 |
echo "${i}=\"$(eval echo \$${i})\"" >> ${dest} |
echo "${i}=\"$(eval echo \$${i})\"" >> ${dest} |
799 |
done |
done |
|
echo >> ${dest} |
|
800 |
fi |
fi |
801 |
|
|
802 |
# add at least all includes |
# add at least all includes |
808 |
do |
do |
809 |
echo -n " ${i}" >> ${dest} |
echo -n " ${i}" >> ${dest} |
810 |
done |
done |
811 |
echo >> ${dest} |
# a CRLF is needed here! |
812 |
|
echo >> ${dest} |
813 |
fi |
fi |
|
echo >> ${dest} |
|
814 |
|
|
815 |
# deps and provides |
# deps and provides |
816 |
echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest} |
echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest} |
|
echo >> ${dest} |
|
817 |
echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest} |
echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest} |
|
echo >> ${dest} |
|
818 |
echo "PROVIDE=\"${PROVIDE}\"" >> ${dest} |
echo "PROVIDE=\"${PROVIDE}\"" >> ${dest} |
|
echo >> ${dest} |
|
819 |
|
|
820 |
# add special functions |
# add special functions |
821 |
if [ -n "${SPECIAL_FUNCTIONS}" ] |
if [ -n "${SPECIAL_FUNCTIONS}" ] |
825 |
do |
do |
826 |
# add to mage (quotes needed !) |
# add to mage (quotes needed !) |
827 |
typeset -f "${i}" >> ${dest} |
typeset -f "${i}" >> ${dest} |
|
echo >> ${dest} |
|
828 |
# unset to be safe (quotes needed !) |
# unset to be safe (quotes needed !) |
829 |
#unset "${i}" <-- later to get every target built |
#unset "${i}" <-- later to get every target built |
830 |
done |
done |
|
echo >> ${dest} |
|
831 |
fi |
fi |
832 |
|
|
833 |
# pre|post-install|removes |
# pre|post-install|removes |
834 |
typeset -f preinstall >> ${dest} |
typeset -f preinstall >> ${dest} |
|
echo >> ${dest} |
|
835 |
typeset -f postinstall >> ${dest} |
typeset -f postinstall >> ${dest} |
|
echo >> ${dest} |
|
836 |
typeset -f preremove >> ${dest} |
typeset -f preremove >> ${dest} |
|
echo >> ${dest} |
|
837 |
typeset -f postremove >> ${dest} |
typeset -f postremove >> ${dest} |
|
echo >> ${dest} |
|
838 |
} |
} |
839 |
|
|
840 |
regen_mage_tree() |
regen_mage_tree() |
841 |
{ |
{ |
842 |
local i |
local subpackage |
843 |
|
|
844 |
# build them only if requested |
# build them only if requested |
845 |
if [[ ${REGEN_MAGE_TREE} = true ]] |
if [[ ${REGEN_MAGE_TREE} = true ]] |
850 |
# build for each target a mage file |
# build for each target a mage file |
851 |
# run it with several targets |
# run it with several targets |
852 |
echo |
echo |
853 |
for i in ${MAGE_TARGETS} |
for subpackage in ${MAGE_TARGETS} |
854 |
do |
do |
855 |
build_mage_script --target "${i}" |
build_mage_script --target "${subpackage}" |
856 |
done |
done |
857 |
echo |
echo |
858 |
|
|
865 |
# build for each subpackage a mage file |
# build for each subpackage a mage file |
866 |
# run it with several targets |
# run it with several targets |
867 |
echo |
echo |
868 |
for i in ${SPLIT_PACKAGES} |
for subpackage in ${SPLIT_PACKAGES} |
869 |
do |
do |
870 |
# get the right variables for the split |
# get the right variables for the split |
871 |
export PNAME="${i}" |
export PNAME="${subpackage}" |
872 |
split_info_${i} |
split_info_${subpackage} |
873 |
|
# get the preinstall etc |
874 |
|
split_export_inherits ${subpackage} |
875 |
build_mage_script --split-pkg-base "${split_pkg_base}" |
build_mage_script --split-pkg-base "${split_pkg_base}" |
876 |
|
# delete split preinstall etc |
877 |
|
split_delete_inherits ${subpackage} |
878 |
# restore smage environment |
# restore smage environment |
879 |
split_restore_variables |
split_restore_variables |
880 |
done |
done |
1060 |
unset -f SAVED_postremove |
unset -f SAVED_postremove |
1061 |
} |
} |
1062 |
|
|
1063 |
|
split_export_inherits() |
1064 |
|
{ |
1065 |
|
local subpackage="$1" |
1066 |
|
local func |
1067 |
|
local newfunc |
1068 |
|
|
1069 |
|
for func in preinstall postinstall preremove postremove |
1070 |
|
do |
1071 |
|
if [[ ! -z $(typeset -f ${func}_${subpackage}) ]] |
1072 |
|
then |
1073 |
|
newfunc=$(typeset -f ${func}_${subpackage}) |
1074 |
|
newfunc="${newfunc/_${subpackage} (/ (}" |
1075 |
|
eval "${newfunc}" |
1076 |
|
fi |
1077 |
|
done |
1078 |
|
} |
1079 |
|
|
1080 |
|
split_delete_inherits() |
1081 |
|
{ |
1082 |
|
local subpackage="$1" |
1083 |
|
local func |
1084 |
|
|
1085 |
|
for func in preinstall postinstall preremove postremove |
1086 |
|
do |
1087 |
|
if [[ ! -z $(typeset -f ${func}_${subpackage}) ]] |
1088 |
|
then |
1089 |
|
unset -f ${func} |
1090 |
|
fi |
1091 |
|
done |
1092 |
|
} |
1093 |
|
|
1094 |
export_inherits() |
export_inherits() |
1095 |
{ |
{ |
1096 |
local include="$1" |
local include="$1" |
1600 |
do |
do |
1601 |
echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}" |
echo -e "${COLBLUE}===${COLGREEN} stripping binaries for '${subpackage}' ...${COLDEFAULT}" |
1602 |
mstripbins ${BINDIR}_${subpackage} |
mstripbins ${BINDIR}_${subpackage} |
1603 |
echo -e "${COLBLUE}===${COLGREEN} stripping libraries for '${subpackage}' ...${COLDEFAULT}" |
echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries for '${subpackage}' ...${COLDEFAULT}" |
1604 |
mstriplibs ${BINDIR}_${subpackage} |
mstriplibs ${BINDIR}_${subpackage} |
1605 |
|
echo -e "${COLBLUE}===${COLGREEN} stripping static libraries for '${subpackage}' ...${COLDEFAULT}" |
1606 |
|
mstripstatic ${BINDIR}_${subpackage} |
1607 |
done |
done |
1608 |
else |
else |
1609 |
echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}" |
echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}" |
1610 |
mstripbins ${BINDIR} |
mstripbins ${BINDIR} |
1611 |
echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}" |
echo -e "${COLBLUE}===${COLGREEN} stripping dynamic libraries ...${COLDEFAULT}" |
1612 |
mstriplibs ${BINDIR} |
mstriplibs ${BINDIR} |
1613 |
|
echo -e "${COLBLUE}===${COLGREEN} stripping static libraries ...${COLDEFAULT}" |
1614 |
|
mstripstatic ${BINDIR} |
1615 |
fi |
fi |
1616 |
;; |
;; |
1617 |
esac |
esac |