Fix permissions for installed OS X files and directories.

Add a cli-preinstall script that creates missing parts of the
installation path and sets their permissions. Simply copy
"utility-launcher" to "wireshark" instead of renaming it at install
time. Explicitly set its ownership and permissions. Pretty-print some of
the PackageMaker XML files via `xmllint --format --recover`.

svn path=/trunk/; revision=53281
This commit is contained in:
Gerald Combs 2013-11-12 20:38:58 +00:00
parent 4525c64797
commit 30bdf66b1f
5 changed files with 102 additions and 5 deletions

View File

@ -15,9 +15,8 @@ BINARIES="
cd "$CLI_PATH"
rm -f ./wireshark
mv utility-launcher wireshark
chmod 755 wireshark
chown root:wheel wireshark
for BIN in $BINARIES ; do
rm -f ./"$BIN"

View File

@ -0,0 +1,22 @@
#!/bin/sh
CLI_PATH="$2"
# Create any missing directories with mode 755, owned by root:wheel.
# Don't blindly clobber anything that's already there.
function build_path()
{
echo "Checking $1"
if [ -d "$1" ] ; then
return ""
else
TRIMMED=`dirname "$1"`
if [ ! -d "$TRIMMED" ] ; then
build_path "$TRIMMED"
fi
install -v -o root -g wheel -m 0755 -d "$1"
fi
}
build_path "$2"

View File

@ -1 +1,39 @@
<pkgref spec="1.12" uuid="0B0ABFF7-3A3D-4F37-B998-DC99734E0EFC"><config><identifier>org.wireshark.Wireshark.pkg</identifier><version>0.0.0.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true" includeRoot="true">Wireshark.app</installFrom><installTo>/Applications</installTo><flags><followSymbolicLinks/><allowRevert/><mod>allowRevert</mod></flags><packageStore type="internal"></packageStore><mod>scripts.scriptsDirectoryPath.isAbsoluteType</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>installTo</mod><mod>scripts.postinstall.path</mod><mod>installFrom.isRelativeType</mod><mod>includeRoot</mod><mod>scripts.postinstall.isRelativeType</mod><mod>version</mod><mod>parent</mod><mod>scripts.scriptsDirectoryPath.path</mod><mod>identifier</mod><mod>relocatable</mod><mod>requireAuthorization</mod><mod>extraFiles</mod><mod>postInstall</mod></config><scripts><postinstall relative="true" mod="true">Scripts/wireshark-postinstall.sh</postinstall><scripts-dir relative="true" mod="true">Scripts</scripts-dir><scripts-element/></scripts><extra-files/></pkgref>
<?xml version="1.0"?>
<pkgref spec="1.12" uuid="0B0ABFF7-3A3D-4F37-B998-DC99734E0EFC">
<config>
<identifier>org.wireshark.Wireshark.app.pkg</identifier>
<version>0.0.0.0</version>
<description/>
<post-install type="none"/>
<requireAuthorization/>
<installFrom relative="true" mod="true" includeRoot="true">Wireshark.app</installFrom>
<installTo>/Applications</installTo>
<flags>
<followSymbolicLinks/>
<allowRevert/>
<mod>allowRevert</mod>
</flags>
<packageStore type="internal"/>
<mod>scripts.scriptsDirectoryPath.isAbsoluteType</mod>
<mod>scripts.scriptsDirectoryPath.isRelativeType</mod>
<mod>installTo</mod>
<mod>scripts.postinstall.path</mod>
<mod>installFrom.isRelativeType</mod>
<mod>includeRoot</mod>
<mod>scripts.postinstall.isRelativeType</mod>
<mod>version</mod>
<mod>parent</mod>
<mod>scripts.scriptsDirectoryPath.path</mod>
<mod>identifier</mod>
<mod>relocatable</mod>
<mod>requireAuthorization</mod>
<mod>extraFiles</mod>
<mod>postInstall</mod>
</config>
<scripts>
<postinstall relative="true" mod="true">Scripts/wireshark-postinstall.sh</postinstall>
<scripts-dir relative="true" mod="true">Scripts</scripts-dir>
<scripts-element/>
</scripts>
<extra-files/>
</pkgref>

View File

@ -1 +1,37 @@
<pkgref spec="1.12" uuid="F7F04C41-A94E-4CCA-A8F5-8B774B8D9151"><config><identifier>org.wireshark.cli.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">utility-launcher</installFrom><installTo mod="true" relocatable="true">/usr/local/bin</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>relocatable</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>identifier</mod><mod>parent</mod><mod>installTo.path</mod><mod>installFrom.isRelativeType</mod><mod>scripts.postinstall.isRelativeType</mod></config><scripts><postinstall relative="true" mod="true">Scripts/cli-postinstall.sh</postinstall><scripts-dir relative="true" mod="true">Scripts</scripts-dir></scripts><contents><file-list>03utility-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents></pkgref>
<?xml version="1.0"?>
<pkgref spec="1.12" uuid="F7F04C41-A94E-4CCA-A8F5-8B774B8D9151">
<config>
<identifier>org.wireshark.cli.pkg</identifier>
<version>1.0</version>
<description/>
<post-install type="none"/>
<requireAuthorization/>
<installFrom relative="true">utility-launcher</installFrom>
<installTo mod="true" relocatable="true">/usr/local/bin</installTo>
<flags>
<followSymbolicLinks/>
</flags>
<packageStore type="internal"/>
<mod>installTo</mod>
<mod>relocatable</mod>
<mod>scripts.scriptsDirectoryPath.isRelativeType</mod>
<mod>identifier</mod>
<mod>parent</mod>
<mod>installTo.path</mod>
<mod>installFrom.isRelativeType</mod>
<mod>scripts.postinstall.isRelativeType</mod>
</config>
<scripts>
<preinstall relative="true" mod="true">Scripts/cli-preinstall.sh</preinstall>
<postinstall relative="true" mod="true">Scripts/cli-postinstall.sh</postinstall>
<scripts-dir relative="true" mod="true">Scripts</scripts-dir>
</scripts>
<contents>
<file-list>03utility-contents.xml</file-list>
<filter>/CVS$</filter>
<filter>/\.svn$</filter>
<filter>/\.cvsignore$</filter>
<filter>/\.cvspass$</filter>
<filter>/\.DS_Store$</filter>
</contents>
</pkgref>

View File

@ -250,9 +250,11 @@ fi
#----------------------------------------------------------
echo -e "\nFilling app bundle and utility directory...\n"
# CLI wrapper
cp -v utility-launcher "$cli_dir/wireshark"
# Wireshark executables
if [ "$ui_toolkit" = "gtk" ] ; then
cp -v utility-launcher "$cli_dir/$binary"
for binary in $binary_list wireshark ; do
# Copy the binary to its destination
dest_path="$pkgbin/$binary-bin"