From ac2bd96acee4029fb6c72edeaa6e78f3ba244674 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira de Lima Date: Tue, 6 Mar 2018 19:29:21 -0500 Subject: [PATCH] successful build with qt 5.9.4 and py 3.6.4 --- macbuild/ReadMe.md | 21 ++++ macbuild/Resources/KLayoutDMG.applescript | 116 ++++++++++++++++++++++ macbuild/build4mac_env.py | 6 +- 3 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 macbuild/Resources/KLayoutDMG.applescript diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md index 945bc212c..f27677548 100644 --- a/macbuild/ReadMe.md +++ b/macbuild/ReadMe.md @@ -84,4 +84,25 @@ $ ./makeDMG4mac.py -p qt5.pkg.macos-HighSierra-release -m ``` By: Kazzz (January 16, 2018) + +# 5. Alternative building options +### 5.1 Python 3.6 from brew, Qt 5.9.4 from offline installer + +Homebrew's installation of python3 places a `Python.framework` in `/usr/local/opt/python/Frameworks/Python.framework/`, which you can use to build KLayout from. Qt can be downloaded for [offline installation](https://www1.qt.io/offline-installers/). You can place it in your home folder: e.g. `/home/username/Qt5.9.4/`. Given these two dependencies, you can successfully compile KLayout with the following commands: + +``` +# Build step +./build4mac.py -p B36 -q Qt5Custom + +# Deploy step +./build4mac.py -p B36 -q Qt5Custom -y # normal deploy +./build4mac.py -p B36 -q Qt5Custom -y -v 3 2>&1 | tee qt5.pkg.macos-HighSierra-release.log # deploy with debug options + +# Packaging step +./makeDMG4mac.py -p qt5.pkg.macos-HighSierra-release -m -q Qt594 + +``` + +PS: If you get a syntax error in one of ruby's libraries because it is not compatible with C++11, do not fret. You only have to change one offending file. + [End of File] diff --git a/macbuild/Resources/KLayoutDMG.applescript b/macbuild/Resources/KLayoutDMG.applescript new file mode 100644 index 000000000..91a80a3ec --- /dev/null +++ b/macbuild/Resources/KLayoutDMG.applescript @@ -0,0 +1,116 @@ +------------------------------------------------------------------------------------------------- +(* + * Template File: + * macbuild/Resources/template-KLayoutDMG.applescript + * + * Actual AppleScrip File to be generated: + * macbuild/Resources/KLayoutDMG.applescript + * + * Description: + * A template AppleScript to make a fancy DMG installer of KLayout + * (http://www.klayout.de/index.php) bundles. + * "makeDMG4mac.py" will read this template and generate the actual AppleScript to execute. + * Values to be found and replaced by "makeDMG4mac.py" are marked by ${KEYWORD}. + * + * The background image was designed using Logoist2 (http://www.syniumsoftware.com/en/logoist) + * and exported to a PNG file of 1000 x 700 pix size. + *----------------------------------------------------------------------------------------------- + * This is a derivative work of Ref. 2) below. Refer to "macbuild/LICENSE" file. + * Ref. + * 1) https://el-tramo.be/guides/fancy-dmg/ + * 2) https://github.com/andreyvit/create-dmg.git + *) +------------------------------------------------------------------------------------------------- +on run (volumeName) -- most likely, the volume name is "KLayout" + tell application "Finder" + tell disk (volumeName as string) + -- [1] Open the volume + open + + -- [2] Set the key coordinates and windows size + -- The size of given background PNG image is 1000 x 700 pix + -- ORGX = [50] pix + -- ORGY = [100] pix + -- WIN_WIDTH = [1000] pix + -- WIN_HEIGHT = [700] pix + set posMargin to 50 + set negMargin to 10 + set theTopLeftX to 50 + set theTopLeftY to 100 + set theWidth to 1000 + set theHeight to 700 + set theBottomRightX to (theTopLeftX + theWidth + posMargin) + set theBottomRightY to (theTopLeftY + theHeight + posMargin) + + -- [3] Set the full path to .DS_Store file + set dotDSStore to "/Volumes/KLayout/.DS_Store" + + -- [4] Set global view options + tell container window + set current view to icon view + set toolbar visible to false + set statusbar visible to false + set statusbar visible to false + set bounds to {theTopLeftX, theTopLeftY, theBottomRightX, theBottomRightY} + set position of every item to {theTopLeftX + 150, theTopLeftY + 350} + end tell + + -- [5] Set icon view options + set opts to the icon view options of container window + tell opts + set icon size to 80 + set text size to 16 + set arrangement to not arranged + end tell + + -- [6] Set the background PNG image (1000 x 700 pix) file name stored + set background picture of opts to file ".background:KLayoutDMG-Back.png" + + -- [7] Set positions of each icon + -- ITEM_1 = klayout.app {960, 140} + -- ITEM_2 = klayout.scripts {610, 140} + -- ITEM_3 = Applications {790, 140} + set position of item "klayout.app" to {960, 140} + set position of item "klayout.scripts" to {610, 140} + set position of item "Applications" to {790, 140} + + -- [8] Update the contents of container + close + open + update without registering applications + + -- [9] Force save the negatively resized window size + delay 2 + tell container window + set statusbar visible to false + set bounds to {theTopLeftX, theTopLeftY, theBottomRightX - negMargin, theBottomRightY - negMargin} + end tell + update without registering applications + end tell + + -- [10] Restore back the original window size + delay 2 + tell disk (volumeName as string) + tell container window + set statusbar visible to false + set bounds to {theTopLeftX, theTopLeftY, theBottomRightX, theBottomRightY} + end tell + update without registering applications + end tell + + -- [11] Wait for some time so that "Finder" can complete writing to .DS_Store file + delay 3 + set elapsedTime to 0 + set ejected to false + repeat while ejected is false + delay 1 + set elapsedTime to elapsedTime + 1 + if (do shell script "[ -f " & dotDSStore & " ]; echo $?") = "0" then set ejected to true + end repeat + log "### Elapsed <" & elapsedTime & "> [sec] for writing .DS_Store file." + end tell +end run + +-- +-- End of file +-- diff --git a/macbuild/build4mac_env.py b/macbuild/build4mac_env.py index 359d3f207..dfc2d9f68 100755 --- a/macbuild/build4mac_env.py +++ b/macbuild/build4mac_env.py @@ -192,9 +192,9 @@ Python36MacPorts= { 'exe': '/opt/local/Library/Frameworks/Python.framework/Versi # Python 3.6 from Brew *+*+*+ EXPERIMENTAL *+*+*+ # [Key Type Name] = 'pybrew' -Python36Brew= { 'exe': '/usr/local/Cellar/python3/3.6.4_3/Frameworks/Python.framework/Versions/3.6/bin/python3.6m' , - 'inc': '/usr/local/Cellar/python3/3.6.4_3/Frameworks/Python.framework/Versions/3.6/include/python3.6m', - 'lib': '/usr/local/Cellar/python3/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib' +Python36Brew= { 'exe': '/usr/local/opt/python3/Frameworks/Python.framework/Versions/Current/bin/python3.6m' , + 'inc': '/usr/local/opt/python3/Frameworks/Python.framework/Versions/Current/include/python3.6m', + 'lib': '/usr/local/opt/python3/Frameworks/Python.framework/Versions/Current/lib/libpython3.6m.dylib' } # Consolidated dictionary kit for Python