updated build system
This commit is contained in:
@@ -189,6 +189,7 @@ endif()
|
|||||||
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
|
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
|
||||||
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
|
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
|
||||||
-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION}
|
-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION}
|
||||||
|
-DPROJECT_MACOS_BUNDLE_ID=${PROJECT_MACOS_BUNDLE_ID}
|
||||||
-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME}
|
-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME}
|
||||||
-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION}
|
-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION}
|
||||||
-DPROJECT_NAME=${PROJECT_NAME}
|
-DPROJECT_NAME=${PROJECT_NAME}
|
||||||
|
|||||||
@@ -17,3 +17,7 @@ if (PROJECT_IS_DARWIN)
|
|||||||
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (PROJECT_IS_DARWIN AND NOT PROJECT_MACOS_BUNDLE_ID)
|
||||||
|
message(FATAL_ERROR "'PROJECT_MACOS_BUNDLE_ID' is not set in 'config.sh'")
|
||||||
|
endif()
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
PROJECT_NAME="repertory"
|
PROJECT_NAME="repertory"
|
||||||
PROJECT_MACOS_ICNS_NAME="icon.icns"
|
|
||||||
|
|
||||||
PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage"
|
PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage"
|
||||||
PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory"
|
PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory"
|
||||||
@@ -9,6 +8,9 @@ PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory"
|
|||||||
PROJECT_COPYRIGHT="Copyright <2018-2025> <MIT License> <${PROJECT_URL}>"
|
PROJECT_COPYRIGHT="Copyright <2018-2025> <MIT License> <${PROJECT_URL}>"
|
||||||
PROJECT_DESC="Mount utility for Sia and S3"
|
PROJECT_DESC="Mount utility for Sia and S3"
|
||||||
|
|
||||||
|
PROJECT_MACOS_BUNDLE_ID="com.fifthgrid.blockstorage.repertory"
|
||||||
|
PROJECT_MACOS_ICNS_NAME="icon.icns"
|
||||||
|
|
||||||
PROJECT_MAJOR_VERSION=2
|
PROJECT_MAJOR_VERSION=2
|
||||||
PROJECT_MINOR_VERSION=1
|
PROJECT_MINOR_VERSION=1
|
||||||
PROJECT_REVISION_VERSION=0
|
PROJECT_REVISION_VERSION=0
|
||||||
|
|||||||
@@ -1,23 +1,26 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
||||||
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>@PROJECT_NAME@</string>
|
<string>@PROJECT_NAME@</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.fifthgrid.blockstorage.@PROJECT_NAME@</string>
|
<string>@PPROJECT_MACOS_BUNDLE_ID@</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>@PROJECT_NAME@</string>
|
<string>@PROJECT_NAME@</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@-@PROJECT_RELEASE_ITER@_@PROJECT_GIT_REV@</string>
|
<string>
|
||||||
<key>CFBundleShortVersionString</key>
|
@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@-@PROJECT_RELEASE_ITER@_@PROJECT_GIT_REV@</string>
|
||||||
<string>@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@.@PROJECT_RELEASE_NUM@</string>
|
<key>CFBundleShortVersionString</key>
|
||||||
<key>CFBundlePackageType</key>
|
<string>
|
||||||
<string>APPL</string>
|
@PROJECT_MAJOR_VERSION@.@PROJECT_MINOR_VERSION@.@PROJECT_REVISION_VERSION@.@PROJECT_RELEASE_NUM@</string>
|
||||||
<key>LSUIElement</key>
|
<key>CFBundlePackageType</key>
|
||||||
<true/>
|
<string>APPL</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>LSUIElement</key>
|
||||||
<string>@PROJECT_MACOS_ICNS_NAME@</string>
|
<true />
|
||||||
</dict>
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>@PROJECT_MACOS_ICNS_NAME@</string>
|
||||||
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ PROJECT_MINGW64_COPY_DEPENDENCIES=()
|
|||||||
PROJECT_MSYS2_PACKAGE_LIST=()
|
PROJECT_MSYS2_PACKAGE_LIST=()
|
||||||
PROJECT_REQUIRE_ALPINE=OFF
|
PROJECT_REQUIRE_ALPINE=OFF
|
||||||
PROJECT_STATIC_LINK=OFF
|
PROJECT_STATIC_LINK=OFF
|
||||||
|
PROJECT_MACOS_BUNDLE_ID=""
|
||||||
PROJECT_MACOS_ICNS_NAME=""
|
PROJECT_MACOS_ICNS_NAME=""
|
||||||
|
|
||||||
if [ "$(uname -s)" == "Darwin" ]; then
|
if [ "$(uname -s)" == "Darwin" ]; then
|
||||||
@@ -272,6 +273,7 @@ PROJECT_CMAKE_OPTS="-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} ${PROJECT_CMAKE_OPTS}
|
|||||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}"
|
||||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}"
|
||||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}"
|
||||||
|
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_BUNDLE_ID=${PROJECT_MACOS_BUNDLE_ID} ${PROJECT_CMAKE_OPTS}"
|
||||||
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME} ${PROJECT_CMAKE_OPTS}"
|
||||||
PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
||||||
PROJECT_CMAKE_OPTS="-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
PROJECT_CMAKE_OPTS="-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
||||||
@@ -351,6 +353,7 @@ export PROJECT_IS_DARWIN
|
|||||||
export PROJECT_IS_MINGW
|
export PROJECT_IS_MINGW
|
||||||
export PROJECT_IS_MINGW_UNIX
|
export PROJECT_IS_MINGW_UNIX
|
||||||
export PROJECT_LINK_TYPE
|
export PROJECT_LINK_TYPE
|
||||||
|
export PROJECT_MACOS_BUNDLE_ID
|
||||||
export PROJECT_MACOS_ICNS_NAME
|
export PROJECT_MACOS_ICNS_NAME
|
||||||
export PROJECT_MAJOR_VERSION
|
export PROJECT_MAJOR_VERSION
|
||||||
export PROJECT_MINGW64_COPY_DEPENDENCIES
|
export PROJECT_MINGW64_COPY_DEPENDENCIES
|
||||||
@@ -410,6 +413,7 @@ if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
|||||||
echo " Long path names: ${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}"
|
echo " Long path names: ${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}"
|
||||||
fi
|
fi
|
||||||
if [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
if [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
||||||
|
echo " macOS bundle ID: ${PROJECT_MACOS_BUNDLE_ID}"
|
||||||
echo " macOS icns name: ${PROJECT_MACOS_ICNS_NAME}"
|
echo " macOS icns name: ${PROJECT_MACOS_ICNS_NAME}"
|
||||||
fi
|
fi
|
||||||
echo " Meson toolchain file: ${PROJECT_TOOLCHAIN_FILE_MESON}"
|
echo " Meson toolchain file: ${PROJECT_TOOLCHAIN_FILE_MESON}"
|
||||||
|
|||||||
@@ -12,6 +12,24 @@ function error_exit() {
|
|||||||
exit $2
|
exit $2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cleanup_packages() {
|
||||||
|
local SOURCE_FILE=$1
|
||||||
|
|
||||||
|
pushd "${PROJECT_DIST_DIR}"
|
||||||
|
if [ -f "${SOURCE_FILE}" ]; then
|
||||||
|
rm -f "${SOURCE_FILE}" || error_exit "failed to delete file: ${SOURCE_FILE}" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${SOURCE_FILE}.sha256" ]; then
|
||||||
|
rm -f "${SOURCE_FILE}.sha256" || error_exit "failed to delete file: ${SOURCE_FILE}.sha256" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${SOURCE_FILE}.sig" ]; then
|
||||||
|
rm -f "${SOURCE_FILE}.sig" || error_exit "failed to delete file: ${SOURCE_FILE}.sig" 1
|
||||||
|
fi
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
function create_file_validations() {
|
function create_file_validations() {
|
||||||
local SOURCE_FILE=$1
|
local SOURCE_FILE=$1
|
||||||
sha256sum ${SOURCE_FILE} >${SOURCE_FILE}.sha256 || error_exit "failed to create sha256 for file: ${SOURCE_FILE}" 1
|
sha256sum ${SOURCE_FILE} >${SOURCE_FILE}.sha256 || error_exit "failed to create sha256 for file: ${SOURCE_FILE}" 1
|
||||||
@@ -25,37 +43,9 @@ if [ ! -d "${PROJECT_DIST_DIR}" ]; then
|
|||||||
error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2
|
error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pushd "${PROJECT_DIST_DIR}"
|
cleanup_packages "${PROJECT_OUT_FILE}"
|
||||||
if [ -f "${PROJECT_OUT_FILE}" ]; then
|
cleanup_packages "${PROJECT_FILE_PART}_setup.exe"
|
||||||
rm -f "${PROJECT_OUT_FILE}" || error_exit "failed to delete file: ${PROJECT_OUT_FILE}" 1
|
cleanup_packages "${PROJECT_FILE_PART}.dmg"
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_OUT_FILE}.sha256" ]; then
|
|
||||||
rm -f "${PROJECT_OUT_FILE}.sha256" || error_exit "failed to delete file: ${PROJECT_OUT_FILE}.sha256" 1
|
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_OUT_FILE}.sig" ]; then
|
|
||||||
rm -f "${PROJECT_OUT_FILE}.sig" || error_exit "failed to delete file: ${PROJECT_OUT_FILE}.sig" 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${PROJECT_FILE_PART}_setup.exe" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}_setup.exe" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe" 1
|
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_FILE_PART}_setup.exe.sha256" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}_setup.exe.sha256" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe.sha256" 1
|
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_FILE_PART}_setup.exe.sig" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}_setup.exe.sig" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe.sig" 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${PROJECT_FILE_PART}.dmg" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}.dmg" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe" 1
|
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_FILE_PART}.dmg.sha256" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}.dmg.sha256" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe.sha256" 1
|
|
||||||
fi
|
|
||||||
if [ -f "${PROJECT_FILE_PART}.dmg.sig" ]; then
|
|
||||||
rm -f "${PROJECT_FILE_PART}.dmg.sig" || error_exit "failed to delete file: ${PROJECT_FILE_PART}_setup.exe.sig" 1
|
|
||||||
fi
|
|
||||||
popd
|
|
||||||
|
|
||||||
rsync -av --progress ${PROJECT_DIST_DIR}/ ${TEMP_DIR}/${PROJECT_NAME}/ || error_exit "failed to rsync" 1
|
rsync -av --progress ${PROJECT_DIST_DIR}/ ${TEMP_DIR}/${PROJECT_NAME}/ || error_exit "failed to rsync" 1
|
||||||
|
|
||||||
@@ -110,19 +100,11 @@ if [ -d "${TEMP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.app" ]; then
|
|||||||
|
|
||||||
ln -s /Applications "${DMG_ROOT}/Applications" 2>/dev/null || true
|
ln -s /Applications "${DMG_ROOT}/Applications" 2>/dev/null || true
|
||||||
|
|
||||||
BUNDLE_ID="$(/usr/bin/defaults read "${APP_SRC}/Contents/Info" CFBundleIdentifier 2>/dev/null || true)"
|
|
||||||
if [ -z "${BUNDLE_ID}" ] && [ -f "${APP_SRC}/Contents/Info.plist" ]; then
|
|
||||||
BUNDLE_ID="$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "${APP_SRC}/Contents/Info.plist" 2>/dev/null || true)"
|
|
||||||
fi
|
|
||||||
if [ -z "${BUNDLE_ID}" ]; then
|
|
||||||
BUNDLE_ID="${PROJECT_MACOS_BUNDLE_ID:-com.example.${PROJECT_NAME}}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${INSTALLER_SRC}" ]; then
|
if [ -f "${INSTALLER_SRC}" ]; then
|
||||||
cp -f "${INSTALLER_SRC}" "${INSTALLER}" || error_exit "failed to copy install command" 1
|
cp -f "${INSTALLER_SRC}" "${INSTALLER}" || error_exit "failed to copy install command" 1
|
||||||
chmod +x "${INSTALLER}" || error_exit "failed to chmod install command" 1
|
chmod +x "${INSTALLER}" || error_exit "failed to chmod install command" 1
|
||||||
|
|
||||||
SAFE_PREFIX="$(printf '%s' "${BUNDLE_ID}" | sed -e 's/[\/&]/\\&/g')"
|
SAFE_PREFIX="$(printf '%s' "${PROJECT_MACOS_BUNDLE_ID}" | sed -e 's/[\/&]/\\&/g')"
|
||||||
/usr/bin/sed -i '' -e "s|^LABEL_PREFIX=.*$|LABEL_PREFIX=\"${SAFE_PREFIX}\"|g" "${INSTALLER}"
|
/usr/bin/sed -i '' -e "s|^LABEL_PREFIX=.*$|LABEL_PREFIX=\"${SAFE_PREFIX}\"|g" "${INSTALLER}"
|
||||||
|
|
||||||
LABEL_ASSIGNED="$(/usr/bin/awk -F= '/^LABEL_PREFIX=/{sub(/^[^=]*=/,""); gsub(/^"|"$/,""); print; exit}' "${INSTALLER}")"
|
LABEL_ASSIGNED="$(/usr/bin/awk -F= '/^LABEL_PREFIX=/{sub(/^[^=]*=/,""); gsub(/^"|"$/,""); print; exit}' "${INSTALLER}")"
|
||||||
@@ -134,7 +116,7 @@ if [ -d "${TEMP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.app" ]; then
|
|||||||
if (v !~ /\./) exit 1;
|
if (v !~ /\./) exit 1;
|
||||||
exit 0;
|
exit 0;
|
||||||
}'; then
|
}'; then
|
||||||
error_exit "DMG build abort: invalid LABEL_PREFIX written to installer (value: \"${LABEL_ASSIGNED}\"). Check BUNDLE_ID and sed substitution." 1
|
error_exit "DMG build abort: invalid LABEL_PREFIX written to installer (value: \"${LABEL_ASSIGNED}\"). Check PROJECT_MACOS_BUNDLE_ID and sed substitution." 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user