macOS: Add Logwolf packaging targets.

Rename the following build targets:

app_bundle to wireshark_app_bundle
dmg_package_prep to wireshark_dmg_prep
dmg_package to wireshark_dmg

Add logwolf_app_bundle, logwolf_dmg_prep, and logwolf_dmg targets and
packaging assets. Update the documentation.

We need to add a set of Logwolf version variables to CMake and
make-version.pl. Add a static logwolf-version attribute to
attributes.adoc in the mean time.
This commit is contained in:
Gerald Combs 2022-05-25 13:56:57 -07:00 committed by A Wireshark GitLab Utility
parent 5373483963
commit 370c58f913
14 changed files with 405 additions and 51 deletions

View File

@ -374,7 +374,7 @@ macOS Arm Package:
- printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)"
- ninja
- package-prep
- ninja dmg_package
- ninja wireshark_dmg
- cd run
- notarize-build
- stat -f "%N %z bytes" Wireshark*Arm*.dmg
@ -408,7 +408,7 @@ macOS Intel Package:
- printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)"
- ninja
- package-prep
- ninja dmg_package
- ninja wireshark_dmg
- cd run
- notarize-build
- stat -f "%N %z bytes" Wireshark*Intel*.dmg

View File

@ -3294,52 +3294,54 @@ if(ENABLE_APPLICATION_BUNDLE AND BUILD_wireshark)
add_custom_target(path_helper DEPENDS ${install_path_helper_pkg} ${uninstall_path_helper_pkg})
add_custom_target(app_bundle)
set_target_properties(app_bundle PROPERTIES FOLDER "Copy Tasks")
add_custom_command(TARGET app_bundle
add_custom_target(wireshark_app_bundle)
set_target_properties(wireshark_app_bundle PROPERTIES FOLDER "Copy Tasks")
add_custom_command(TARGET wireshark_app_bundle
POST_BUILD
COMMAND "${CMAKE_BINARY_DIR}/packaging/macosx/osx-app.sh"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/run"
)
add_dependencies(app_bundle ${PROGLIST} chmodbpf path_helper)
add_dependencies(wireshark_app_bundle ${PROGLIST} chmodbpf path_helper)
add_custom_target(dmg_package_prep DEPENDS app_bundle)
add_custom_target(wireshark_dmg_prep DEPENDS wireshark_app_bundle)
set(_read_me_first "packaging/macosx/Read me first.html")
FILE(MAKE_DIRECTORY packaging/macosx/wireshark)
set(_wireshark_read_me_first "packaging/macosx/wireshark/Read me first.html")
ADD_CUSTOM_COMMAND(
OUTPUT
${_read_me_first}
${_wireshark_read_me_first}
COMMAND ${ASCIIDOCTOR_EXECUTABLE}
--backend html
--out-file ${_read_me_first}
--out-file ${_wireshark_read_me_first}
--attribute include-dir=${CMAKE_SOURCE_DIR}/docbook
--attribute min-macos-version=${MIN_MACOS_VERSION}
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Read_me_first.adoc
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Wireshark_read_me_first.adoc
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Read_me_first.adoc
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Wireshark_read_me_first.adoc
)
set(_dsym_installation "packaging/macosx/Debugging symbols installation.html")
set(_wireshark_dsym_installation "packaging/macosx/wireshark/Debugging symbols installation.html")
ADD_CUSTOM_COMMAND(
OUTPUT
${_dsym_installation}
${_wireshark_dsym_installation}
COMMAND ${ASCIIDOCTOR_EXECUTABLE}
--backend html
--out-file ${_dsym_installation}
--out-file ${_wireshark_dsym_installation}
--attribute include-dir=${CMAKE_SOURCE_DIR}/docbook
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Debugging_symbols_installation.adoc
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Wireshark_dsym_installation.adoc
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Debugging_symbols_installation.adoc
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Wireshark_dsym_installation.adoc
)
add_custom_target(dmg_package_readmes DEPENDS ${_read_me_first} ${_dsym_installation} )
add_dependencies(dmg_package_prep dmg_package_readmes)
add_custom_target(wireshark_dmg_readmes DEPENDS ${_wireshark_read_me_first} ${_wireshark_dsym_installation} )
add_dependencies(wireshark_dmg_prep wireshark_dmg_readmes)
ADD_CUSTOM_TARGET( dmg_package
ADD_CUSTOM_TARGET( wireshark_dmg
COMMAND bash -x ${CMAKE_BINARY_DIR}/packaging/macosx/osx-dmg.sh
# Unlike nsis_package_prep + nsis_package, we can add a direct
# dependency here.
DEPENDS dmg_package_prep
DEPENDS wireshark_dmg_prep
# We create Wireshark.app in "run". Do our work there.
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/run
)
@ -3355,29 +3357,45 @@ if(ENABLE_APPLICATION_BUNDLE AND BUILD_logwolf)
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/run"
)
# add_custom_target(dmg_package_prep DEPENDS app_bundle)
add_custom_target(logwolf_dmg_prep DEPENDS logwolf_app_bundle)
# set(_read_me_first "packaging/macosx/Read me first.html")
# ADD_CUSTOM_COMMAND(
# OUTPUT
# ${_read_me_first}
# COMMAND ${ASCIIDOCTOR_EXECUTABLE}
# --backend html
# --out-file ${_read_me_first}
# --attribute include-dir=${CMAKE_SOURCE_DIR}/docbook
# --attribute min-macos-version=${MIN_MACOS_VERSION}
# ${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Read_me_first.adoc
# DEPENDS
# ${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Read_me_first.adoc
# )
# add_custom_target(read_me_first_html DEPENDS ${_read_me_first} )
# add_dependencies(dmg_package_prep read_me_first_html)
FILE(MAKE_DIRECTORY packaging/macosx/logwolf)
# ADD_CUSTOM_TARGET( dmg_package
set(_logwolf_read_me_first "packaging/macosx/logwolf/Read me first.html")
ADD_CUSTOM_COMMAND(
OUTPUT
${_logwolf_read_me_first}
COMMAND ${ASCIIDOCTOR_EXECUTABLE}
--backend html
--out-file ${_logwolf_read_me_first}
--attribute include-dir=${CMAKE_SOURCE_DIR}/docbook
--attribute min-macos-version=${MIN_MACOS_VERSION}
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Logwolf_read_me_first.adoc
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Logwolf_read_me_first.adoc
)
set(_logwolf_dsym_installation "packaging/macosx/logwolf/Debugging symbols installation.html")
ADD_CUSTOM_COMMAND(
OUTPUT
${_logwolf_dsym_installation}
COMMAND ${ASCIIDOCTOR_EXECUTABLE}
--backend html
--out-file ${_logwolf_dsym_installation}
--attribute include-dir=${CMAKE_SOURCE_DIR}/docbook
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Logwolf_dsym_installation.adoc
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/packaging/macosx/Logwolf_dsym_installation.adoc
)
add_custom_target(logwolf_dmg_readmes DEPENDS ${_logwolf_read_me_first} ${_logwolf_dsym_installation} )
add_dependencies(logwolf_dmg_prep logwolf_dmg_readmes)
# ADD_CUSTOM_TARGET( logwolf_dmg
# COMMAND bash -x ${CMAKE_BINARY_DIR}/packaging/macosx/osx-dmg.sh
# # Unlike nsis_package_prep + nsis_package, we can add a direct
# # dependency here.
# DEPENDS dmg_package_prep
# DEPENDS wireshark_dmg_prep
# # We create Wireshark.app in "run". Do our work there.
# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/run
# )

View File

@ -1,6 +1,7 @@
// Common attributes
:wireshark-version: 3.7.1
:logwolf-version: 0.9.0
// Required for btn, kbd:, and menu: macros.
:experimental:

View File

@ -161,12 +161,11 @@ To create a source code tarball, build the `dist` target.
To create an installable package after successfully building Wireshark:
* to build a Debian package, build the `deb-package` target;
* to build an RPM package, build the `rpm-package` target;
* to build an https://appimage.org[AppImage] package, build the
* To build a Debian package, build the `deb-package` target;
* To build an RPM package, build the `rpm-package` target;
* To build an https://appimage.org[AppImage] package, build the
`appimage` target;
* to build a macOS dmg package containing am application bundle, build
the `dmg_package` target.
* To build a macOS dmg package containing an application bundle, build the `wireshark_dmg` or `logwolf_dmg` targets.
==== Troubleshooting during the build and install on Unix

View File

@ -1011,12 +1011,12 @@ In your build directory, type:
[source,sh]
----
ninja dmg_package
ninja wireshark_dmg logwolf_dmg # (Modify as needed)
# ...or, if you're using GNU make...
make dmg_package
make wireshark_dmg logwolf_dmg # (Modify as needed)
----
to build the macOS Package.
to build the macOS Packages.
[#ChSrcNSIS]

View File

@ -0,0 +1,17 @@
// Required attributes:
// include-dir
include::{include-dir}/attributes.adoc[]
:stylesheet: {include-dir}/ws.css
== Debugging Symbols for Logwolf
This archive contains the debugging symbols for Logwolf {logwolf-version}.
The debugging symbols are only necessary if Logwolf is crashing and you need to report an issue to the Logwolf development team.
WARNING: This won't work properly with any version other than Logwolf {logwolf-version}.
To install the symbols, drag _Logwolf.dSYM_ to the same location as _Logwolf_.
This is usually your _Applications_ folder.
To uninstall, drag _Logwolf.dSYM_ to the trash.

View File

@ -0,0 +1,34 @@
// Required attributes:
// include-dir
// min-macos-version
include::{include-dir}/attributes.adoc[]
:stylesheet: {include-dir}/ws.css
== Before You Begin
This release of Logwolf requires macOS {min-macos-version} or later.
If you are running an earlier version of macOS you can install using another packaging system such as Homebrew or MacPorts.
== Quick Setup
To install Logwolf, drag the _Logwolf_ application bundle to the _Applications_ folder.
////
If you would like to add the path to
https://www.wireshark.org/docs/man-pages/wireshark.html[Logwolf],
https://www.wireshark.org/docs/man-pages/tshark.html[TShark],
https://www.wireshark.org/docs/man-pages/capinfos.html[capinfos],
https://www.wireshark.org/docs/man-pages/editcap.html[editcap],
and
https://www.wireshark.org/docs/man-pages/[other command line utilities]
to the system PATH, install the
link:Logwolf.app/Contents/Resources/Extras/Add%20Wireshark%20to%20the%20system%20path.pkg[Add Logwolf to the system path]
package.
////
== Uninstalling
To uninstall Logwolf, do the following:
. Remove _/Applications/Logwolf.app_

View File

@ -0,0 +1,149 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import biplist
import os.path
#
# Example settings file for dmgbuild
#
# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
# You can actually use this file for your own application (not just TextEdit)
# by doing e.g.
#
# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
# .. Useful stuff ..............................................................
lw_version = '@VERSION@'
lw_volname = 'Logwolf ' + lw_version
lw_srcdir = '@CMAKE_SOURCE_DIR@'
lw_bindir = '@CMAKE_BINARY_DIR@'
lw_app = 'Logwolf.app'
lw_readme = 'Read me first.html'
lw_install_chmodbpf = 'Install ChmodBPF.pkg'
lw_uninstall_chmodbpf = 'Uninstall ChmodBPF.pkg'
lw_install_path_helper = 'Add Logwolf to the system path.pkg'
lw_uninstall_path_helper = 'Remove Logwolf from the system path.pkg'
# .. Basics ....................................................................
# Uncomment to override the output filename
# filename = lw_volname + ' Intel 64.dmg'
# Uncomment to override the output volume name
# volume_name = 'Logwolf ' + lw_version
# From the hdiutil man page:
# UDZO - UDIF zlib-compressed image
# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
# Volume format (see hdiutil create -help)
format = defines.get('format', 'UDBZ')
# Compression level (if relevant)
compression_level = 9
# Volume size
size = None
# Files to include
files = [
os.path.join(lw_bindir, 'run', lw_app),
os.path.join(lw_bindir, 'packaging', 'macosx', 'logwolf', lw_readme),
]
# Symlinks to create
symlinks = {
'Applications': '/Applications',
lw_install_chmodbpf: os.path.join(lw_app, 'Contents', 'Resources', 'Extras', lw_install_chmodbpf),
lw_uninstall_chmodbpf: os.path.join(lw_app, 'Contents', 'Resources', 'Extras', lw_uninstall_chmodbpf),
lw_install_path_helper: os.path.join(lw_app, 'Contents', 'Resources', 'Extras', lw_install_path_helper),
lw_uninstall_path_helper: os.path.join(lw_app, 'Contents', 'Resources', 'Extras', lw_uninstall_path_helper),
}
# Volume icon
#
# You can either define icon, in which case that icon file will be copied to the
# image, *or* you can define badge_icon, in which case the icon file you specify
# will be used to badge the system's Removable Disk icon
#
badge_icon = os.path.join(lw_srcdir, 'packaging', 'macosx', 'wsiconvol.icns')
#badge_icon = icon_from_app(application)
# Where to put the icons
icon_locations = {
lw_app: ( 80, 64),
'Applications': (240, 64),
lw_readme: (160, 170),
lw_install_chmodbpf: ( 80, 276),
lw_uninstall_chmodbpf: (250, 276),
lw_install_path_helper: ( 80, 382),
lw_uninstall_path_helper: (250, 382),
}
# .. Window configuration ......................................................
# Background
#
# This is a STRING containing any of the following:
#
# #3344ff - web-style RGB color
# #34f - web-style RGB color, short form (#34f == #3344ff)
# rgb(1,0,0) - RGB color, each value is between 0 and 1
# hsl(120,1,.5) - HSL (hue saturation lightness) color
# hwb(300,0,0) - HWB (hue whiteness blackness) color
# cmyk(0,1,0,0) - CMYK color
# goldenrod - X11/SVG named color
# builtin-arrow - A simple built-in background with a blue arrow
# /foo/bar/baz.png - The path to an image file
#
# The hue component in hsl() and hwb() may include a unit; it defaults to
# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
# or 'gon').
#
# Other color components may be expressed either in the range 0 to 1, or
# as percentages (e.g. 60% is equivalent to 0.6).
background = os.path.join(lw_srcdir, 'packaging', 'macosx', 'dmg_background.png')
show_status_bar = False
show_tab_view = False
show_toolbar = False
show_pathbar = False
show_sidebar = False
sidebar_width = 180
# Window position in ((x, y), (w, h)) format
window_rect = ((600, 200), (350, 525))
# Select the default view; must be one of
#
# 'icon-view'
# 'list-view'
# 'column-view'
# 'coverflow'
#
default_view = 'icon-view'
# General view configuration
show_icon_preview = False
# Set these to True to force inclusion of icon/list view settings (otherwise
# we only include settings for the default view)
include_icon_view_settings = 'auto'
include_list_view_settings = 'auto'
# .. Icon view configuration ...................................................
arrange_by = None
grid_offset = (0, 0)
#grid_spacing = 100
scroll_position = (0, 0)
#label_pos = 'bottom' # or 'right'
text_size = 12
icon_size = 72

View File

@ -0,0 +1,136 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import biplist
import os.path
#
# Example settings file for dmgbuild
#
# Adapted from https://raw.githubusercontent.com/al45tair/dmgbuild/master/examples/settings.py
# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
# You can actually use this file for your own application (not just TextEdit)
# by doing e.g.
#
# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
# .. Useful stuff ..............................................................
lw_version = '@VERSION@'
lw_volname = 'Logwolf Debugging Symbols' + lw_version
lw_srcdir = '@CMAKE_SOURCE_DIR@'
lw_bindir = '@CMAKE_BINARY_DIR@'
lw_app_dsym = 'Logwolf.dSYM'
lw_readme_dsym = 'Debugging symbols installation.html'
# .. Basics ....................................................................
# Uncomment to override the output filename
# filename = lw_volname + ' Intel 64.dmg'
# Uncomment to override the output volume name
# volume_name = 'Logwolf ' + lw_version
# From the hdiutil man page:
# UDZO - UDIF zlib-compressed image
# UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
# ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
# ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
# Volume format (see hdiutil create -help)
format = defines.get('format', 'UDBZ')
# Compression level (if relevant)
compression_level = 9
# Volume size
size = None
# Files to include
files = [
os.path.join(lw_bindir, 'run', lw_app_dsym),
os.path.join(lw_bindir, 'packaging', 'macosx', 'logwolf', lw_readme_dsym),
]
# Symlinks to create
symlinks = {
'Applications': '/Applications',
}
# Volume icon
#
# You can either define icon, in which case that icon file will be copied to the
# image, *or* you can define badge_icon, in which case the icon file you specify
# will be used to badge the system's Removable Disk icon
#
badge_icon = os.path.join(lw_srcdir, 'packaging', 'macosx', 'wsiconvol.icns')
#badge_icon = icon_from_app(application)
# Where to put the icons
icon_locations = {
lw_app_dsym: ( 80, 64),
'Applications': (240, 64),
lw_readme_dsym: (160, 170),
}
# .. Window configuration ......................................................
# Background
#
# This is a STRING containing any of the following:
#
# #3344ff - web-style RGB color
# #34f - web-style RGB color, short form (#34f == #3344ff)
# rgb(1,0,0) - RGB color, each value is between 0 and 1
# hsl(120,1,.5) - HSL (hue saturation lightness) color
# hwb(300,0,0) - HWB (hue whiteness blackness) color
# cmyk(0,1,0,0) - CMYK color
# goldenrod - X11/SVG named color
# builtin-arrow - A simple built-in background with a blue arrow
# /foo/bar/baz.png - The path to an image file
#
# The hue component in hsl() and hwb() may include a unit; it defaults to
# degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
# or 'gon').
#
# Other color components may be expressed either in the range 0 to 1, or
# as percentages (e.g. 60% is equivalent to 0.6).
background = os.path.join(lw_srcdir, 'packaging', 'macosx', 'dmg_background.png')
show_status_bar = False
show_tab_view = False
show_toolbar = False
show_pathbar = False
show_sidebar = False
sidebar_width = 180
# Window position in ((x, y), (w, h)) format
window_rect = ((600, 200), (350, 325))
# Select the default view; must be one of
#
# 'icon-view'
# 'list-view'
# 'column-view'
# 'coverflow'
#
default_view = 'icon-view'
# General view configuration
show_icon_preview = False
# Set these to True to force inclusion of icon/list view settings (otherwise
# we only include settings for the default view)
include_icon_view_settings = 'auto'
include_list_view_settings = 'auto'
# .. Icon view configuration ...................................................
arrange_by = None
grid_offset = (0, 0)
#grid_spacing = 100
scroll_position = (0, 0)
#label_pos = 'bottom' # or 'right'
text_size = 12
icon_size = 72

View File

@ -72,7 +72,7 @@ size = None
# Files to include
files = [
os.path.join(ws_bindir, 'run', ws_app),
os.path.join(ws_bindir, 'packaging', 'macosx', ws_readme),
os.path.join(ws_bindir, 'packaging', 'macosx', 'wireshark', ws_readme),
]
# Symlinks to create

View File

@ -50,7 +50,7 @@ size = None
# Files to include
files = [
os.path.join(ws_bindir, 'run', ws_app_dsym),
os.path.join(ws_bindir, 'packaging', 'macosx', ws_readme_dsym),
os.path.join(ws_bindir, 'packaging', 'macosx', 'wireshark', ws_readme_dsym),
]
# Symlinks to create

View File

@ -3563,11 +3563,11 @@ echo
echo "mkdir build; cd build"
if [ ! -z "$NINJA_VERSION" ]; then
echo "cmake -G Ninja .."
echo "ninja app_bundle"
echo "ninja wireshark_app_bundle logwolf_app_bundle # (Modify as needed)"
echo "ninja install/strip"
else
echo "cmake .."
echo "make $MAKE_BUILD_OPTS app_bundle"
echo "make $MAKE_BUILD_OPTS wireshark_app_bundle logwolf_app_bundle # (Modify as needed)"
echo "make install/strip"
fi
echo