mirror of
https://github.com/munki/munki.git
synced 2026-05-04 11:29:16 -05:00
Simplify some of the pkg creation tasks in make_munki_mpkg.sh; add git revision count to python pkg version
This commit is contained in:
@@ -186,20 +186,28 @@ if [ -e "$MUNKIROOT/launchd/version.plist" ]; then
|
||||
LAUNCHDVERSION=$(defaults read "$MUNKIROOT/launchd/version" CFBundleShortVersionString)
|
||||
fi
|
||||
LAUNCHDVERSION=$LAUNCHDVERSION.$LAUNCHDSVNREV
|
||||
# get a pseudo-svn revision number for the Python pkg
|
||||
PYTHONGITREV=$(git log -n1 --format="%H" -- code/tools/py3_requirements.txt code/tools/build_python_framework.sh)
|
||||
GITREVINDEX=$(git rev-list --count "$APPSGITREV")
|
||||
PYTHONSVNREV=$(($GITREVINDEX + $MAGICNUMBER))
|
||||
if [ $PYTHONSVNREV -gt $MPKGSVNREV ] ; then
|
||||
MPKGSVNREV=$PYTHONSVNREV
|
||||
fi
|
||||
# Get Python version
|
||||
PYTHONVERSION="NOT FOUND"
|
||||
PYTHONINFOPLIST="$MUNKIROOT"/Python.framework/Versions/Current/Resources/Info.plist
|
||||
if [ -f "$PYTHONINFOPLIST" ]; then
|
||||
PYTHONVERSION=$(defaults read "$PYTHONINFOPLIST" CFBundleVersion)
|
||||
fi
|
||||
PYTHONVERSION=$PYTHONVERSION.$PYTHONSVNREV
|
||||
|
||||
|
||||
# get a pseudo-svn revision number for the metapackage
|
||||
MPKGVERSION=$MUNKIVERS.$MPKGSVNREV
|
||||
|
||||
|
||||
MPKG="$OUTPUTDIR/munkitools-$MPKGVERSION.pkg"
|
||||
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
cat <<EOF
|
||||
|
||||
@@ -210,7 +218,6 @@ if [ "$(id -u)" -ne 0 ]; then
|
||||
EOF
|
||||
fi
|
||||
|
||||
|
||||
echo "Build variables"
|
||||
echo
|
||||
echo " Bundle ID: $PKGID"
|
||||
@@ -219,7 +226,7 @@ echo " Output directory: $OUTPUTDIR"
|
||||
echo " munki core tools version: $VERSION"
|
||||
echo " LaunchAgents/LaunchDaemons version: $LAUNCHDVERSION"
|
||||
echo " Apps package version: $APPSVERSION"
|
||||
echo " Python version: $PYTHONVERSION"
|
||||
echo " Python package version: $PYTHONVERSION"
|
||||
echo
|
||||
echo " metapackage version: $MPKGVERSION"
|
||||
echo
|
||||
@@ -294,35 +301,13 @@ fi
|
||||
makeinfo() {
|
||||
pkg="$1"
|
||||
out="$2_$pkg"
|
||||
id="$3.$pkg"
|
||||
ver="$4"
|
||||
size="$5"
|
||||
nfiles="$6"
|
||||
restart="$7"
|
||||
#major=$(echo $ver | cut -d. -f1)
|
||||
#minor=$(echo $ver | cut -d. -f2)
|
||||
# Flat packages want a PackageInfo.
|
||||
if [ "$restart" == "restart" ]; then
|
||||
restart=' postinstall-action="restart"' # Leading space is important.
|
||||
if [ "$3" == "restart" ]; then
|
||||
restart='postinstall-action="restart"'
|
||||
else
|
||||
restart=""
|
||||
fi
|
||||
if [ "$pkg" == "app" ]; then
|
||||
MSUID=$(defaults read "$MUNKIROOT/code/apps/Managed Software Center/build/Release/Managed Software Center.app/Contents/Info" CFBundleIdentifier)
|
||||
app="<bundle id=\"$MSUID\"
|
||||
CFBundleIdentifier=\"$MSUID\"
|
||||
path=\"./Applications/Managed Software Center.app\"
|
||||
CFBundleVersion=\"$ver\"/>
|
||||
<bundle-version>
|
||||
<bundle id=\"$MSUID\"/>
|
||||
</bundle-version>"
|
||||
else
|
||||
app=""
|
||||
fi
|
||||
cat > "$out" <<EOF
|
||||
<pkg-info format-version="2" identifier="$id" version="$ver" install-location="/" auth="root"$restart>
|
||||
<payload installKBytes="$size" numberOfFiles="$nfiles"/>
|
||||
$app
|
||||
cat > "$out" <<EOF
|
||||
<pkg-info format-version="2" install-location="/" auth="root" $restart>
|
||||
</pkg-info>
|
||||
EOF
|
||||
}
|
||||
@@ -392,11 +377,8 @@ mkdir -m 750 -p "$COREROOT/Library/Managed Installs/Cache"
|
||||
mkdir -m 750 -p "$COREROOT/Library/Managed Installs/catalogs"
|
||||
mkdir -m 755 -p "$COREROOT/Library/Managed Installs/manifests"
|
||||
|
||||
|
||||
# Create package info file.
|
||||
CORESIZE=$(du -sk "$COREROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${COREROOT}/" | wc -l))
|
||||
makeinfo core "$PKGTMP/info" "$PKGID" "$VERSION" "$CORESIZE" "$NFILES" norestart
|
||||
makeinfo core "$PKGTMP/info" norestart
|
||||
|
||||
|
||||
#########################################
|
||||
@@ -428,9 +410,7 @@ chmod -R 755 "$ADMINROOT/private"
|
||||
chmod 644 "$ADMINROOT/private/etc/paths.d/munki"
|
||||
|
||||
# Create package info file.
|
||||
ADMINSIZE=$(du -sk "$ADMINROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${ADMINROOT}/" | wc -l))
|
||||
makeinfo admin "$PKGTMP/info" "$PKGID" "$VERSION" "$ADMINSIZE" "$NFILES" norestart
|
||||
makeinfo admin "$PKGTMP/info" norestart
|
||||
|
||||
|
||||
###################
|
||||
@@ -468,9 +448,7 @@ if [ "$APPSIGNINGCERT" != "" ]; then
|
||||
fi
|
||||
|
||||
# Create package info file.
|
||||
APPSIZE=$(du -sk "$APPROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${APPROOT}/" | wc -l))
|
||||
makeinfo app "$PKGTMP/info" "$PKGID" "$APPSVERSION" "$APPSIZE" "$NFILES" norestart
|
||||
makeinfo app "$PKGTMP/info" norestart
|
||||
|
||||
|
||||
##############
|
||||
@@ -491,13 +469,11 @@ chmod 644 "$LAUNCHDROOT/Library/LaunchAgents/"*
|
||||
cp -X "$MUNKIROOT/launchd/LaunchDaemons/"*.plist "$LAUNCHDROOT/Library/LaunchDaemons/"
|
||||
chmod 644 "$LAUNCHDROOT/Library/LaunchDaemons/"*
|
||||
# Create package info file.
|
||||
LAUNCHDSIZE=$(du -sk "$LAUNCHDROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${LAUNCHDROOT}/" | wc -l))
|
||||
RESTARTFLAG=restart
|
||||
if [ "$MDMSTYLE" == "YES" ] ; then
|
||||
RESTARTFLAG=norestart
|
||||
fi
|
||||
makeinfo launchd "$PKGTMP/info" "$PKGID" "$LAUNCHDVERSION" "$LAUNCHDSIZE" "$NFILES" "$RESTARTFLAG"
|
||||
makeinfo launchd "$PKGTMP/info" "$RESTARTFLAG"
|
||||
|
||||
|
||||
#######################
|
||||
@@ -531,9 +507,7 @@ done
|
||||
chmod -R go-w "$APPUSAGEROOT/usr/local/munki"
|
||||
chmod +x "$APPUSAGEROOT/usr/local/munki"
|
||||
# Create package info file.
|
||||
APPUSAGESIZE=$(du -sk "$APPUSAGEROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${APPUSAGEROOT}/" | wc -l))
|
||||
makeinfo app_usage "$PKGTMP/info" "$PKGID" "$VERSION" "$APPUSAGEROOT" "$NFILES" norestart
|
||||
makeinfo app_usage "$PKGTMP/info" norestart
|
||||
|
||||
|
||||
#######################
|
||||
@@ -555,9 +529,7 @@ ln -s Python.framework/Versions/Current/bin/python3 "$PYTHONROOT/usr/local/munki
|
||||
chmod -R go-w "$PYTHONROOT/usr/local/munki"
|
||||
chmod +x "$PYTHONROOT/usr/local/munki"
|
||||
# Create package info file.
|
||||
PYTHONSIZE=$(du -sk "$PYTHONROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${PYTHONROOT}/" | wc -l))
|
||||
makeinfo python "$PKGTMP/info" "$PKGID" "$PYTHONVERSION" "$PYTHONROOT" "$NFILES" norestart
|
||||
makeinfo python "$PKGTMP/info" norestart
|
||||
|
||||
#######################
|
||||
## no python choice ##
|
||||
@@ -576,9 +548,7 @@ ln -s /usr/bin/python "$NOPYTHONROOT/usr/local/munki/munki-python"
|
||||
chmod -R go-w "$NOPYTHONROOT/usr/local/munki"
|
||||
chmod +x "$NOPYTHONROOT/usr/local/munki"
|
||||
# Create package info file.
|
||||
NOPYTHONSIZE=$(du -sk "$NOPYTHONROOT" | cut -f1)
|
||||
NFILES=$(echo $(find "${NOPYTHONROOT}/" | wc -l))
|
||||
makeinfo no_python "$PKGTMP/info" "$PKGID" "$VERSION" "$NOPYTHONROOT" "$NFILES" norestart
|
||||
makeinfo no_python "$PKGTMP/info" norestart
|
||||
|
||||
|
||||
#############################
|
||||
@@ -644,7 +614,7 @@ if [ ! -z "$CONFPKG" ]; then
|
||||
fi
|
||||
cat > "$DISTFILE" <<EOF
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<installer-script minSpecVersion="1.000000" authoringTool="com.apple.PackageMaker" authoringToolVersion="3.0.4" authoringToolBuild="179">
|
||||
<installer-script minSpecVersion="1.000000">
|
||||
<title>Munki - Managed software installation for macOS</title>
|
||||
<volume-check>
|
||||
<allowed-os-versions>
|
||||
@@ -685,19 +655,18 @@ cat > "$DISTFILE" <<EOF
|
||||
<pkg-ref id="$PKGID.no_python"/>
|
||||
</choice>
|
||||
$CONFCHOICE
|
||||
<pkg-ref id="$PKGID.core" installKBytes="$CORESIZE" version="$VERSION" auth="Root">${PKGPREFIX}munkitools_core-$VERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.admin" installKBytes="$ADMINSIZE" version="$VERSION" auth="Root">${PKGPREFIX}munkitools_admin-$VERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.app" installKBytes="$APPSIZE" version="$MSCVERSION" auth="Root">${PKGPREFIX}munkitools_app-$APPSVERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.launchd" installKBytes="$LAUNCHDSIZE" version="$LAUNCHDVERSION" auth="Root" $LAUNCHDPOSTINSTALLACTION>${PKGPREFIX}munkitools_launchd-$LAUNCHDVERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.app_usage" installKBytes="$APPUSAGESIZE" version="$VERSION" auth="Root">${PKGPREFIX}munkitools_app_usage-$VERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.python" installKBytes="$PYTHONSIZE" version="$PYTHONVERSION" auth="Root">${PKGPREFIX}munkitools_python-$PYTHONVERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.no_python" installKBytes="$NOPYTHONSIZE" version="$VERSION" auth="Root">${PKGPREFIX}munkitools_no_python-$VERSION.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.core" auth="Root">${PKGPREFIX}munkitools_core.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.admin" auth="Root">${PKGPREFIX}munkitools_admin.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.app" auth="Root">${PKGPREFIX}munkitools_app.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.launchd" auth="Root" $LAUNCHDPOSTINSTALLACTION>${PKGPREFIX}munkitools_launchd.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.app_usage" auth="Root">${PKGPREFIX}munkitools_app_usage.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.python" auth="Root">${PKGPREFIX}munkitools_python.pkg</pkg-ref>
|
||||
<pkg-ref id="$PKGID.no_python" auth="Root">${PKGPREFIX}munkitools_no_python.pkg</pkg-ref>
|
||||
$CONFREF
|
||||
<product id="$PKGID" version="$VERSION" />
|
||||
</installer-script>
|
||||
EOF
|
||||
|
||||
|
||||
###################
|
||||
## Set ownership ##
|
||||
###################
|
||||
@@ -726,6 +695,7 @@ sudo chown -hR root:wheel "$APPUSAGEROOT/usr"
|
||||
sudo chown -hR root:wheel "$PYTHONROOT/usr"
|
||||
sudo chown -hR root:wheel "$NOPYTHONROOT/usr"
|
||||
|
||||
|
||||
######################
|
||||
## Run pkgbuild ##
|
||||
######################
|
||||
@@ -758,6 +728,9 @@ for pkg in core admin app launchd app_usage python no_python; do
|
||||
esac
|
||||
echo
|
||||
echo "Packaging munkitools_$pkg-$ver.pkg"
|
||||
|
||||
# use sudo here so pkgutil doesn't complain when it tries to
|
||||
# descend into root/Library/Managed Installs/*
|
||||
|
||||
# Use pkgutil --analyze to build a component property list
|
||||
# then turn off bundle relocation
|
||||
@@ -771,8 +744,7 @@ for pkg in core admin app launchd app_usage python no_python; do
|
||||
-c 'Set :0:BundleIsRelocatable false' \
|
||||
"${PKGTMP}/munki_${pkg}_component.plist"
|
||||
fi
|
||||
# use sudo here so pkgutil doesn't complain when it tries to
|
||||
# descend into root/Library/Managed Installs/*
|
||||
|
||||
if [ "$SCRIPTS" != "" ]; then
|
||||
sudo /usr/bin/pkgbuild \
|
||||
--root "$PKGTMP/munki_$pkg" \
|
||||
@@ -782,7 +754,7 @@ for pkg in core admin app launchd app_usage python no_python; do
|
||||
--info "$PKGTMP/info_$pkg" \
|
||||
--component-plist "${PKGTMP}/munki_${pkg}_component.plist" \
|
||||
--scripts "$SCRIPTS" \
|
||||
"$PKGDEST/munkitools_$pkg-$ver.pkg"
|
||||
"$PKGDEST/munkitools_$pkg.pkg"
|
||||
else
|
||||
sudo /usr/bin/pkgbuild \
|
||||
--root "$PKGTMP/munki_$pkg" \
|
||||
@@ -791,11 +763,11 @@ for pkg in core admin app launchd app_usage python no_python; do
|
||||
--ownership preserve \
|
||||
--info "$PKGTMP/info_$pkg" \
|
||||
--component-plist "${PKGTMP}/munki_${pkg}_component.plist" \
|
||||
"$PKGDEST/munkitools_$pkg-$ver.pkg"
|
||||
"$PKGDEST/munkitools_$pkg.pkg"
|
||||
fi
|
||||
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error packaging munkitools_$pkg-$ver.pkg before rebuilding it."
|
||||
echo "Error building munkitools_$pkg.pkg."
|
||||
echo "Attempting to clean up temporary files..."
|
||||
sudo rm -rf "$PKGTMP"
|
||||
exit 2
|
||||
|
||||
Reference in New Issue
Block a user