#!/bin/sh
-# (c) 2010 Quest Software, Inc. All rights reserved
-pp_revision="283"
+# (c) 2011 Quest Software, Inc. All rights reserved
+pp_revision="305"
# Copyright 2010 Quest Software, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
pp_mode_strip_altaccess () {
case "$1" in
- ??????????+)
+ ??????????[+.])
echo `echo "$1" | cut -b -10`;;
*)
echo "$1";;
pp_aix_start_services_after_install=false
pp_aix_init_services_after_install=true
+ pp_aix_sudo=sudo # AIX package tools must run as root
+
case "$pp_aix_os" in
*) pp_readlink_fn=pp_ls_readlink;; # XXX
esac
esac
echo " type = $type"
echo " class = inventory,apply,$fileset"
- set -- `/bin/ls -ld "$pp_destdir$p" 2>/dev/null`
- owner=$3 group=$4 size=$5
if test x"$m" = x"-"; then m="$defm"; fi
if test x"$o" = x"-"; then o="root"; fi
if test x"$g" = x"-"; then g="system"; fi
(cd $pp_destdir && pp_verbose /usr/sbin/backup -i -q -p -f -) \
< $pp_wrkdir/bff.list \
> $pp_wrkdir/$outbff || pp_error "backup failed"
- ${SUDO:-sudo} /usr/sbin/installp -l -d $pp_wrkdir/$outbff
+ $pp_aix_sudo /usr/sbin/installp -l -d $pp_wrkdir/$outbff
}
pp_backend_aix_cleanup () {
pp_sd_default_start=1 # config_file default start value
pp_readlink_fn=pp_ls_readlink # HPUX has no readlink
+ pp_shlib_suffix='.sl' # .so on most other platforms
pp_sd_detect_os
}
while read t m o g f p st; do
line=" file"
case "$f" in *v*) line="$line -v";; esac # FIXME for uninstall
- case $t in
- f) dm=644;;
- d) line="$line -t d"; p=${p%/}; dm=755;;
- s) line="$line -t s";;
- esac
+ case ${pp_sd_os} in
+ 10.*)
+ case $t in
+ f) dm=644;;
+ d) p=${p%/}; dm=755;;
+ esac
+ ;;
+ *)
+ case $t in
+ f) dm=644;;
+ d) line="$line -t d"; p=${p%/}; dm=755;;
+ s) line="$line -t s";;
+ esac
+ ;;
+ esac
test x"$o" = x"-" && o=root
test x"$g" = x"-" && g=sys
pp_sd_make_service () {
typeset level startpriority stoppriority startlevels stoplevels
- typeset svc svcvar
+ typeset svc svcvar symtype
svc="$1"
svcvar=`pp_makevar $svc`
+ case ${pp_sd_os} in
+ 10.*) symtype="file";;
+ *) symtype="file -t s";;
+ esac
+
# TODO: Figure out why this check is here
#-- don't do anything if the script exists
#if test -s "$pp_destdir/sbin/init.d/$svc"; then
# create the symlinks
test -z "$startlevels" || for level in $startlevels; do
- echo " file -t s" \
+ echo " ${symtype}" \
"/sbin/init.d/$svc" \
"/sbin/rc$level.d/S$startpriority$svc"
done
test -z "$stoplevels" || for level in $stoplevels; do
- echo " file -t s" \
+ echo " ${symtype}" \
"/sbin/init.d/$svc" \
"/sbin/rc$level.d/K$stoppriority$svc"
done
}
pp_backend_sd () {
- typeset psf cpt svc outfile
+ typeset psf cpt svc outfile release swp_flags
psf=$pp_wrkdir/psf
+ release="?.${pp_sd_os%.[0-9][0-9]}.*"
echo "depot" > $psf
echo "layout_version 1.0" >>$psf
copyright "$copyright"
machine_type *
os_name HP-UX
- os_release ?.11.*
+ os_release $release
os_version ?
directory /
is_locatable false
test -s $pp_wrkdir/%fixup && . $pp_wrkdir/%fixup
outfile=`pp_backend_sd_names`
- if pp_verbose ${pp_sd_sudo} /usr/sbin/swpackage \
- -s $psf \
- -x run_as_superuser=false \
- -x media_type=tape \
+ case ${pp_sd_os} in
+ 10.*)
+ swp_flags="-x target_type=tape"
+ ;;
+ *)
+ swp_flags="-x media_type=tape"
+ ;;
+ esac
+ if pp_verbose ${pp_sd_sudo} /usr/sbin/swpackage -s $psf $swp_flags \
@ $pp_wrkdir/$outfile
then
pp_verbose ${pp_sd_sudo} /usr/sbin/swlist -l file -s $pp_wrkdir/$outfile
pp_solaris_category=
pp_solaris_istates="s S 1 2 3" # run-states when install is ok
pp_solaris_rstates="s S 1 2 3" # run-states when remove is ok
+ pp_solaris_maxinst=
pp_solaris_vendor=
+ pp_solaris_pstamp=
pp_solaris_copyright=
pp_solaris_name=
pp_solaris_desc=
echo "RSTATES=$pp_solaris_rstates" >> $pkginfo
test -n "$pp_solaris_istates" &&
echo "ISTATES=$pp_solaris_istates" >> $pkginfo
+ test -n "$pp_solaris_maxinst" &&
+ echo "MAXINST=$pp_solaris_maxinst" >> $pkginfo
test -n "${pp_solaris_vendor:-$vendor}" &&
echo "VENDOR=${pp_solaris_vendor:-$vendor}" >> $pkginfo
+ test -n "$pp_solaris_pstamp" &&
+ echo "PSTAMP=$pp_solaris_pstamp" >> $pkginfo
if test -n "${pp_solaris_copyright:-$copyright}"; then
echo "${pp_solaris_copyright:-$copyright}" > $pp_wrkdir/copyright
test -n "$pp_services" &&
for _svc in $pp_services; do
pp_load_service_vars $_svc
+ pp_solaris_smf $_svc
pp_solaris_make_service $_svc
pp_solaris_install_service $_svc | pp_prepend $pp_wrkdir/postinstall
- pp_prepend $pp_wrkdir/preremove <<-.
- /etc/init.d/$_svc stop >/dev/null 2>/dev/null
-.
+ pp_solaris_remove_service $_svc | pp_prepend $pp_wrkdir/preremove
+ unset pp_svc_xml_file
done
test -n "$pp_service_groups" &&
echo "$prototype::"; cat $prototype
fi >&2
- pkgmk -a $pp_solaris_arch -d $pp_wrkdir/pkg \
- -f $prototype || { error "pkgmk failed"; return; }
- pkgtrans -s $pp_wrkdir/pkg \
+ pkgmk -d $pp_wrkdir/pkg -f $prototype \
+ || { error "pkgmk failed"; return; }
+ pkgtrans -s $pp_wrkdir/pkg \
$pp_wrkdir/`pp_backend_solaris_names` \
${pp_solaris_name:-$name} \
|| { error "pkgtrans failed"; return; }
}
pp_backend_solaris_init_svc_vars () {
- pp_solaris_smf_category=
+ _smf_category=${pp_solaris_smf_category:-application}
+ _smf_method_envvar_name=${smf_method_envvar_name:-"PP_SMF_SERVICE"}
pp_solaris_service_shell=/sbin/sh
}
pp_solaris_init_svc () {
- smf_category=${pp_solaris_smf_category:-application}
smf_version=1
smf_type=service
solaris_user=
}
pp_solaris_smf () {
- typeset f
- f=/var/svc/manifest/$smf_category/$1
+ typeset f _pp_solaris_service_script svc _pp_solaris_manpage
+
+ pp_solaris_name=${pp_solaris_name:-$name}
+ pp_solaris_manpath=${pp_solaris_manpath:-"/usr/share/man"}
+ smf_start_timeout=${smf_start_timeout:-60}
+ smf_stop_timeout=${smf_stop_timeout:-60}
+ smf_restart_timeout=${smf_restart_timeout:-60}
+
+ svc=${pp_solaris_smf_service_name:-$1}
+ _pp_solaris_service_script=${pp_solaris_service_script:-"/etc/init.d/${pp_solaris_service_script_name:-$svc}"}
+ _pp_solaris_manpage=${pp_solaris_manpage:-$pp_solaris_smf_service_name}
+
+ if [ -z $pp_svc_xml_file ]; then
+ pp_svc_xml_file="/var/svc/manifest/$_smf_category/$svc.xml"
+ echo "## Generating the smf service manifest file for $pp_svc_xml_file"
+ else
+ echo "## SMF service manifest file already defined at $pp_svc_xml_file"
+ if [ -z $pp_solaris_smf_service_name ] || [ -z $pp_solaris_smf_category ] || [ -z $pp_solaris_service_script ] || [ -z $smf_method_envvar_name ]; then
+ pp_error "All required variables are not set.\n"\
+ "When using a custom manifest file all of the following variables must be set:\n"\
+ "pp_solaris_smf_service_name, pp_solaris_smf_category, pp_solaris_service_script and smf_method_envvar_name.\n\n"\
+ "Example:\n"\
+ " \$pp_solaris_smf_category=application\n"\
+ " \$pp_solaris_smf_service_name=pp\n\n"\
+ " <service name='application/pp' type='service' version='1'>\n\n"\
+ "Example:\n"\
+ " \$pp_solaris_service_script=/etc/init.d/pp\n\n"\
+ " <exec_method type='method' name='start' exec='/etc/init.d/pp' />\n\n"\
+ "Example:\n"\
+ " \$smf_method_envvar_name=PP_SMF_SERVICE\n\n"\
+ " <method_environment>\n"\
+ " <envvar name='PP_SMF_SERVICE' value='1'/>\n"\
+ " </method_environment>\n"
+
+ return 1
+ fi
+ return 0
+ fi
+
+ f=$pp_svc_xml_file
pp_add_file_if_missing $f ||
return 0
- cat <<-. >$pp_destdir$f
- <?xml version="1.0"?>
- <!--
- $copyright
- Generated by PolyPackage $pp_version
- -->
-
- <service name='$smf_category/$1'
- type='$smf_type'
- version='$smf_version'>
-
- <single_instance />
-
- <exec_method type='method' name='start'
- exec=''
- timeout_seconds='60'>
- <method_context>
- <method_credential user='${solaris_user:-$user}' />
- </method_context>
- </exec>
-
- <exec_method type='method' name='stop'
- exec=':kill -${solaris_stop_signal:-$stop_signal}'>
- <method_context>
- <method_credential user='${solaris_user:-$user}' />
- </method_context>
- </exec>
+ _pp_solaris_smf_dependencies="
+ <dependency name='pp_local_filesystems'
+ grouping='require_all'
+ restart_on='none'
+ type='service'>
+ <service_fmri value='svc:/system/filesystem/local'/>
+ </dependency>
+
+ <dependency name='pp_single-user'
+ grouping='require_all'
+ restart_on='none'
+ type='service'>
+ <service_fmri value='svc:/milestone/single-user' />
+ </dependency>
+"
+ _pp_solaris_smf_dependencies=${pp_solaris_smf_dependencies:-$_pp_solaris_smf_dependencies}
+ cat <<-. >$pp_destdir$f
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
+<!--
+ $copyright
+ Generated by PolyPackage $pp_version
+-->
+
+ <service_bundle type='manifest' name='${pp_solaris_name}:${svc}' >
+ <service name='$_smf_category/$svc'
+ type='$smf_type'
+ version='$smf_version'>
+
+ <create_default_instance enabled='false'/>
+
+ <single_instance />
+
+ $_pp_solaris_smf_dependencies
+
+ $pp_solaris_smf_additional_dependencies
+
+ <method_context>
+ <method_credential user='${solaris_user:-$user}' />
+ <method_environment>
+ <envvar name='$_smf_method_envvar_name' value='1'/>
+ </method_environment>
+ </method_context>
+
+ <exec_method type='method' name='start'
+ exec='$_pp_solaris_service_script start'
+ timeout_seconds='$smf_start_timeout' />
+
+ <exec_method type='method' name='stop'
+ exec='$_pp_solaris_service_script stop'
+ timeout_seconds='$smf_stop_timeout' />
+
+ <exec_method type='method' name='restart'
+ exec='$_pp_solaris_service_script restart'
+ timeout_seconds='$smf_restart_timeout' />
+
+ <template>
+ <common_name>
+ <loctext xml:lang='C'>$description</loctext>
+ </common_name>
+ <documentation>
+ <manpage title='$pp_solaris_manpage' section='1' manpath='$pp_solaris_manpath'/>
+ </documentation>
+ </template>
</service>
+ </service_bundle>
.
}
.
}
-
pp_solaris_make_service () {
typeset file out _cmd svc
- svc="$1"
- file="/etc/init.d/$svc"
+ svc="${pp_solaris_smf_service_name:-$1}"
+ file=${pp_solaris_service_script:-"/etc/init.d/${pp_solaris_service_script_name:-$svc}"}
out="$pp_destdir$file"
-
#-- return if we don't need to create the init script
pp_add_file_if_missing "$file" run 755 ||
return 0
echo "#! /sbin/sh" >$out
echo "#-- This service init file generated by polypkg" >>$out
+ #-- Start SMF integration.
+ if [ -n "$pp_svc_xml_file" ] ; then
+ cat <<_EOF >>$out
+if [ -x /usr/sbin/svcadm ] && [ "x\$1" != "xstatus" ] && [ "t\$$_smf_method_envvar_name" = "t" ] ; then
+ case "\$1" in
+ start)
+ echo "starting $svc"
+ /usr/sbin/svcadm clear svc:/$_smf_category/$svc:default >/dev/null 2>&1
+ /usr/sbin/svcadm enable -s $_smf_category/$svc
+ RESULT=\$?
+ if [ "\$RESULT" -ne 0 ] ; then
+ echo "Error \$RESULT starting $svc"
+ fi
+ ;;
+ stop)
+ echo "stopping $svc"
+ /usr/sbin/svcadm disable -ts $_smf_category/$svc
+ ;;
+ restart)
+ echo "restarting $svc"
+ /usr/sbin/svcadm disable -ts $_smf_category/$svc
+ /usr/sbin/svcadm clear svc:/$_smf_category/$svc:default >/dev/null 2>&1
+ /usr/sbin/svcadm enable -s $_smf_category/$svc
+ RESULT=\$?
+ if [ "\$RESULT" -ne 0 ] ; then
+ echo "Error \$RESULT starting $svc"
+ fi
+ ;;
+ *)
+ echo "Usage: $file {start|stop|restart|status}"
+ exit 1
+ esac
+ exit 0
+fi
+_EOF
+ fi
+
#-- construct a start command that builds a pid file as needed
# and forks the daemon
_cmd="$cmd";
.
}
+pp_solaris_remove_service () {
+ typeset file svc
+
+ svc="${pp_solaris_smf_service_name:-$1}"
+ file=${pp_solaris_service_script:-"/etc/init.d/${pp_solaris_service_script_name:-$svc}"}
+
+ echo '
+'$file' stop >/dev/null 2>/dev/null
+if [ "x${PKG_INSTALL_ROOT}" = 'x' ]; then
+ if [ -x /usr/sbin/svcadm ] ; then
+ # Likely un-needed, but just in case.
+ /usr/sbin/svcadm disable -s '$svc' 2>/dev/null
+ /usr/sbin/svccfg delete '$svc' 2>/dev/null
+ fi
+fi
+ '
+}
pp_solaris_install_service () {
- typeset s k l
- s="${solaris_sysv_init_start}$1"
- k="${solaris_sysv_init_kill}$1"
+ typeset s k l file svc
+
+ svc="${pp_solaris_smf_service_name:-$1}"
+ file=${pp_solaris_service_script:-"/etc/init.d/${pp_solaris_service_script_name:-$svc}"}
+
+ s="${solaris_sysv_init_start}$svc"
+ k="${solaris_sysv_init_kill}$svc"
- echo 'case " $SERVICES " in *" '$1' "*)'
echo '
if [ "x${PKG_INSTALL_ROOT}" != "x" ]; then
if [ -x ${PKG_INSTALL_ROOT}/usr/sbin/svcadm ]; then
for state in ${solaris_sysv_init_start_states}; do
l="/etc/rc$state.d/$s"
echo "echo '$l'"
- echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=../init.d/$1 s"
+ echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=$file s"
pp_solaris_space /etc/rc$state.d 0 1
done
test -n "${solaris_sysv_init_kill_states}" &&
for state in ${solaris_sysv_init_kill_states}; do
l="/etc/rc$state.d/$k"
echo "echo '$l'"
- echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=../init.d/$1 s"
+ echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=$file s"
pp_solaris_space /etc/rc$state.d 0 1
done
echo '
fi
else
if [ -x /usr/sbin/svcadm ]; then
- echo "Registering '$1' with SMF"
- /usr/sbin/svcadm disable -s '$1' 2>/dev/null
- /usr/sbin/svccfg delete '$1' 2>/dev/null
- /usr/sbin/svccfg import '$pp_svc_xml_file' 2>/dev/null
+ echo "Registering '$svc' with SMF"
+ /usr/sbin/svcadm disable -s '$svc' 2>/dev/null
+ /usr/sbin/svccfg delete '$svc' 2>/dev/null
+ /usr/sbin/svccfg import '$pp_svc_xml_file'
else'
test -n "${solaris_sysv_init_start_states}" &&
for state in ${solaris_sysv_init_start_states}; do
l="/etc/rc$state.d/$s"
echo "echo '$l'"
- echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=../init.d/$1 s"
+ echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=$file s"
pp_solaris_space /etc/rc$state.d 0 1
done
test -n "${solaris_sysv_init_kill_states}" &&
for state in ${solaris_sysv_init_kill_states}; do
l="/etc/rc$state.d/$k"
echo "echo '$l'"
- echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=../init.d/$1 s"
+ echo "installf -c run \$PKGINST \$PKG_INSTALL_ROOT$l=$file s"
pp_solaris_space /etc/rc$state.d 0 1
done
- echo " :;; esac"
-
+ echo '
+ fi
+fi'
}
pp_platforms="$pp_platforms deb"
pp_deb_arch_std=`uname -m`
}
+pp_deb_sanitize_version() {
+ echo "$@" | tr -d -c '[:alnum:].+-:~'
+}
+
+pp_deb_version_final() {
+ if test -n "$pp_deb_version"; then
+ # Don't sanitize; assume the user is sane (hah!)
+ echo "$pp_deb_version"
+ else
+ pp_deb_sanitize_version "$version"
+ fi
+}
+
pp_deb_make_control() {
package_name=`pp_deb_cmp_full_name "$1"`
cat <<-.
Package: ${package_name}
- Version: ${pp_deb_version:-$version}-${pp_deb_release:-1}
+ Version: `pp_deb_version_final`-${pp_deb_release:-1}
Section: ${pp_deb_section:-contrib}
Priority: optional
Architecture: ${pp_deb_arch}
pp_deb_name () {
local cmp="${1:-run}"
- echo `pp_deb_cmp_full_name $cmp`"_${pp_deb_version:-$version}-${pp_deb_release:-1}_${pp_deb_arch}.deb"
+ echo `pp_deb_cmp_full_name $cmp`"_"`pp_deb_version_final`"-${pp_deb_release:-1}_${pp_deb_arch}.deb"
}
pp_backend_deb_names () {
for cmp in $pp_components
rm $pp_wrkdir/dummy.spec
#-- Ask the kernel what machine architecture is in use
- local arch=`uname -p`
- if [ "$arch" = "unknown" ]; then
- arch=`uname -m`
- fi
-
- case "$arch" in
- i?86) pp_rpm_arch_std=i386;;
- x86_64) pp_rpm_arch_std=x86_64;;
- ppc) pp_rpm_arch_std=ppc;;
- ppc64) pp_rpm_arch_std=ppc64;;
- ia64) pp_rpm_arch_std=ia64;;
- s390) pp_rpm_arch_std=s390;;
- s390x) pp_rpm_arch_std=s390x;;
- powerpc)
+ local arch
+ for arch in "`uname -m`" "`uname -p`"; do
+ case "$arch" in
+ i?86)
+ pp_rpm_arch_std=i386
+ break
+ ;;
+ x86_64|ppc|ppc64|ia64|s390|s390x)
+ pp_rpm_arch_std="$arch"
+ break
+ ;;
+ powerpc)
# Probably AIX
case "`/usr/sbin/lsattr -El proc0 -a type -F value`" in
PowerPC_POWER*) pp_rpm_arch_std=ppc64;;
*) pp_rpm_arch_std=ppc;;
esac
+ break
;;
- *) pp_rpm_arch_std=unknown;;
- esac
+ *) pp_rpm_arch_std=unknown
+ ;;
+ esac
+ done
#-- Later on, when files are processed, we use 'file' to determine
# what platform ABIs are used. This is used when pp_rpm_arch == auto
pp_rpm_distro=`awk '
/^White Box Enterprise Linux release/ { print "wbel" $6; exit; }
' /etc/whitebox-release`
+ elif test -f /etc/mandrakelinux-release; then
+ pp_rpm_distro=`awk '
+ /^Mandrakelinux release/ { print "mand" $3; exit; }
+ ' /etc/mandrake-release`
+ elif test -f /etc/mandrake-release; then
+ pp_rpm_distro=`awk '
+ /^Linux Mandrake release/ { print "mand" $4; exit; }
+ /^Mandrake Linux release/ { print "mand" $4; exit; }
+ ' /etc/mandrake-release`
elif test -f /etc/fedora-release; then
pp_rpm_distro=`awk '
/^Fedora Core release/ { print "fc" $4; exit; }
/^S[uU]SE LINUX Enterprise Server [0-9]/ { print "sles" $5; exit; }
/^SuSE SLES-[0-9]/ { print "sles" substr($2,6); exit; }
' /etc/SuSE-release`
+ elif test -f /etc/pld-release; then
+ pp_rpm_distro=`awk '
+ /^[^ ]* PLD Linux/ { print "pld" $1; exit; }
+ ' /etc/pld-release`
elif test X"`uname -s 2>/dev/null`" = X"AIX"; then
local r v
r=`uname -r`
*"executable (RISC System/6000)"*)
farch=ppc;;
*"64-bit XCOFF executable"*)
- fatch=ppc64;;
+ farch=ppc64;;
+ *" ELF "*)
+ farch=ELF;;
*)
farch=noarch;;
esac
+ # If file(1) doesn't provide enough info, try readelf(1)
+ if test "$farch" = "ELF"; then
+ fo=`readelf -h "${pp_destdir}$p" | awk '{if ($1 == "Class:") {class=$2} else if ($1 == "Machine:") {machine=$0; sub(/^ *Machine: */, "", machine)}} END {print class " " machine}' 2>/dev/null`
+ case "$fo" in
+ "ELF32 Intel 80386")
+ farch=i386;;
+ "ELF64 "*[xX]"86-64")
+ farch=x86_64;;
+ "ELF32 PowerPC")
+ farch=ppc;;
+ "ELF64 PowerPC")
+ farch=ppc64;;
+ "ELF64 IA-64")
+ farch=ia64;;
+ "ELF32 IBM S/390")
+ farch=s390;;
+ "ELF64 IBM S/390")
+ farch=s390x;;
+ *)
+ farch=noarch;;
+ esac
+ fi
pp_debug "file: $fo -> $farch"
test x"$farch" = x"noarch" || pp_add_to_list pp_rpm_arch_seen $farch
fi
pp_macos_prog_packagemaker=/Developer/usr/bin/packagemaker
pp_macos_pkg_domain=anywhere
pp_macos_pkg_extra_flags=
+ pp_macos_sudo=
+ # OS X puts the library version *before* the .dylib extension
+ pp_shlib_suffix='*.dylib'
}
pp_macos_plist () {
bomstage=$pp_wrkdir/bom_stage
while IFS=' ' read path mode ugid size cksumi linkpath; do
if test -h "$pp_destdir/$path"; then
- /bin/ln -s "$linkpath" "$bomstage/$path"
+ $pp_macos_sudo /bin/ln -s "$linkpath" "$bomstage/$path"
else
if test -d "$pp_destdir/$path"; then
- /bin/mkdir -p "$bomstage/$path"
+ $pp_macos_sudo /bin/mkdir -p "$bomstage/$path"
else
- /bin/cp "$pp_destdir/$path" "$bomstage/$path"
+ $pp_macos_sudo /bin/cp "$pp_destdir/$path" "$bomstage/$path"
fi
- /bin/chmod $mode "$bomstage/$path"
- /usr/sbin/chown `echo $ugid| tr / :` "$bomstage/$path"
+ $pp_macos_sudo /bin/chmod $mode "$bomstage/$path"
+ $pp_macos_sudo /usr/sbin/chown `echo $ugid| tr / :` "$bomstage/$path"
fi
done <"$1"
- (cd $bomstage && mkbom . $pp_wrkdir/bom_stage.bom) ||
+ (cd $bomstage && $pp_macos_sudo mkbom . $pp_wrkdir/bom_stage.bom) ||
pp_error "mkbom failed"
- mv $pp_wrkdir/bom_stage.bom "$2"
+ $pp_macos_sudo mv $pp_wrkdir/bom_stage.bom "$2"
}
pp_backend_macos () {
cat $pp_wrkdir/%files.* | awk '{ print "." $6 }' | sed '/\/$/d' | sort | /bin/pax -w -f - | gzip -9 -c > $Contents/Archive.pax.gz
)
- rm -rf $pp_wrkdir/bom_stage
+ $pp_macos_sudo rm -rf $pp_wrkdir/bom_stage
+
+ hdiutil create -fs HFS+ -srcfolder $pkgdir -volname $name ${name}-${version}.dmg
}
pp_backend_macos_cleanup () {