diff options
author | Gerald Combs <gerald@wireshark.org> | 2013-10-21 20:06:14 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2013-10-21 20:06:14 +0000 |
commit | 2dd3a651e63930ec4a034823d7f5959d0757964f (patch) | |
tree | a0125068eae57542ec342a27993b65b3c7eba324 /packaging | |
parent | c8573b98972a9c367b900a1b864f8d3f524b57ef (diff) |
Code signing updates.
Sign executables, libraries, frameworks, plugins, and bundles as per the
Code Signing Guide. Check our work with spctl. Use "bundle" to
differentiate what we're doing with the package script.
svn path=/trunk/; revision=52746
Diffstat (limited to 'packaging')
-rwxr-xr-x | packaging/macosx/osx-app.sh | 83 | ||||
-rwxr-xr-x | packaging/macosx/osx-dmg.sh.in | 3 |
2 files changed, 54 insertions, 32 deletions
diff --git a/packaging/macosx/osx-app.sh b/packaging/macosx/osx-app.sh index 69bfbc34d8..71626af506 100755 --- a/packaging/macosx/osx-app.sh +++ b/packaging/macosx/osx-app.sh @@ -5,7 +5,7 @@ # USAGE # osx-app [-s] [-l /path/to/libraries] -bp /path/to/wireshark/bin -p /path/to/Info.plist # -# This script attempts to build an Wireshark.app package for OS X, resolving +# This script attempts to build an Wireshark.app bundle for OS X, resolving # dynamic libraries, etc. # It strips the executable and libraries if '-s' is given. # It adds python modules if the '-py option' is given @@ -29,7 +29,7 @@ # NB: # This originally came from Inkscape; Inkscape's configure script has an # "--enable-osxapp", which causes some of Inkscape's installation data -# files to have OS X-ish paths under Contents/Resources of the package +# files to have OS X-ish paths under Contents/Resources of the bundle # or under /Library/Application Support. We don't have such an option; # we just put them in "bin", "etc", "lib", and "share" directories # under Contents/Resources, rather than in the "bin", "etc", "lib", @@ -62,6 +62,7 @@ binary_list=" text2pcap tshark " +cs_binary_list= # Location for libraries (macosx-setup.sh defaults to whatever the # various support libraries use as their standard installation location, @@ -185,14 +186,14 @@ then XCODEFLAGS="$XCODEFLAGS SDKROOT=$sdkroot" fi -# Package always has the same name. Version information is stored in +# Bundle always has the same name. Version information is stored in # the Info.plist file which is filled in by the configure script. -package="Wireshark.app" +bundle="Wireshark.app" -# Remove a previously existing package if necessary -if [ -d $package ]; then - echo "Removing previous Wireshark.app" - rm -Rf $package +# Remove a previously existing bundle if necessary +if [ -d $bundle ]; then + echo "Removing previous $bundle" + rm -Rf $bundle fi # Remove a previously existing utility directory if necessary @@ -207,16 +208,16 @@ resdir=`pwd` # Prepare Package #---------------------------------------------------------- -pkgexec="$package/Contents/MacOS" -pkgres="$package/Contents/Resources" +pkgexec="$bundle/Contents/MacOS" +pkgres="$bundle/Contents/Resources" pkgbin="$pkgexec" if [ "$ui_toolkit" = "gtk" ] ; then pkgbin="$pkgres/bin" fi # Should pkglib be Contents/Frameworks instead? #pkglib="$pkgres/lib" -pkglib="$package/Contents/Frameworks" -pkgqtplugin="$package/Contents/PlugIns" +pkglib="$bundle/Contents/Frameworks" +pkgqtplugin="$bundle/Contents/PlugIns" pkgplugin="$pkglib/wireshark/plugins" pkgpython="$pkglib/wireshark/python" @@ -255,6 +256,7 @@ if [ "$ui_toolkit" = "gtk" ] ; then for binary in $binary_list wireshark ; do # Copy the binary to its destination dest_path="$pkgbin/$binary-bin" + cs_binary_list="$cs_binary_list $dest_path" cp -v "$binary_path/$binary" "$dest_path" # TODO Add a "$verbose" variable and command line switch, which sets wether these commands are verbose or not @@ -267,6 +269,7 @@ elif [ "$ui_toolkit" = "qt" ] ; then for binary in $binary_list ; do # Copy the binary to its destination cp -v "$binary_path/$binary" "$pkgexec" + cs_binary_list="$cs_binary_list $pkgexec/$binary" done fi @@ -291,7 +294,7 @@ find "$binary_path/../lib/wireshark/plugins" -type f \ find "$binary_path/../lib/wireshark/python" -type f \ -exec cp -fv "{}" "$pkgpython/" \; -cp "$plist" "$package/Contents/Info.plist" +cp "$plist" "$bundle/Contents/Info.plist" # Icons and the rest of the script framework res_list=" @@ -313,16 +316,16 @@ if [ "$ui_toolkit" = "gtk" ] ; then fi for rl_entry in $res_list ; do - rsync -av "$resdir"/Resources/$rl_entry "$package"/Contents/Resources/ + rsync -av "$resdir"/Resources/$rl_entry "$bundle"/Contents/Resources/ done # PkgInfo must match bundle type and creator code from Info.plist -echo "APPLWshk" > $package/Contents/PkgInfo +echo "APPLWshk" > $bundle/Contents/PkgInfo if [ "$ui_toolkit" = "gtk" ] ; then # Pull in extra requirements for Pango and GTK - pkgetc="$package/Contents/Resources/etc" + pkgetc="$bundle/Contents/Resources/etc" mkdir -p $pkgetc/pango cp $LIBPREFIX/etc/pango/pangox.aliases $pkgetc/pango/ # Need to adjust path and quote in case of spaces in path. @@ -347,8 +350,8 @@ END_PANGO # existence here. # # The file is ultimately copied to the user's home directory, with - # the pathnames adjusted to refer to the installed package, so we - # always put it in the same location in the installed package, + # the pathnames adjusted to refer to the installed bundle, so we + # always put it in the same location in the installed bundle, # regardless of where it lives in the machine on which it's built. # if [ -e $LIBPREFIX/etc/gtk-2.0/gdk-pixbuf.loaders ] @@ -375,9 +378,9 @@ END_PANGO # put if gdk-pixbuf and GTK+ are separated. # # The file is ultimately copied to the user's home directory, - # with the pathnames adjusted to refer to the installed package, + # with the pathnames adjusted to refer to the installed bundle, # so we always put it in the same location in the installed - # package, regardless of where it lives in the machine on which + # bundle, regardless of where it lives in the machine on which # it's built. # if [ -e $LIBPREFIX/lib/gdk-pixbuf-2.0/$gdk_pixbuf_version/loaders.cache ] @@ -543,7 +546,7 @@ rpathify_dir () { rpathify_files () { # - # Fix package deps + # Fix bundle deps # rpathify_dir "$pkglib" "*.dylib" if [ "$ui_toolkit" = "gtk" ] ; then @@ -559,7 +562,7 @@ rpathify_files () { } if [ "$ui_toolkit" = "qt" ] ; then - macdeployqt "$package" -verbose=2 + macdeployqt "$bundle" -verbose=2 fi PATHLENGTH=`echo $LIBPREFIX | wc -c` @@ -572,24 +575,40 @@ else echo "Could not rewrite dylib paths for bundled libraries. This requires" >&2 echo "the support libraries to be installed in a PREFIX of at least 6 characters in length." >&2 echo "" >&2 - echo "The package will still work if the following line is uncommented in" >&2 + echo "The bundle will still work if the following line is uncommented in" >&2 echo "Wireshark.app/Contents/Resources/bin/{various scripts}:" >&2 echo ' export DYLD_LIBRARY_PATH="$TOP/lib"' >&2 exit 1 fi +codesign_file () { + codesign --sign "$CODE_SIGN_IDENTITY" --verbose "$1" + codesign --verify --verbose "$1" || exit 1 + spctl --assess --type execute "$1" || exit 1 +} + if [ -n "$CODE_SIGN_IDENTITY" ] ; then - echo -n "Signing executables:" - for file in $pkgbin/* ; do - echo -n " $file" - codesign --sign "$CODE_SIGN_IDENTITY" --verbose "$file" - codesign --verify --verbose "$file" || exit 1 + echo "Signing executables" + for binary in $cs_binary_list ; do + codesign_file "$binary" + done + echo "Signing frameworks" + for framework in $pkglib/*.framework/Versions/*/* ; do + codesign_file "$framework" done - echo - echo "Signing $package" - codesign --sign "$CODE_SIGN_IDENTITY" --verbose "$package" - codesign --verify --verbose "$package" || exit 1 + echo "Signing libraries" + for library in $pkglib/*.dylib ; do + codesign_file "$library" + done + echo "Signing plugins" + for plugin in $pkgplugin/*.so ; do + codesign_file "$plugin" + done + echo "Signing $bundle" + codesign_file "$bundle" +else + echo "Code signing not performed (no identity)" fi exit 0 diff --git a/packaging/macosx/osx-dmg.sh.in b/packaging/macosx/osx-dmg.sh.in index 920b6dab6c..c274a18192 100755 --- a/packaging/macosx/osx-dmg.sh.in +++ b/packaging/macosx/osx-dmg.sh.in @@ -159,6 +159,9 @@ if [ -n "$CODE_SIGN_IDENTITY" ] ; then echo -e "Signing the $pkg_file" codesign --sign "$CODE_SIGN_IDENTITY" --verbose "$pkg_file" || exit 1 codesign --verify --verbose "$pkg_file" || exit 1 + spctl --assess --type install "$pkg_file" || exit 1 +else + echo "Code signing not performed (no identity)" fi echo -e "\nCREATE WIRESHARK DISK IMAGE\n" |