X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2FLyX-Mac-binary-release.sh;h=8bad69d6121d83e4e289ee2c29ae45f19ce67e7b;hb=9be6a425df7e304356afee2998c962c91ea47a1f;hp=f0a2bfb48c47f02a9be63fd4a58d10e504f9f151;hpb=5ccb7da134cc8a8e2d3837f4d85e23f95d7aae6b;p=features.git diff --git a/development/LyX-Mac-binary-release.sh b/development/LyX-Mac-binary-release.sh index f0a2bfb48c..8bad69d612 100644 --- a/development/LyX-Mac-binary-release.sh +++ b/development/LyX-Mac-binary-release.sh @@ -47,7 +47,7 @@ LyXConfigureOptions="${LyXConfigureOptions} --disable-stdlib-debug" AspellConfigureOptions="--enable-warnings --enable-optimization=-O0 --enable-debug --disable-nls --enable-compile-in-filters --disable-pspell-compatibility" HunspellConfigureOptions="--with-warnings --disable-nls --disable-static" -QtMajorVersion=qt4 +QtMajorVersion=$(echo "${QtVersion}"|cut -d. -f1) QtConfigureOptions="${QtConfigureOptions} -opensource -silent -shared -confirm-license" # stupid special case... case "${QtVersion}:${QtAPI}" in @@ -63,7 +63,6 @@ case "${QtVersion}:${QtAPI}" in QtConfigureOptions="${QtConfigureOptions} -fast -no-strip" QtConfigureOptions="${QtConfigureOptions} -no-javascript-jit -no-pkg-config" QtConfigureOptions="${QtConfigureOptions} -nomake examples -nomake demos -nomake docs -nomake tools" - QtMajorVersion=qt5 ;; 5.6*|5.7*) QtConfigureOptions="${QtConfigureOptions} -no-strip" @@ -73,7 +72,6 @@ case "${QtVersion}:${QtAPI}" in QtConfigureOptions="${QtConfigureOptions} -skip qtquickcontrols" QtConfigureOptions="${QtConfigureOptions} -skip qttools" QtConfigureOptions="${QtConfigureOptions} -skip qtdeclarative" - QtMajorVersion=qt5 ;; 5.*) QtConfigureOptions="${QtConfigureOptions} -no-strip" @@ -82,7 +80,6 @@ case "${QtVersion}:${QtAPI}" in for component in ${QtSkipComponents} ; do QtConfigureOptions="${QtConfigureOptions} -skip ${component}" done - QtMajorVersion=qt5 ;; *) QtConfigureOptions="${QtConfigureOptions} -fast -no-exceptions" @@ -146,12 +143,12 @@ usage() { echo " --aspell-deployment=yes|no ." default yes echo " --with-qt-frameworks=yes|no." default no echo " --qt-deployment=yes|no ....." default yes - echo " --with-macosx-target=TARGET " default 10.4 "(Tiger)" echo " --with-sdkroot=SDKROOT ....." default 10.5 "(Leopard)" echo " --with-arch=ARCH ..........." default ppc,i386 echo " --with-build-path=PATH ....." default \${lyx-src-dir}/../lyx-build echo " --with-dmg-location=PATH ..." default \${build-path} echo " --with-binary-strip=yes ...." default no + echo " --codesign-identity=CSID ..." default is w/o CSID echo echo "All other arguments with -- are passed to configure" echo "including the defaults: ${LyXConfigureOptions}" @@ -189,8 +186,9 @@ while [ $# -gt 0 ]; do QTDIR=$(echo ${1}|cut -d= -f2) shift ;; - --with-macosx-target=*) + --with-macos-deployment-target=*) MACOSX_DEPLOYMENT_TARGET=$(echo ${1}|cut -d= -f2) + LyXConfigureOptions="${LyXConfigureOptions} ${1}" shift ;; --with-sdkroot=*) @@ -267,9 +265,15 @@ while [ $# -gt 0 ]; do aspell_deployment="no" shift ;; + --with-included-hunspell) + LyXConfigureOptions="${LyXConfigureOptions} ${1}" + hunspell_deployment="no" + shift + ;; --without-hunspell) LyXConfigureOptions="${LyXConfigureOptions} ${1}" hunspell_deployment="no" + hunspell_dictionaries="no" shift ;; --only-qt*=*) @@ -280,9 +284,8 @@ while [ $# -gt 0 ]; do LyxOnlyPackage=$(echo ${1}|cut -d= -f2) shift ;; - --enable-cxx11) - LyXConfigureOptions="${LyXConfigureOptions} ${1}" - EnableCXX11="--enable-cxx11" + --enable-cxx11|--enable-cxx-mode=*) + EnableCXXMode="${1}" shift ;; --*) @@ -328,7 +331,7 @@ QtBuildDir=${QtBuildDir:-"${LyxBuildDir}"/${QtBuildSubDir:-"qt-build"}} DictionarySourceDir=${DICTIONARYDIR:-$(dirname "${LyxSourceDir}")/dictionaries} DocumentationDir=$(dirname "${LyxSourceDir}")/Documents -DmgBackground="${LyxSourceDir}"/development/MacOSX/dmg-background.png +DmgBackground="${LyxSourceDir}"/development/MacOSX/dmg-background.tiff if [ -z "${LyXVersion}" ]; then LyXVersion=$(grep AC_INIT "${LyxSourceDir}"/configure.ac | cut -d, -f2 | tr -d " []()") @@ -360,13 +363,23 @@ case "${QtVersion}" in QtFrameworkVersion="5" ;; 5.12.*) - QtLibraries=${QtLibraries:-"QtDbus QtSvg QtXml QtPrintSupport QtMacExtras QtWidgets QtGui QtNetwork QtConcurrent QtCore"} + QtLibraries=${QtLibraries:-"QtDBus QtSvg QtXml QtPrintSupport QtMacExtras QtWidgets QtGui QtNetwork QtConcurrent QtCore"} QtFrameworkVersion="5" ;; 5*) QtLibraries=${QtLibraries:-"QtSvg QtXml QtPrintSupport QtMacExtras QtWidgets QtGui QtNetwork QtConcurrent QtCore"} QtFrameworkVersion="5" ;; +6*) + QtLibraries=${QtLibraries:-"QtCore5Compat QtDBus QtSvg QtXml QtPrintSupport QtSvgWidgets QtWidgets QtGui QtNetwork QtConcurrent QtCore"} + QtFrameworkVersion="A" + case "${EnableCXXMode}" in + --enable-cxx11|--enable-cxx-mode=11) + echo Warning: Adjust cxx standard "${EnableCXXMode}" for Qt 6. C++17 or better is required. + EnableCXXMode="--enable-cxx-mode=17" + ;; + esac + ;; *) QtLibraries=${QtLibraries:-"QtSvg QtXml QtGui QtNetwork QtCore"} QtFrameworkVersion="4" @@ -377,7 +390,7 @@ DMGNAME="${LyxBase}${LyXGitCommitHash:+-}${LyXGitCommitHash}" DMGSIZE="550m" # Check for existing SDKs -SDKs=$(echo ${DEVELOPER_SDKS}/MacOSX10*sdk) +SDKs=$(echo ${DEVELOPER_SDKS}/MacOSX1[01]*sdk) case $SDKs in *${SDKROOT}*) ;; @@ -404,6 +417,21 @@ esac MYCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" MYLDFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" +case "${EnableCXXMode}" in +--enable-cxx11|--enable-cxx-mode=11) + export CC=cc + export CXX="c++ -stdlib=libc++" + export CXXFLAGS=-std=c++11 + LyXConfigureOptions="${LyXConfigureOptions} --enable-cxx-mode=11" + ;; +--enable-cxx-mode=17) + export CC=cc + export CXX="c++ -stdlib=libc++" + export CXXFLAGS=-std=c++17 + LyXConfigureOptions="${LyXConfigureOptions} ${EnableCXXMode}" + ;; +esac + build_qt() { echo Build Qt library ${QtSourceDir} if [ "${QtInstallDir}" = "${QtBuildDir}" ]; then @@ -418,16 +446,6 @@ build_qt() { "${QtSourceDir}"/configure ${QtConfigureOptions} ${QTARCHS} -prefix "${QtInstallDir}" make -j1 && make -j1 install ) - if [ -d "${QtInstallDir}" -a ! -f "${QtInstallDir}"/include/QtCore ]; then - cd "${QtInstallDir}" && ( - mkdir -p include - cd include - for libnm in ${QtLibraries} ; do - test -d ${libnm} -o -L ${libnm} || \ - ( ln -s ../lib/${libnm}.framework/Headers ${libnm} && echo Link to framework ${libnm} ) - done - ) - fi } case ${QtOnlyPackage:-"no"} in @@ -638,15 +656,10 @@ LYX_BUNDLE_PATH="${LyxAppPrefix}/${BUNDLE_PATH}" build_lyx() { # Clear Output if [ -n "${LyxAppZip}" -a -f "${LyxAppZip}" ]; then rm "${LyxAppZip}"; fi - if [ -d "${LyxAppPrefix}" ]; then rm -rf "${LyxAppPrefix}"; fi - - case "${EnableCXX11}" in - "--enable-cxx11") - export CC=cc - export CXX="c++ -stdlib=libc++" - export CXXFLAGS=-std=c++11 - ;; - esac + if [ -d "${LyxAppPrefix}" ]; then + find "${LyxAppPrefix}" -type d -exec chmod u+w '{}' \; + rm -rf "${LyxAppPrefix}" + fi # ------------------------------------- # Automate configure check @@ -686,8 +699,8 @@ build_lyx() { if [ -d "${LyxBuildDir}" ]; then rm -r "${LyxBuildDir}"; fi mkdir -p "${LyxBuildDir}" && cd "${LyxBuildDir}" - CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYCFLAGS}" - LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch} ${MYLDFLAGS}" + CPPFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch}" + LDFLAGS="${SDKROOT:+-isysroot ${SDKROOT}} -arch ${arch}" if [ "$configure_qt_frameworks" = "yes" ]; then export QT_CORE_CFLAGS="-FQtCore" @@ -797,7 +810,9 @@ EOF test -d "${condir}/${fwdir}" || ( echo Copy framework "${source}/lib/"$(basename "${fwdir}") cp -pR "${source}/lib/"$(basename "${fwdir}") "${condir}/${fwdir}" - rm -f "${condir}/${fwdir}/${version}${libnm}"_debug + rm -f "${condir}/${fwdir}/${libnm}"_debug "${condir}/${fwdir}/${version}${libnm}"_debug + test -f "${condir}/${fwdir}/${libnm}".prl && mv "${condir}/${fwdir}/${libnm}".prl "${condir}/${fwdir}"/Resources + test -f "${condir}/${fwdir}/${libnm}"_debug.prl && mv "${condir}/${fwdir}/${libnm}"_debug.prl "${condir}/${fwdir}"/Resources installname -id "@executable_path/../${fwdir}/${version}${libnm}" "${condir}/${fwdir}/${version}${libnm}" find "${condir}/PlugIns" "${condir}/"$(dirname "${fwdir}") -name Headers -prune -o -type f -print | while read filename ; do if [ "${filename}" != "${target}" ]; then @@ -883,12 +898,19 @@ code_sign() { condir=$(content_directory "${target}"/lyx) appdir=$(dirname "${condir}") # have to sign frameworks first + for fwname in Aspell Hunspell LibMagic ; do + fwitem="${condir}"/$(framework_name "${fwname}") + if [ -d "${fwitem}" ]; then + codesign --verbose --force --sign "${CODESIGN_IDENTITY}" "${fwitem}" + fi + done for csitem in \ "${condir}"/Frameworks/Qt*.framework/Versions/${QtFrameworkVersion} \ - "${condir}"/Frameworks/*.framework/lib*.dylib \ "${condir}"/PlugIns/*/lib*.dylib \ "${condir}"/Library/Spotlight/* \ "${target}"/inkscape \ + "${target}"/lilypond \ + "${target}"/lilypond-book \ "${target}"/maxima \ "${target}"/tex2lyx \ "${target}"/lyxeditor \ @@ -933,12 +955,10 @@ copy_dictionaries() { cp -p -r "${ASpellInstallDir}/lib/aspell-0.60"/* "${ASpellResources}"/data cp -p -r "${ASpellInstallDir}/share/aspell"/* "${ASpellResources}"/dicts fi - if [ -d "${HunSpellInstallDir}" -a "yes" = "${hunspell_dictionaries}" ]; then + if [ -d "${DictionarySourceDir}" -a "yes" = "${hunspell_dictionaries}" ]; then HunSpellResources="${LyxAppPrefix}/Contents/Resources" - if [ -d "${DictionarySourceDir}" ]; then - ( cd "${DictionarySourceDir}" && find dicts -name .svn -prune -o -type f -print | cpio -pmdv "${HunSpellResources}" ) - deduplicate "${HunSpellResources}"/dicts - fi + ( cd "${DictionarySourceDir}" && find dicts -name .svn -prune -o -type f -print | cpio -pmdv "${HunSpellResources}" ) + deduplicate "${HunSpellResources}"/dicts fi if [ -d "${DictionarySourceDir}" -a "yes" = "${thesaurus_deployment}" ]; then MyThesResources="${LyxAppPrefix}/Contents/Resources" @@ -951,7 +971,7 @@ set_bundle_display_options() { X_BOUNDS=$2 Y_BOUNDS=$3 Y_POSITION=$((Y_BOUNDS - 65)) - Y_BOUNDS=$((Y_BOUNDS + 20)) + Y_BOUNDS=$((Y_BOUNDS + 50)) LYX_X_POSITION=$((X_BOUNDS / 4)) LYX_Y_POSITION=$Y_POSITION APP_X_POSITION=$((3 * X_BOUNDS / 4)) @@ -989,10 +1009,19 @@ set_bundle_display_options() { EOF } +# The image was made with with inkscape and tiffutil from dmg-background.svgz +make_image() { + INKSCAPE=/Applications/Inkscape.app/Contents/MacOS/inkscape + cd "${LyxSourceDir}"/development/MacOSX + ${INKSCAPE} --export-type=png -w 560 -o dmg-background.png dmg-background.svgz + ${INKSCAPE} --export-type=png -w 1120 -o dmg-background@2x.png dmg-background.svgz + tiffutil -cathidpicheck dmg-background.png dmg-background@2x.png -out dmg-background.tiff +} + make_dmg() { cd "${1}" - BGSIZE=$(file "$DmgBackground" | awk -F , '/PNG/{print $2 }' | tr x ' ') + BGSIZE=$(file "$DmgBackground" | awk -F , '/TIFF/{ print $10 $4 ;}/PNG/{ print $2; }'|sed -e 's/width=//' -e 's/height=//' -e 's/x//') BG_W=$(echo ${BGSIZE} | awk '{print $1 }') BG_H=$(echo ${BGSIZE} | awk '{print $2 }') @@ -1011,7 +1040,7 @@ make_dmg() { VOLUME=$(mount |grep ${DEVICE} | cut -f 3 -d ' ') # copy in the application bundle - ditto --hfsCompression "${LyxAppDir}.app" "${VOLUME}/${LyxName}.app" + ditto --hfsCompression "${LyxAppPrefix}" "${VOLUME}/${LyxName}.app" # copy in background image mkdir -p "${VOLUME}/Pictures" @@ -1020,7 +1049,7 @@ make_dmg() { ln -s /Applications/ "${VOLUME}"/Applications test -d "${DocumentationDir}" && ditto --hfsCompression "${DocumentationDir}" "${VOLUME}" set_bundle_display_options "${VOLUME}" ${BG_W} ${BG_H} - ${XCODE_DEVELOPER}/Tools/SetFile -a C "${VOLUME}" + PATH="${XCODE_DEVELOPER}/Tools:$PATH" SetFile -a C "${VOLUME}" mv "${VOLUME}/Pictures" "${VOLUME}/.Pictures" # Unmount the disk image @@ -1044,7 +1073,7 @@ build_package() { for arch in ${ARCH_LIST} ; do DMGARCH="${DMGARCH}-${arch}" done - QtDmgArchSuffix=${QtMajorVersion}${DMGARCH}${QtAPI}.dmg + QtDmgArchSuffix="qt"${QtMajorVersion}${DMGARCH}${QtAPI}.dmg test -n "${DMGLocation}" && ( make_dmg "${DMGLocation}" @@ -1063,7 +1092,8 @@ build_package() { if [ ${LyxOnlyPackage:-"no"} = "no" ]; then build_lyx convert_universal - test -n "${CODESIGN_IDENTITY}" && code_sign "${LYX_BUNDLE_PATH}" copy_dictionaries + test -n "${CODESIGN_IDENTITY}" && code_sign "${LYX_BUNDLE_PATH}" + find "${LyxAppPrefix}" -type d -exec chmod go-w '{}' \; fi build_package