# pet-specific packaging functions make_pet_pkg() { cd "$PKG_BUILDS_DIR" # if autoscripting is on we may have a new.doinst.sh. Get rid of it, if so rm -f $CWD/new.doinst.sh if [[ -d "$PKG_BUILDS_DIR"/$DEVEL_PKG_NAME ]] ; then rm -f "$DEVEL_PACKAGE" ( cd "$PKG_BUILDS_DIR" ; mini_create_pet $DEVEL_PKG_NAME ) fi if [[ -d "$PKG_BUILDS_DIR"/$I18N_PKG_NAME ]] ; then rm -f "$I18N_PACKAGE" ( cd "$PKG_BUILDS_DIR" ; mini_create_pet $I18N_PKG_NAME ) fi if [[ -d "$PKG_BUILDS_DIR"/$SOLIBS_PKG_NAME ]] ; then rm -f "$SOLIBS_PACKAGE" ( cd "$PKG_BUILDS_DIR" ; mini_create_pet $SOLIBS_PKG_NAME ) fi if [[ -d "$PKG_BUILDS_DIR"/$DOCS_PKG_NAME ]] ; then rm -f "$DOCS_PACKAGE" ( cd "$PKG_BUILDS_DIR" ; mini_create_pet $DOCS_PKG_NAME ) fi # now build the main package # take care of doinst.sh and pet.specs files if [[ -f "$CWD"/pinstall.sh ]] ; then cp "$CWD"/pinstall.sh $PKG_DIR elif [[ -f "$PKG_DIR"/install/doinst.sh ]] ; then if [[ "$DOCLIST" != "MINIMAL" ]] ; then mkdir -p "$DOC_DIR" cp "$PKG_DIR"/install/doinst.sh "$DOC_DIR"/pinstall.sh chmod 644 "$DOC_DIR"/pinstall.sh fi cp "$PKG_DIR"/install/doinst.sh "$PKG_DIR"/pinstall.sh #if [[ $AUTO_SCRIPT ]] && [[ ! -f "$CWD"/new.doinst.sh ]] ; then if [[ $AUTO_SCRIPT ]] && [[ -f "$PKG_DIR"/install/doinst.sh ]] ; then cp "$PKG_DIR"/install/doinst.sh "$CWD"/pinstall.sh chmod 644 "$CWD"/pinstall.sh fi fi if [[ -f "$PKG_DIR"/install/$PKG_DESC ]] && [[ "$DOCLIST" != "MINIMAL" ]] ; then mkdir -p "$DOC_DIR" #cp "$PKG_DIR"/install/$PKG_DESC "$DOC_DIR"/$NAME.desc pkg_desc_to_text "$PKG_DIR"/install/$PKG_DESC >> "$DOC_DIR"/$NAME.desc chmod 644 "$DOC_DIR"/$NAME.desc fi if [[ -f "$PKG_DIR"/install/$PKG_DESC ]] ; then SUMMARY="$(grep -m 1 $NAME: $PKG_DIR/install/$PKG_DESC |cut -f 3- -d ' ')" fi rm -rf "$PKG_DIR"/install ( cd "$PKG_BUILDS_DIR" ; mini_create_pet $PKG_DIR_NAME ) if [[ -f "$PKG_BUILDS_DIR"/$PKG_DIR_NAME.pet ]] ; then echo $BLUE"Package Creation - "$GREEN"Successful!"$NORMAL" Package location:" echo "$PKG_BUILDS_DIR"/$PKG_DIR_NAME.pet else FAILED="PACKAGE CREATION in: $FUNCNAME" fi } mini_create_pet() { THIS_PET="$1" cd "$PKG_BUILDS_DIR" rm -f $THIS_PET.pet # tag the NAME unless we are the main package case $THIS_PET in $DEVEL_PKG_NAME) TAG="-devel" SUMMARY="Development files for $NAME" ;; $I18N_PKG_NAME) TAG="-i18n" SUMMARY="Language files for $NAME" ;; $SOLIBS_PKG_NAME) TAG="-solibs" SUMMARY="Runtime shared libraries for $NAME" ;; $DOCS_PKG_NAME) TAG="-docs" SUMMARY="Documents for $NAME" ;; $PKG_DIR_NAME) TAG="" ; [[ -z $SUMMARY ]] && SUMMARY="No summary text for $NAME" ;; esac echo -n $BLUE"Creating package: "$NORMAL"'${THIS_PET}.pet' - " if [[ "$PET2" = "1" ]] ; then # The output from 'du' is wierd to deal with so get just one line DISK_USAGE_OUTPUT=$(du -sk --apparent-size $THIS_PET) # and read it char-by-char until we reach a non-digit character offset=0 INSTALLED_SIZE= while [[ ${DISK_USAGE_OUTPUT:$offset:1} = [0-9] ]] ; do CHAR=${DISK_USAGE_OUTPUT:$offset:1} INSTALLED_SIZE=${INSTALLED_SIZE}${CHAR} (( offset++ )) done if [[ $THIS_PET = $PKG_DIR_NAME ]] && [[ -f "$CWD"/pet.specs ]] ; then cp "$CWD"/pet.specs $THIS_PET/pet.specs else [[ -f /etc/DISTRO_SPECS ]] && . /etc/DISTRO_SPECS [[ -f /root/.packages/DISTRO_PKGS_SPECS ]] && . /root/.packages/DISTRO_PKGS_SPECS [[ -f /root/.packages/DISTRO_PET_REPOS ]] && . /root/.packages/DISTRO_PET_REPOS [[ "${DISTRO_COMPAT_VERSION}" != "" ]] && DB_PATH="pet_packages-${DISTRO_COMPAT_VERSION}" DATABASE_ENTRY="${NAME}${TAG}-${VERSION}|${NAME}${TAG}|${VERSION}|${BUILD}|BuildingBlock|${INSTALLED_SIZE}K|${DB_PATH}|${NAME}${TAG}-${VERSION}-${BUILD}.pet|unknown|${SUMMARY}|${DISTRO_BINARY_COMPAT}|${DISTRO_COMPAT_VERSION}||" echo "$DATABASE_ENTRY" > $THIS_PET/pet.specs if [[ $AUTO_SCRIPT ]] && [[ $THIS_PET = $SHORT_NAME ]] && [[ ! -f "$CWD"/pet.specs ]] ; then echo "$DATABASE_ENTRY" > "$CWD"/pet.specs fi fi else if [[ -f "$CWD"/${NAME}${TAG}.pet.specs ]] ; then cp "$CWD"/${NAME}${TAG}.pet.specs $THIS_PET/${NAME}${TAG}.pet.specs else [[ ! $PETREGISTER ]] && PETREGISTER="yes" # unless we are the main package, leave PETMENUDSCR and PETOFFICIALDEPS blank case $THIS_PET in $DEVEL_PKG_NAME|$I18N_PKG_NAME|$SOLIBS_PKG_NAME|$DOCS_PKG_NAME) PETMENUDESCR="" PETOFFICIALDEPS="" ;; esac echo "PETMENUDESCR='$PETMENUDESCR'" > $THIS_PET/${NAME}${TAG}.pet.specs echo "PETOFFICIALDEPS='$PETOFFICIALDEPS'" >> $THIS_PET/${NAME}${TAG}.pet.specs echo "PETREGISTER='$PETREGISTER'" >> $THIS_PET/${NAME}${TAG}.pet.specs if [[ $AUTO_SCRIPT ]] && [[ ! -f "$CWD"/${NAME}${TAG}.pet.specs ]] ; then cp $THIS_PET/${NAME}${TAG}.pet.specs "$CWD"/${NAME}${TAG}.pet.specs fi fi fi # duplicate any links if this is the solibs package if [[ $THIS_PET = $SOLIBS_PKG_NAME ]] && [[ -f "$PKG_DIR"/install/doinst.sh ]] ; then (cd $THIS_PET duplicate_pkg_dir_links ( make_doinst_links "$PKG_BUILDS_DIR"/$SOLIBS_PKG_NAME ) 1> /dev/null if [[ -e "$CWD"/doinst.links ]] ; then cat "$CWD"/doinst.links >> pinstall.sh rm -f "$CWD"/doinst.links find * -type l -exec rm -f {} \; fi ) fi #rm -f $CWD/new.doinst.sh # create the package if [[ $QUIET = "YES" ]] ; then if [[ $EUID -ne 0 ]] ; then tar --owner=root --group=root -cf "$THIS_PET".tar "$THIS_PET" &> /dev/null else tar -cf "$THIS_PET".tar "$THIS_PET" &> /dev/null fi else if [[ $EUID -ne 0 ]] ; then tar --owner=root --group=root -cf "$THIS_PET".tar "$THIS_PET" else tar -cf "$THIS_PET".tar "$THIS_PET" fi fi gzip "$THIS_PET".tar &> /dev/null if [[ $? -eq 0 ]] ; then # add the md5sum MD5SUM="$(md5sum $THIS_PET.tar.gz | cut -f 1 -d ' ')" echo -n "$MD5SUM" >> "$THIS_PET".tar.gz mv "$THIS_PET".tar.gz "$THIS_PET".pet echo $GREEN"Done"$NORMAL ! [[ $DEBUG ]] && [[ $THIS_PET != $PKG_DIR_NAME ]] && (cd "$PKG_BUILDS_DIR" && rm -rf $THIS_PET ) else echo $RED"FAILED! "$NORMAL fi }