diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md
index 4bf2aeb5b3..f11a326abd 100644
--- a/macbuild/ReadMe.md
+++ b/macbuild/ReadMe.md
@@ -1,16 +1,17 @@
-Relevant KLayout version: 0.30.5
+Relevant KLayout version: 0.30.9
Author: Kazzz-S
-Last modified: 2025-11-10
+Last modified: 2026-07-26
# 1. Introduction
-This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.30.5 or later for different 64-bit macOS, including:
+This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.30.9 or later for different 64-bit macOS, including:
+* Golden Gate (27.x) : really experimental (on M4 Mac Mini)
* Tahoe (26.x) : really experimental (on M4 Mac Mini)
* Sequoia (15.x) : the primary development environment
* Sonoma (14.x) : experimental
Building KLayout for the previous operating systems listed below has been discontinued.
Pre-built DMG packages are also not provided.
-As of today (November 2025), Homebrew classifies macOS Catalina 10.15 - Ventura 13 as Tier 3.
+As of November 2025, Homebrew classifies macOS Catalina 10.15 - Ventura 13 as Tier 3.
* Ventura (13.7.8; the build would still be possible)
* Monterey (12.7.6; the build would still be possible)
* Big Sur (11.7.10)
@@ -47,7 +48,7 @@ Then, follow the instructions in Section 6F.
The migration work to "Qt6" is ongoing. You can try to use it; however, you might encounter some build or runtime errors.
If you use **Homebrew** to build KLayout >= 0.29.0, you need "Qt6" to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599).
-I have also tried migrating to "Python 3.13.x" (earlier, Python 3.12.x) in this version.
+I have also tried migrating to "Python 3.14.x" (earlier, Python 3.13.x) in this version.
# 3. Script language support: Ruby and Python
@@ -72,7 +73,7 @@ The operating system type is detected automatically.
```
-----------------------------------------------------------------------------------------------------------
<< Usage of 'build4mac.py' >>
- for building KLayout 0.30.5 or later on different Apple macOS platforms.
+ for building KLayout 0.30.9 or later on different Apple macOS platforms.
$ [python] ./build4mac.py
option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details) | default value
@@ -88,27 +89,27 @@ $ [python] ./build4mac.py
: (*) migration to Qt6 is ongoing |
[-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP34', 'HB34', 'Ana3'] | sys
: nil: don't bind Ruby |
- : Sys: use [Tahoe|Sequoia|Sonoma]-bundled Ruby 2.6 |
+ : Sys: use [GoldenGate|Tahoe|Sequoia|Sonoma]-bundled Ruby 2.6 |
: MP34: use Ruby 3.4 from MacPorts |
: HB34: use Ruby 3.4 from Homebrew |
: Ana3: use Ruby 3.4 from Anaconda3 |
- [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP313', 'HB313', 'Ana3', | sys
- : 'MP312', 'MP312', |
- : 'MP311', 'HB311', 'HBAuto'] |
+ [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP314', 'HB314', 'Ana3', | sys
+ : 'MP314', 'HB314', |
+ : 'HB311', 'HBAuto'] |
: nil: don't bind Python |
- : Sys: use [Tahoe|Sequoia|Sonoma]-bundled Python 3.9 |
- : MP313: use Python 3.13 from MacPorts |
- : HB313: use Python 3.13 from Homebrew |
- : Ana3: use Python 3.13 from Anaconda3 |
- : MP312: use Python 3.12 from MacPorts |
- : HB312: use Python 3.12 from Homebrew |
- : MP311: use Python 3.11 from MacPorts |
+ : Sys: use [GoldenGate|Tahoe|Sequoia|Sonoma]-bundled Python 3.9 |
+ : MP314: use Python 3.14 from MacPorts |
+ : HB314: use Python 3.14 from Homebrew |
+ : Ana3: use Python 3.14 from Anaconda3 |
+ : MP314: use Python 3.14 from MacPorts |
+ : HB314: use Python 3.14 from Homebrew |
: HB311: use Python 3.11 from Homebrew (+) |
: (+) required to provide the legacy pip in HW-*.dmg |
: HBAuto: use the latest Python 3.x auto-detected from Homebrew |
[-P|--buildPymod] : build and deploy Pymod (*.whl) for LW-*.dmg | disabled
[-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled
[-u|--noqtuitools] : don't include uitools in Qt binding | disabled
+ [-s|--no32bitcoord] : don't use short (32bit) coordinates; use long (64bit) instead | disabled
[-g|--nolibgit2] : don't include libgit2 for Git package support | disabled
[-m|--make ] : option passed to 'make' | '--jobs=4'
[-d|--debug] : enable debug mode build; AddressSanitizer (ASAN) is linked | disabled
@@ -160,27 +161,28 @@ $ ./build4mac.py -q qt5macports -r sys -p sys
$ ./build4mac.py -q qt5macports -r sys -p sys -y
```
The application bundle **`klayout.app`** is located under:
- **`ST-qt5MP.pkg.macos-Sequoia-release-RsysPsys`** directory, where
+ **`ST-qt5MP.pkg.macos-Sequoia-C32-release-RsysPsys`** directory, where
* "ST-" means this is a standard package.
* "qt5MP" means that Qt5 from MacPorts is used.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
* "RsysPsys" means that Ruby is 2.6 provided by OS; Python is 3.9 provided by OS.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
-### 6B. Fully MacPorts-flavored build with MacPorts Ruby 3.4 and MacPorts Python 3.13
-0. Install MacPorts, then install Qt5, Ruby 3.4, Python 3.13, and libgit2 by
+### 6B. Fully MacPorts-flavored build with MacPorts Ruby 3.4 and MacPorts Python 3.14
+0. Install MacPorts, then install Qt5, Ruby 3.4, Python 3.14, and libgit2 by
```
$ sudo port install coreutils
$ sudo port install findutils
$ sudo port install qt5
$ sudo port install ruby34
-$ sudo port install python313
-$ sudo port install py313-pip
+$ sudo port install python314
+$ sudo port install py314-pip
$ sudo port install libgit2
```
1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
-$ ./build4mac.py -q qt5macports -r mp34 -p mp313
+$ ./build4mac.py -q qt5macports -r mp34 -p mp314
```
2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.
@@ -188,50 +190,52 @@ $ ./build4mac.py -q qt5macports -r mp34 -p mp313
If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Standalone Python Package (\*.whl) will be built and deployed under **klayout.app/Contents/pymod-dist/**.
```
-$ ./build4mac.py -q qt5macports -r mp34 -p mp313 -Y
+$ ./build4mac.py -q qt5macports -r mp34 -p mp314 -Y
```
The application bundle **`klayout.app`** is located under:
- **`LW-qt5MP.pkg.macos-Sequoia-release-Rmp34Pmp313`** directory, where
+ **`LW-qt5MP.pkg.macos-Sequoia-C32-release-Rmp34Pmp314`** directory, where
* "LW-" means this is a lightweight package.
* "qt5MP" means that Qt5 from MacPorts is used.
-* "Rmp34Pmp313" means that Ruby is 3.4 from MacPorts; Python is 3.13 from MacPorts.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
+* "Rmp34Pmp314" means that Ruby is 3.4 from MacPorts; Python is 3.14 from MacPorts.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
-### 6C. Fully Homebrew-flavored build with Homebrew Ruby 3.4 and Homebrew Python 3.13
+### 6C. Fully Homebrew-flavored build with Homebrew Ruby 3.4 and Homebrew Python 3.14
> [!IMPORTANT]
> To build KLayout >= 0.29.0, you need "Qt6" >= 6.7.0 to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599).
-0. Install Homebrew, then install Qt6, Ruby 3.4, Python 3.13, and libgit2 by
+0. Install Homebrew, then install Qt6, Ruby 3.4, Python 3.14, and libgit2 by
```
$ brew install qt@6
$ brew install ruby@3.4
-$ brew install python@3.13
+$ brew install python@3.14
$ brew install libgit2
$ cd /where/'build.sh'/exists
$ cd macbuild
-$ ./python3HB.py -v 3.13
+$ ./python3HB.py -v 3.14
```
1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
-$ ./build4mac.py -q qt6brew -r hb34 -p hb313
+$ ./build4mac.py -q qt6brew -r hb34 -p hb314
```
2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.
```
-$ ./build4mac.py -q qt6brew -r hb34 -p hb313 -Y
+$ ./build4mac.py -q qt6brew -r hb34 -p hb314 -Y
```
The application bundle **`klayout.app`** is located under:
- **`LW-qt6Brew.pkg.macos-Sequoia-release-Rhb34Phb313`** directory, where
+ **`LW-qt6Brew.pkg.macos-Sequoia-C32-release-Rhb34Phb314`** directory, where
* "LW-" means this is a lightweight package.
* "qt6Brew" means that Qt6 from Homebrew is used.
-* "Rhb34Phb313" means that Ruby is 3.4 from Homebrew; Python is 3.13 from Homebrew.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
+* "Rhb34Phb314" means that Ruby is 3.4 from Homebrew; Python is 3.14 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
> [!WARNING]
-> We can no longer use the legacy **pip** command with Homebew Python@3.13, and we will get,
+> We can no longer use the legacy **pip** command with Homebew Python@3.12-, and we will get,
> ```
> error: externally-managed-environment
> ```
@@ -264,9 +268,10 @@ $ ./build4mac.py -q qt6brew -r sys -p hb311
$ ./build4mac.py -q qt6brew -r sys -p hb311 -y
```
The application bundle **`klayout.app`** is located under:
- **`HW-qt6Brew.pkg.macos-Sequoia-release-RsysPhb311`** directory, where
+ **`HW-qt6Brew.pkg.macos-Sequoia-C32-release-RsysPhb311`** directory, where
* "HW-" means this is a heavyweight package because both Qt6 and Python Frameworks are deployed.
* "qt6Brew" means that Qt6 from Homebrew is used.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
* "RsysPhb311" means that Ruby is OS-bundled; Python is 3.11 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
> [!IMPORTANT]
@@ -306,9 +311,10 @@ $ ./build4mac.py -q qt5macports -r sys -p hb311
$ ./build4mac.py -q qt5macports -r sys -p hb311 -y
```
The application bundle **`klayout.app`** is located under:
- **`HW-qt5MP.pkg.macos-Sequoia-release-RsysPhb311`** directory, where
+ **`HW-qt5MP.pkg.macos-Sequoia-C32-release-RsysPhb311`** directory, where
* "HW-" means this is a heavyweight package because both Qt5 and Python Frameworks are deployed.
* "qt5MP" means that Qt5 from MacPorts is used.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
* "RsysPhb311" means that Ruby is OS-bundled; Python is 3.11 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
@@ -355,9 +361,10 @@ $ ./build4mac.py -q qt6ana3 -r ana3 -p ana3
$ ./build4mac.py -q qt6ana3 -r ana3 -p ana3 -Y
```
The application bundle **`klayout.app`** is located under:
- **`LW-qt6Ana3.pkg.macos-Sequoia-release-Rana3Pana3`** directory, where
+ **`LW-qt6Ana3.pkg.macos-Sequoia-C32-release-Rana3Pana3`** directory, where
* "LW-" means this is a lightweight package.
* "qt6Ana3" means that Qt6 from Anaconda3 is used.
+* "C32" means that the coordinate representation is a 32-bit integer (C64, for 64-bit).
* "Rana3Pana3" means that Ruby (3.4) is from Anaconda3; Python (3.13) is from Anaconda3.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
5. Now, you need to create an Automator wrapper app (Launcher) to start the application.
@@ -420,11 +427,11 @@ makeDMG4mac.py -> macbuild/makeDMG4mac.py
2. Invoke **`makeDMG4mac.py`** with -p and -m options, for example,
```
$ cd /where/'build.sh'/exists
-$ ./makeDMG4mac.py -p LW-qt5MP.pkg.macos-Sequoia-release-Rmp34Pmp313 -m
+$ ./makeDMG4mac.py -p LW-qt5MP.pkg.macos-Sequoia-C32-release-Rmp34Pmp314 -m
```
This command will generate the two files below:
-* **`LW-klayout-0.30.5-macOS-Sequoia-1-qt5MP-Rmp34Pmp313.dmg`** ---(1) the main DMG file
-* **`LW-klayout-0.30.5-macOS-Sequoia-1-qt5MP-Rmp34Pmp313.dmg.md5`** ---(2) MD5-value text file
+* **`LW-klayout-0.30.9-macOS-Sequoia-C32-1-qt5MP-Rmp34Pmp314.dmg`** ---(1) the main DMG file
+* **`LW-klayout-0.30.9-macOS-Sequoia-C32-1-qt5MP-Rmp34Pmp314.dmg.md5`** ---(2) MD5-value text file
# Known issues
Because we assume some specific versions of non-OS-standard Ruby and Python, updating Homebrew, MacPorts, or Anaconda3 may cause build- and link errors.
diff --git a/macbuild/Resources/KLayoutDMG-BackQt5-Mx.logoist b/macbuild/Resources/KLayoutDMG-BackQt5-Mx.logoist
index 3c0a6aa8a5..2b24975139 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt5-Mx.logoist and b/macbuild/Resources/KLayoutDMG-BackQt5-Mx.logoist differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt5-Mx.png b/macbuild/Resources/KLayoutDMG-BackQt5-Mx.png
index 239bac0231..35104b9a2f 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt5-Mx.png and b/macbuild/Resources/KLayoutDMG-BackQt5-Mx.png differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt5-X86.logoist b/macbuild/Resources/KLayoutDMG-BackQt5-X86.logoist
index a2a6f5fd29..ebe6009161 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt5-X86.logoist and b/macbuild/Resources/KLayoutDMG-BackQt5-X86.logoist differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt5-X86.png b/macbuild/Resources/KLayoutDMG-BackQt5-X86.png
index 49c9d6365f..75e04fac8d 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt5-X86.png and b/macbuild/Resources/KLayoutDMG-BackQt5-X86.png differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt6-Mx.logoist b/macbuild/Resources/KLayoutDMG-BackQt6-Mx.logoist
index fd54e99c26..c106f9dccb 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt6-Mx.logoist and b/macbuild/Resources/KLayoutDMG-BackQt6-Mx.logoist differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt6-Mx.png b/macbuild/Resources/KLayoutDMG-BackQt6-Mx.png
index 3c90f7394d..ee82af6186 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt6-Mx.png and b/macbuild/Resources/KLayoutDMG-BackQt6-Mx.png differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt6-X86.logoist b/macbuild/Resources/KLayoutDMG-BackQt6-X86.logoist
index 14ad622505..0576913429 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt6-X86.logoist and b/macbuild/Resources/KLayoutDMG-BackQt6-X86.logoist differ
diff --git a/macbuild/Resources/KLayoutDMG-BackQt6-X86.png b/macbuild/Resources/KLayoutDMG-BackQt6-X86.png
index d266966e54..c03eeb31ca 100644
Binary files a/macbuild/Resources/KLayoutDMG-BackQt6-X86.png and b/macbuild/Resources/KLayoutDMG-BackQt6-X86.png differ
diff --git a/macbuild/Resources/script-bundle-A.zip b/macbuild/Resources/script-bundle-A.zip
index ec40f25b00..ab8995a9eb 100644
Binary files a/macbuild/Resources/script-bundle-A.zip and b/macbuild/Resources/script-bundle-A.zip differ
diff --git a/macbuild/Resources/script-bundle-B.zip b/macbuild/Resources/script-bundle-B.zip
index 4428a3f0e0..c36c282057 100644
Binary files a/macbuild/Resources/script-bundle-B.zip and b/macbuild/Resources/script-bundle-B.zip differ
diff --git a/macbuild/Resources/script-bundle-H.zip b/macbuild/Resources/script-bundle-H.zip
index b25794db4c..e04e7ac85b 100644
Binary files a/macbuild/Resources/script-bundle-H.zip and b/macbuild/Resources/script-bundle-H.zip differ
diff --git a/macbuild/Resources/script-bundle-P.zip b/macbuild/Resources/script-bundle-P.zip
index faa4c33e6c..511ef145b8 100644
Binary files a/macbuild/Resources/script-bundle-P.zip and b/macbuild/Resources/script-bundle-P.zip differ
diff --git a/macbuild/Resources/script-bundle-S.zip b/macbuild/Resources/script-bundle-S.zip
index c9f66a282a..4cf6283f5b 100644
Binary files a/macbuild/Resources/script-bundle-S.zip and b/macbuild/Resources/script-bundle-S.zip differ
diff --git a/macbuild/build4mac.py b/macbuild/build4mac.py
index 056fc29e27..c62eda9946 100755
--- a/macbuild/build4mac.py
+++ b/macbuild/build4mac.py
@@ -5,7 +5,7 @@
# File: "macbuild/build4mac.py"
#
# The top Python script for building KLayout (http://www.klayout.de/index.php).
-# version 0.30.5 or later on different Apple Mac OSX platforms.
+# version 0.30.9 or later on different Apple Mac OSX platforms.
#===============================================================================
import sys
import os
@@ -36,7 +36,7 @@
# @return (usage, moduleset)-tuple
#-------------------------------------------------------------------------------
def GenerateUsage(platform):
- if platform.upper() in [ "TAHOE", "SEQUOIA", "SONOMA", "VENTURA", "MONTEREY" ]: # with Xcode [13.1 .. ]
+ if platform.upper() in [ "GOLDENGATE", "TAHOE", "SEQUOIA", "SONOMA", "VENTURA", "MONTEREY" ]: # with Xcode [13.1 .. ]
myQt56 = "qt5macports"
myRuby = "sys"
myPython = "sys"
@@ -47,7 +47,7 @@ def GenerateUsage(platform):
usage = "\n"
usage += "-----------------------------------------------------------------------------------------------------------\n"
usage += "<< Usage of 'build4mac.py' >>\n"
- usage += " for building KLayout 0.30.5 or later on different Apple macOS platforms.\n"
+ usage += " for building KLayout 0.30.9 or later on different Apple macOS platforms.\n"
usage += "\n"
usage += "$ [python] ./build4mac.py\n"
usage += " option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details) | default value\n"
@@ -63,27 +63,27 @@ def GenerateUsage(platform):
usage += " : (*) migration to Qt6 is ongoing |\n"
usage += " [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP34', 'HB34', 'Ana3'] | %s\n" % myRuby
usage += " : nil: don't bind Ruby |\n"
- usage += " : Sys: use [Tahoe|Sequoia|Sonoma]-bundled Ruby 2.6 |\n"
+ usage += " : Sys: use [GoldenGate|Tahoe|Sequoia|Sonoma]-bundled Ruby 2.6 |\n"
usage += " : MP34: use Ruby 3.4 from MacPorts |\n"
usage += " : HB34: use Ruby 3.4 from Homebrew |\n"
usage += " : Ana3: use Ruby 3.4 from Anaconda3 |\n"
- usage += " [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP313', 'HB313', 'Ana3', | %s\n" % myPython
- usage += " : 'MP312', 'MP312', |\n"
- usage += " : 'MP311', 'HB311', 'HBAuto'] |\n"
+ usage += " [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP314', 'HB314', 'Ana3', | %s\n" % myPython
+ usage += " : 'MP313', 'HB313', |\n"
+ usage += " : 'HB311', 'HBAuto'] |\n"
usage += " : nil: don't bind Python |\n"
- usage += " : Sys: use [Tahoe|Sequoia|Sonoma]-bundled Python 3.9 |\n"
+ usage += " : Sys: use [GoldenGate|Tahoe|Sequoia|Sonoma]-bundled Python 3.9 |\n"
+ usage += " : MP314: use Python 3.14 from MacPorts |\n"
+ usage += " : HB314: use Python 3.14 from Homebrew |\n"
+ usage += " : Ana3: use Python 3.13 from Anaconda3 |\n"
usage += " : MP313: use Python 3.13 from MacPorts |\n"
usage += " : HB313: use Python 3.13 from Homebrew |\n"
- usage += " : Ana3: use Python 3.13 from Anaconda3 |\n"
- usage += " : MP312: use Python 3.12 from MacPorts |\n"
- usage += " : HB312: use Python 3.12 from Homebrew |\n"
- usage += " : MP311: use Python 3.11 from MacPorts |\n"
usage += " : HB311: use Python 3.11 from Homebrew (+) |\n"
usage += " : (+) required to provide the legacy pip in HW-*.dmg |\n"
usage += " : HBAuto: use the latest Python 3.x auto-detected from Homebrew |\n"
usage += " [-P|--buildPymod] : build and deploy Pymod (*.whl) for LW-*.dmg | disabled\n"
usage += " [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled\n"
usage += " [-u|--noqtuitools] : don't include uitools in Qt binding | disabled\n"
+ usage += " [-s|--no32bitcoord] : don't use short (32bit) coordinates; use long (64bit) instead | disabled\n"
usage += " [-g|--nolibgit2] : don't include libgit2 for Git package support | disabled\n"
usage += " [-m|--make ] : option passed to 'make' | '--jobs=4'\n"
usage += " [-d|--debug] : enable debug mode build; AddressSanitizer (ASAN) is linked | disabled\n"
@@ -123,7 +123,9 @@ def Get_Default_Config():
# Dropped [ElCapitan - BigSur] (2023-10-24).
# See 415b5aa2efca04928f1148a69e77efd5d76f8c1d for the previous states.
#----------------------------------------------------------------------------
- if release == 25:
+ if release == 27:
+ Platform = "GoldenGate"
+ elif release == 25:
Platform = "Tahoe"
elif release == 24:
Platform = "Sequoia"
@@ -142,7 +144,7 @@ def Get_Default_Config():
if not Machine == "x86_64":
# with an Apple Silicon Chip?
- if Machine == "arm64" and Platform in ["Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey"]:
+ if Machine == "arm64" and Platform in ["GoldenGate", "Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey"]:
print("")
print( "### Your Mac equips an Apple Silicon Chip ###" )
print( " Setting QMAKE_APPLE_DEVICE_ARCHS=arm64\n")
@@ -160,7 +162,11 @@ def Get_Default_Config():
ToolDebug = list()
# Set the default modules
- if Platform == "Tahoe":
+ if Platform == "GoldenGate":
+ ModuleQt = "Qt5MacPorts"
+ ModuleRuby = "Sys"
+ ModulePython = "Sys"
+ elif Platform == "Tahoe":
ModuleQt = "Qt5MacPorts"
ModuleRuby = "Sys"
ModulePython = "Sys"
@@ -189,6 +195,7 @@ def Get_Default_Config():
NonOSStdLang = False
NoQtBindings = False
NoQtUiTools = False
+ No32bitCoord = False
NoLibGit2 = False
MakeOptions = "--jobs=4"
DebugMode = False
@@ -214,6 +221,7 @@ def Get_Default_Config():
config['NonOSStdLang'] = NonOSStdLang # True if non-OS-standard language is chosen
config['NoQtBindings'] = NoQtBindings # True if not creating Qt bindings for Ruby scripts
config['NoQtUiTools'] = NoQtUiTools # True if not to include QtUiTools in Qt binding
+ config['No32bitCoord'] = No32bitCoord # True if not use the short (32bit) coordinate
config['NoLibGit2'] = NoLibGit2 # True if not to include libgit2 for Git package support
config['MakeOptions'] = MakeOptions # options passed to `make`
config['DebugMode'] = DebugMode # True if debug mode build
@@ -259,6 +267,7 @@ def Parse_CLI_Args(config):
NonOSStdLang = config['NonOSStdLang']
NoQtBindings = config['NoQtBindings']
NoQtUiTools = config['NoQtUiTools']
+ No32bitCoord = config['No32bitCoord']
NoLibGit2 = config['NoLibGit2']
MakeOptions = config['MakeOptions']
DebugMode = config['DebugMode']
@@ -287,7 +296,7 @@ def Parse_CLI_Args(config):
p.add_option( '-p', '--python',
dest='type_python',
- help="Python type=['nil', 'Sys', 'MP313', 'HB313', 'Ana3', 'MP312', 'HB312', 'MP311', 'HB311', 'HBAuto']" )
+ help="Python type=['nil', 'Sys', 'MP314', 'HB314', 'Ana3', 'MP313', 'HB313', 'HB311', 'HBAuto']" )
p.add_option( '-P', '--buildPymod',
action='store_true',
@@ -307,6 +316,12 @@ def Parse_CLI_Args(config):
default=False,
help="don't include uitools in Qt binding" )
+ p.add_option( '-s', '--no32bitcoord',
+ action='store_true',
+ dest='no_32_bitcoord',
+ default=False,
+ help="don't use short (32bit) coordinates; use long (64bit) instead " )
+
p.add_option( '-g', '--nolibgit2',
action='store_true',
dest='no_libgit2',
@@ -356,13 +371,14 @@ def Parse_CLI_Args(config):
default=False,
help='check usage' )
- if Platform.upper() in [ "TAHOE", "SEQUOIA", "SONOMA", "VENTURA", "MONTEREY" ]: # with Xcode [13.1 .. ]
+ if Platform.upper() in [ "GOLDENGATE", "TAHOE", "SEQUOIA", "SONOMA", "VENTURA", "MONTEREY" ]: # with Xcode [13.1 .. ]
p.set_defaults( type_qt = "qt5macports",
type_ruby = "sys",
type_python = "sys",
build_pymod_whl = False,
no_qt_binding = False,
no_qt_uitools = False,
+ no_32_bitcoord = False,
no_libgit2 = False,
make_option = "--jobs=4",
debug_build = False,
@@ -432,7 +448,9 @@ def Parse_CLI_Args(config):
if choiceRuby == "nil":
ModuleRuby = 'nil'
elif choiceRuby == "Sys":
- if Platform == "Tahoe":
+ if Platform == "GoldenGate":
+ ModuleRuby = 'RubyGoldenGate'
+ elif Platform == "Tahoe":
ModuleRuby = 'RubyTahoe'
elif Platform == "Sequoia":
ModuleRuby = 'RubySequoia'
@@ -465,12 +483,11 @@ def Parse_CLI_Args(config):
candidates = dict()
candidates['NIL'] = 'nil'
candidates['SYS'] = 'Sys'
+ candidates['MP314'] = 'MP314'
+ candidates['HB314'] = 'HB314'
+ candidates['ANA3'] = 'Ana3'
candidates['MP313'] = 'MP313'
candidates['HB313'] = 'HB313'
- candidates['ANA3'] = 'Ana3'
- candidates['MP312'] = 'MP312'
- candidates['HB312'] = 'HB312'
- candidates['MP311'] = 'MP311'
candidates['HB311'] = 'HB311'
candidates['HBAUTO'] = 'HBAuto'
try:
@@ -484,7 +501,10 @@ def Parse_CLI_Args(config):
ModulePython = 'nil'
OSPython3FW = None
elif choicePython == "Sys":
- if Platform == "Tahoe":
+ if Platform == "GoldenGate":
+ ModulePython = 'PythonGoldenGate'
+ OSPython3FW = GoldenGatePy3FW
+ elif Platform == "Tahoe":
ModulePython = 'PythonTahoe'
OSPython3FW = TahoePy3FW
elif Platform == "Sequoia":
@@ -499,12 +519,12 @@ def Parse_CLI_Args(config):
elif Platform == "Monterey":
ModulePython = 'PythonMonterey'
OSPython3FW = MontereyPy3FW
- elif choicePython == "MP313":
- ModulePython = 'Python313MacPorts'
+ elif choicePython == "MP314":
+ ModulePython = 'Python314MacPorts'
OSPython3FW = None
NonOSStdLang = True
- elif choicePython == "HB313":
- ModulePython = 'Python313Brew'
+ elif choicePython == "HB314":
+ ModulePython = 'Python314Brew'
OSPython3FW = None
NonOSStdLang = True
elif choicePython == "Ana3":
@@ -514,12 +534,12 @@ def Parse_CLI_Args(config):
ModulePython = 'PythonAnaconda3V6'
OSPython3FW = None
NonOSStdLang = True
- elif choicePython == "MP312":
- ModulePython = 'Python312MacPorts'
+ elif choicePython == "MP313":
+ ModulePython = 'Python313MacPorts'
OSPython3FW = None
NonOSStdLang = True
- elif choicePython == "HB312":
- ModulePython = 'Python312Brew'
+ elif choicePython == "HB313":
+ ModulePython = 'Python313Brew'
OSPython3FW = None
NonOSStdLang = True
elif choicePython == "HB311":
@@ -544,6 +564,7 @@ def Parse_CLI_Args(config):
BuildPymodWhl = opt.build_pymod_whl
NoQtBindings = opt.no_qt_binding
NoQtUiTools = opt.no_qt_uitools
+ No32bitCoord = opt.no_32_bitcoord
NoLibGit2 = opt.no_libgit2
MakeOptions = opt.make_option
DebugMode = opt.debug_build
@@ -630,6 +651,7 @@ def Parse_CLI_Args(config):
config['NonOSStdLang'] = NonOSStdLang
config['NoQtBindings'] = NoQtBindings
config['NoQtUiTools'] = NoQtUiTools
+ config['No32bitCoord'] = No32bitCoord
config['NoLibGit2'] = NoLibGit2
config['MakeOptions'] = MakeOptions
config['DebugMode'] = DebugMode
@@ -674,6 +696,7 @@ def Get_Build_Parameters(config):
ModuleSet = config['ModuleSet']
NoQtBindings = config['NoQtBindings']
NoQtUiTools = config['NoQtUiTools']
+ No32bitCoord = config['No32bitCoord']
NoLibGit2 = config['NoLibGit2']
MakeOptions = config['MakeOptions']
DebugMode = config['DebugMode']
@@ -701,34 +724,46 @@ def Get_Build_Parameters(config):
(qt, ruby, python) = ModuleSet # ( 'qt6Brew', 'Sys', 'Sys' )
ruby_python = "R%sP%s" % ( ruby.lower(), python.lower() )
- # (C) Target directories and files
- MacPkgDir = "%s%s.pkg.macos-%s-%s-%s" % (PackagePrefix, qt, Platform, mode, ruby_python)
- MacBinDir = "%s.bin.macos-%s-%s-%s" % ( qt, Platform, mode, ruby_python)
- MacBuildDir = "%s.build.macos-%s-%s-%s" % ( qt, Platform, mode, ruby_python)
- MacBuildLog = "%s.build.macos-%s-%s-%s.log" % ( qt, Platform, mode, ruby_python)
+ # (C) Coordinate size
+ if No32bitCoord:
+ coordSize = "C64"
+ else:
+ coordSize = "C32"
+
+ # (D) Target directories and files
+ MacPkgDir = "%s%s.pkg.macos-%s-%s-%s-%s" % (PackagePrefix, qt, Platform, coordSize, mode, ruby_python)
+ MacBinDir = "%s.bin.macos-%s-%s-%s-%s" % ( qt, Platform, coordSize, mode, ruby_python)
+ MacBuildDir = "%s.build.macos-%s-%s-%s-%s" % ( qt, Platform, coordSize, mode, ruby_python)
+ MacBuildLog = "%s.build.macos-%s-%s-%s-%s.log" % ( qt, Platform, coordSize, mode, ruby_python)
MacBuildDirQAT = MacBuildDir + ".macQAT"
parameters['bin'] = MacBinDir
parameters['build'] = MacBuildDir
parameters['logfile'] = MacBuildLog
- # (D) about Qt[5|6]
+ # (E) about Qt[5|6]
parameters['qmake'] = Qt56Dictionary[ModuleQt]['qmake']
parameters['deploy_tool'] = Qt56Dictionary[ModuleQt]['deploy']
parameters['qt_lib_root'] = Qt56Dictionary[ModuleQt]['libdir']
- # (E) rpath
+ # (F) rpath
if OSPython3FW in [ MontereyPy3FW, VenturaPy3FW, SonomaPy3FW, SequoiaPy3FW, TahoePy3FW ]:
parameters['rpath'] = OSPython3FW
else:
parameters['rpath'] = "@executable_path/../Frameworks"
- # (F) want Qt bindings with Ruby scripts?
+ # (G) want Qt bindings with Ruby scripts?
parameters['no_qt_bindings'] = NoQtBindings
- # (G) want QtUiTools?
+ # (H) want QtUiTools?
parameters['no_qt_uitools'] = NoQtUiTools
- # (H) options to `make` tool
+ # (I) want 32bitCoord?
+ parameters['no_32_bitcoord'] = No32bitCoord
+
+ # (J) want libgit2?
+ parameters['no_libgit2'] = NoLibGit2
+
+ # (K) options to `make` tool
if not MakeOptions == "":
parameters['make_options'] = MakeOptions
try:
@@ -739,7 +774,7 @@ def Get_Build_Parameters(config):
else:
parameters['num_parallel'] = pnum
- # (I) about Ruby
+ # (L) about Ruby
if ModuleRuby != "nil":
parameters['ruby'] = RubyDictionary[ModuleRuby]['exe']
parameters['rbinc'] = RubyDictionary[ModuleRuby]['inc']
@@ -747,7 +782,7 @@ def Get_Build_Parameters(config):
if 'inc2' in RubyDictionary[ModuleRuby]:
parameters['rbinc2'] = RubyDictionary[ModuleRuby]['inc2']
- # (J) about Python
+ # (M) about Python
if ModulePython != "nil":
parameters['python'] = PythonDictionary[ModulePython]['exe']
parameters['pyinc'] = PythonDictionary[ModulePython]['inc']
@@ -759,28 +794,28 @@ def Get_Build_Parameters(config):
config['MacBuildDirQAT'] = MacBuildDirQAT # relative path to build directory for QATest
config['MacBuildLog'] = MacBuildLog # relative path to build log file
- # (K) Extra parameters needed for deployment
+ # (N) Extra parameters needed for deployment
parameters['project_dir'] = ProjectDir
- # (L) Extra parameters needed for
+ # (O) Extra parameters needed for
# will be built if:
# BuildPymodWhl = True
- # Platform = [ 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]
- # ModuleRuby = [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3' ]
- # ModulePython = [ 'Python313MacPorts', 'Python312MacPorts', 'Python311MacPorts',
- # 'Python313Brew', 'Python312Brew', 'Python311Brew',
- # 'PythonAnaconda3' ]
+ # Platform = [ 'GoldenGate', 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]
+ # ModuleRuby = [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3V5', 'RubyAnaconda3V6' ]
+ # ModulePython = [ 'Python314MacPorts', 'Python313MacPorts',
+ # 'Python314Brew', 'Python313Brew', 'Python311Brew',
+ # 'PythonAnaconda3V5', 'PythonAnaconda3V6' ]
parameters['BuildPymodWhl'] = BuildPymodWhl
parameters['Platform'] = Platform
parameters['ModuleRuby'] = ModuleRuby
parameters['ModulePython'] = ModulePython
PymodDistDir = dict()
- if Platform in [ 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]:
+ if Platform in [ 'GoldenGate', 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]:
if ModuleRuby in [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3V5', 'RubyAnaconda3V6' ]:
- if ModulePython in [ 'Python313MacPorts', 'Python312MacPorts', 'Python311MacPorts' ]:
+ if ModulePython in [ 'Python314MacPorts', 'Python313MacPorts' ]:
PymodDistDir[ModulePython] = 'dist-MP3-%s' % ModuleQt
- elif ModulePython in [ 'Python313Brew', 'Python312Brew', 'Python311Brew' ]:
+ elif ModulePython in [ 'Python314Brew', 'Python313Brew', 'Python311Brew' ]:
PymodDistDir[ModulePython] = 'dist-HB3-%s' % ModuleQt
elif ModulePython in [ 'PythonAnaconda3V5', 'PythonAnaconda3V6' ]:
PymodDistDir[ModulePython] = 'dist-ana3-%s' % ModuleQt
@@ -799,10 +834,10 @@ def Build_pymod_wheel(parameters):
#-----------------------------------------------------------------------------------------------------------
# [1] will be built if:
# BuildPymodWhl = True
- # Platform = [ 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]
+ # Platform = [ 'GoldenGate', 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]
# ModuleRuby = [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3V5', 'RubyAnaconda3V6' ]
- # ModulePython = [ 'Python313MacPorts', 'Python312MacPorts', 'Python311MacPorts',
- # 'Python313Brew', 'Python312Brew', 'Python311Brew',
+ # ModulePython = [ 'Python314MacPorts', 'Python313MacPorts',
+ # 'Python314Brew', 'Python313Brew', 'Python311Brew',
# 'PythonAnaconda3V5', 'PythonAnaconda3V6' ]
#-----------------------------------------------------------------------------------------------------------
BuildPymodWhl = parameters['BuildPymodWhl']
@@ -811,12 +846,12 @@ def Build_pymod_wheel(parameters):
ModulePython = parameters['ModulePython']
if not BuildPymodWhl:
return 0
- if not Platform in [ 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]:
+ if not Platform in [ 'GoldenGate', 'Tahoe', 'Sequoia', 'Sonoma', 'Ventura', 'Monterey' ]:
return 0
elif not ModuleRuby in [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3V5', 'RubyAnaconda3V6' ]:
return 0
- elif not ModulePython in [ 'Python313MacPorts', 'Python312MacPorts', 'Python311MacPorts', \
- 'Python313Brew', 'Python312Brew', 'Python311Brew', \
+ elif not ModulePython in [ 'Python314MacPorts', 'Python313MacPorts', \
+ 'Python314Brew', 'Python313Brew', 'Python311Brew', \
'PythonAnaconda3V5', 'PythonAnaconda3V6' ]:
return 0
@@ -1124,25 +1159,31 @@ def Run_Build_Command(config, parameters):
cmd_args += " \\\n -build %s" % parameters['build']
cmd_args += " \\\n -rpath %s" % parameters['rpath']
- # (E) want Qt bindings with Ruby scripts?
+ # (F) want Qt bindings with Ruby scripts?
if parameters['no_qt_bindings']:
cmd_args += " \\\n -without-qtbinding"
else:
cmd_args += " \\\n -with-qtbinding"
- # (F) want QtUiTools?
+ # (G) want QtUiTools?
if parameters['no_qt_uitools']:
cmd_args += " \\\n -without-qt-uitools"
- # (G) don't want to use libgit2?
- if NoLibGit2:
- cmd_args += " \\\n -libgit2"
+ # (I) want 32bitCoord?
+ if parameters['no_32_bitcoord']:
+ cmd_args += " \\\n -with-64bit-coord" # EXPERIMENTAL FEATURE
+ else:
+ cmd_args += " \\\n -without-64bit-coord" # default
+
+ # (J) want libgit2?
+ if parameters['no_libgit2']:
+ cmd_args += " \\\n -nolibgit2"
- # (H) options to `make` tool
+ # (K) options to `make` tool
if 'make_options' in parameters:
cmd_args += " \\\n -option %s" % parameters['make_options']
- # (I) about Ruby
+ # (L) about Ruby
if 'ruby' in parameters:
cmd_args += " \\\n -ruby %s" % parameters['ruby']
cmd_args += " \\\n -rbinc %s" % parameters['rbinc']
@@ -1152,7 +1193,7 @@ def Run_Build_Command(config, parameters):
else:
cmd_args += " \\\n -noruby"
- # (J) about Python
+ # (M) about Python
if 'python' in parameters:
cmd_args += " \\\n -python %s" % parameters['python']
cmd_args += " \\\n -pyinc %s" % parameters['pyinc']
@@ -1645,9 +1686,10 @@ def Deploy_Binaries_For_Bundle(config, parameters):
regQt = re.compile(patQt)
# (4) Python frameworks (only for Homebrew) # in the case of Intel Mac...
- libPy3_1 = "%s/" % HBPython312FrameworkPath # /usr/local/opt/python@3.12/Frameworks/Python.framework/
- libPy3_2 = "%s/" % HBPython311FrameworkPath # /usr/local/opt/python@3.11/Frameworks/Python.framework/
- patPy3 = r'^(%s|%s)(.+)' % (libPy3_1, libPy3_2)
+ libPy3_1 = "%s/" % HBPython314FrameworkPath # /usr/local/opt/python@3.14/Frameworks/Python.framework/
+ libPy3_2 = "%s/" % HBPython313FrameworkPath # /usr/local/opt/python@3.13/Frameworks/Python.framework/
+ libPy3_3 = "%s/" % HBPython311FrameworkPath # /usr/local/opt/python@3.11/Frameworks/Python.framework/
+ patPy3 = r'^(%s|%s|%s)(.+)' % (libPy3_1, libPy3_2, libPy3_3)
regPy3 = re.compile(patPy3)
#-------------------------------------------------------------------------------
@@ -2285,7 +2327,7 @@ def Deploy_Binaries_For_Bundle(config, parameters):
#-------------------------------------------------------------
# [11] Sign the application bundle
#-------------------------------------------------------------
- if Platform in ['Tahoe']:
+ if Platform in ['GoldenGate', 'Tahoe']:
print( " [11] Signing the macOS application bundle (ad-hoc) after all post-build edits (install_name_tool/strip)..." )
appbundle = "%s/klayout.app" % AbsMacPkgDir
res = Sign_App_Bundle(appbundle)
diff --git a/macbuild/build4mac_env.py b/macbuild/build4mac_env.py
index f09f8bbb4f..9b3e7fcd31 100755
--- a/macbuild/build4mac_env.py
+++ b/macbuild/build4mac_env.py
@@ -6,7 +6,7 @@
#
# Here are dictionaries of ...
# different modules for building KLayout (http://www.klayout.de/index.php)
-# version 0.30.5 or later on different Apple Mac OSX platforms.
+# version 0.30.9 or later on different Apple Mac OSX platforms.
#
# This file is imported by the 'build4mac.py' script.
#===============================================================================
@@ -255,7 +255,7 @@
# for the previous states.
#-----------------------------------------------------
RubyNil = [ 'nil' ]
-RubySys = [ 'RubyMonterey', 'RubyVentura', 'RubySonoma', 'RubySequoia', 'RubyTahoe' ]
+RubySys = [ 'RubyMonterey', 'RubyVentura', 'RubySonoma', 'RubySequoia', 'RubyTahoe', 'RubyGoldenGate' ]
RubyExt = [ 'Ruby34MacPorts', 'Ruby34Brew', 'RubyAnaconda3' ]
Rubies = RubyNil + RubySys + RubyExt
@@ -324,11 +324,21 @@
'lib': '%s/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.tbd' % TahoeXcSDK
}
+# Bundled with Golden Gate (27.x)
+# [Key Type Name] = 'Sys'
+GoldenGateXcSDK = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
+GoldenGateCLTSDK = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
+RubyGoldenGate = { 'exe': '/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby',
+ 'inc': '%s/System/Library/Frameworks/Ruby.framework/Headers' % GoldenGateXcSDK,
+ 'inc2': '%s/System/Library/Frameworks/Ruby.framework/Headers/ruby' % GoldenGateXcSDK,
+ 'lib': '%s/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.tbd' % GoldenGateXcSDK
+ }
+
# Ruby 3.4 from MacPorts (https://www.macports.org/)
# install with 'sudo port install ruby34'
# [Key Type Name] = 'MP34'
Ruby34MacPorts = { 'exe': '/opt/local/bin/ruby3.4',
- 'inc': '/opt/local/include/ruby-3.4.9',
+ 'inc': '/opt/local/include/ruby-3.4.10',
'lib': '/opt/local/lib/libruby.3.4.dylib'
}
@@ -361,6 +371,7 @@
'RubySonoma' : RubySonoma,
'RubySequoia' : RubySequoia,
'RubyTahoe' : RubyTahoe,
+ 'RubyGoldenGate' : RubyGoldenGate,
'Ruby34MacPorts' : Ruby34MacPorts,
'Ruby34Brew' : Ruby34Brew,
'RubyAnaconda3V5' : RubyAnaconda3V5,
@@ -376,9 +387,9 @@
# for the previous states.
#-----------------------------------------------------
PythonNil = [ 'nil' ]
-PythonSys = [ 'PythonMonterey', 'PythonVentura', 'PythonSonoma', 'PythonSequoia', 'PythonTahoe' ]
-PythonExt = [ 'Python311MacPorts', 'Python312MacPorts', 'Python313MacPorts' ]
-PythonExt += [ 'Python311Brew', 'Python312Brew', 'Python313Brew', 'PythonAutoBrew' ]
+PythonSys = [ 'PythonMonterey', 'PythonVentura', 'PythonSonoma', 'PythonSequoia', 'PythonTahoe', 'PythonGoldenGate' ]
+PythonExt = [ 'Python314MacPorts', 'Python313MacPorts' ]
+PythonExt += [ 'Python314Brew', 'Python313Brew', 'Python311Brew', 'PythonAutoBrew' ]
PythonExt += [ 'PythonAnaconda3' ]
Pythons = PythonNil + PythonSys + PythonExt
@@ -430,20 +441,21 @@
'lib': '%s/Python3.framework/Versions/3.9/lib/libpython3.9.dylib' % TahoePy3FW
}
-# Python 3.11 from MacPorts (https://www.macports.org/)
-# install with 'sudo port install python311'
-# [Key Type Name] = 'MP311'
-Python311MacPorts = { 'exe': '/opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11',
- 'inc': '/opt/local/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11',
- 'lib': '/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/libpython3.11.dylib'
+# Bundled with Golden Gate (27.x)
+# [Key Type Name] = 'Sys'
+GoldenGatePy3FWXc = "/Applications/Xcode.app/Contents/Developer/Library/Frameworks"
+GoldenGatePy3FW = "/Library/Developer/CommandLineTools/Library/Frameworks"
+PythonGoldenGate = { 'exe': '%s/Python3.framework/Versions/3.9/bin/python3.9' % GoldenGatePy3FW,
+ 'inc': '%s/Python3.framework/Versions/3.9/include/python3.9' % GoldenGatePy3FW,
+ 'lib': '%s/Python3.framework/Versions/3.9/lib/libpython3.9.dylib' % GoldenGatePy3FW
}
-# Python 3.12 from MacPorts (https://www.macports.org/)
-# install with 'sudo port install python312'
-# [Key Type Name] = 'MP312'
-Python312MacPorts = { 'exe': '/opt/local/Library/Frameworks/Python.framework/Versions/3.12/bin/python3.12',
- 'inc': '/opt/local/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12',
- 'lib': '/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/libpython3.12.dylib'
+# Python 3.14 from MacPorts (https://www.macports.org/)
+# install with 'sudo port install python314'
+# [Key Type Name] = 'MP314'
+Python314MacPorts = { 'exe': '/opt/local/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14',
+ 'inc': '/opt/local/Library/Frameworks/Python.framework/Versions/3.14/include/python3.14',
+ 'lib': '/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/libpython3.14.dylib'
}
# Python 3.13 from MacPorts (https://www.macports.org/)
@@ -454,22 +466,13 @@
'lib': '/opt/local/Library/Frameworks/Python.framework/Versions/3.13/lib/libpython3.13.dylib'
}
-# Python 3.11 from Homebrew
-# install with 'brew install python@3.11'
-# [Key Type Name] = 'HB311'
-HBPython311FrameworkPath = '%s/opt/python@3.11/Frameworks/Python.framework' % DefaultHomebrewRoot
-Python311Brew = { 'exe': '%s/Versions/3.11/bin/python3.11' % HBPython311FrameworkPath,
- 'inc': '%s/Versions/3.11/include/python3.11' % HBPython311FrameworkPath,
- 'lib': '%s/Versions/3.11/lib/libpython3.11.dylib' % HBPython311FrameworkPath
- }
-
-# Python 3.12 from Homebrew
-# install with 'brew install python@3.12'
-# [Key Type Name] = 'HB312'
-HBPython312FrameworkPath = '%s/opt/python@3.12/Frameworks/Python.framework' % DefaultHomebrewRoot
-Python312Brew = { 'exe': '%s/Versions/3.12/bin/python3.12' % HBPython312FrameworkPath,
- 'inc': '%s/Versions/3.12/include/python3.12' % HBPython312FrameworkPath,
- 'lib': '%s/Versions/3.12/lib/libpython3.12.dylib' % HBPython312FrameworkPath
+# Python 3.14 from Homebrew
+# install with 'brew install python@3.14'
+# [Key Type Name] = 'HB314'
+HBPython314FrameworkPath = '%s/opt/python@3.14/Frameworks/Python.framework' % DefaultHomebrewRoot
+Python314Brew = { 'exe': '%s/Versions/3.14/bin/python3.14' % HBPython314FrameworkPath,
+ 'inc': '%s/Versions/3.14/include/python3.14' % HBPython314FrameworkPath,
+ 'lib': '%s/Versions/3.14/lib/libpython3.14.dylib' % HBPython314FrameworkPath
}
# Python 3.13 from Homebrew
@@ -481,6 +484,15 @@
'lib': '%s/Versions/3.13/lib/libpython3.13.dylib' % HBPython313FrameworkPath
}
+# Python 3.11 from Homebrew
+# install with 'brew install python@3.11'
+# [Key Type Name] = 'HB311'
+HBPython311FrameworkPath = '%s/opt/python@3.11/Frameworks/Python.framework' % DefaultHomebrewRoot
+Python311Brew = { 'exe': '%s/Versions/3.11/bin/python3.11' % HBPython311FrameworkPath,
+ 'inc': '%s/Versions/3.11/include/python3.11' % HBPython311FrameworkPath,
+ 'lib': '%s/Versions/3.11/lib/libpython3.11.dylib' % HBPython311FrameworkPath
+ }
+
# Python 3.13 installed under [/opt|/Applications]/anaconda3/klayout-qt[5|6]
# See the [Qt5] [Qt6] section above.
# [Key Type Name] = 'Ana3'
@@ -551,13 +563,13 @@
'PythonSonoma' : PythonSonoma,
'PythonSequoia' : PythonSequoia,
'PythonTahoe' : PythonTahoe,
+ 'PythonGoldenGate' : PythonGoldenGate,
+ 'Python314MacPorts' : Python314MacPorts,
'Python313MacPorts' : Python313MacPorts,
+ 'Python314Brew' : Python314Brew,
'Python313Brew' : Python313Brew,
'PythonAnaconda3V5' : PythonAnaconda3V5,
'PythonAnaconda3V6' : PythonAnaconda3V6,
- 'Python312MacPorts' : Python312MacPorts,
- 'Python312Brew' : Python312Brew,
- 'Python311MacPorts' : Python311MacPorts,
'Python311Brew' : Python311Brew
}
if _have_Homebrew_Python:
diff --git a/macbuild/build4mac_util.py b/macbuild/build4mac_util.py
index 545c0dc4a6..0043682efa 100755
--- a/macbuild/build4mac_util.py
+++ b/macbuild/build4mac_util.py
@@ -6,7 +6,7 @@
#
# Here are utility functions and classes ...
# for building KLayout (http://www.klayout.de/index.php)
-# version 0.30.5 or later on different Apple Mac OSX platforms.
+# version 0.30.9 or later on different Apple Mac OSX platforms.
#
# This file is imported by 'build4mac.py' script.
#========================================================================================
diff --git a/macbuild/makeDMG4mac.py b/macbuild/makeDMG4mac.py
index b0e567240a..d69b926f80 100755
--- a/macbuild/makeDMG4mac.py
+++ b/macbuild/makeDMG4mac.py
@@ -78,13 +78,13 @@ def SetGlobals():
Usage = "\n"
Usage += "---------------------------------------------------------------------------------------------------------\n"
Usage += "<< Usage of 'makeDMG4mac.py' >>\n"
- Usage += " for making a DMG file of KLayout 0.30.5 or later on different Apple macOS platforms.\n"
+ Usage += " for making a DMG file of KLayout 0.30.9 or later on different Apple macOS platforms.\n"
Usage += "\n"
Usage += "$ [python] ./makeDMG4mac.py\n"
Usage += " option & argument : descriptions | default value\n"
Usage += " ----------------------------------------------------------------------------------+-----------------\n"
Usage += " <-p|--pkg > : package directory created by `build4mac.py` with [-y|-Y] | ``\n"
- Usage += " : like 'LW-qt5MP.pkg.macos-Sequoia-release-Rmp34Pmp313' | \n"
+ Usage += " : like 'LW-qt5MP.pkg.macos-Sequoia-C32-release-Rmp34Pmp314' | \n"
Usage += " <-c|--clean> : clean the work directory | disabled\n"
Usage += " <-m|--make> : make a compressed DMG file | disabled\n"
Usage += " : <-c|--clean> and <-m|--make> are mutually exclusive | \n"
@@ -106,7 +106,11 @@ def SetGlobals():
release = int( Release.split(".")[0] ) # take the first of ['21', '0', '0']
LatestOS = ""
- if release == 25:
+ if release == 27:
+ GenOSName = "macOS"
+ Platform = "GoldenGate"
+ LatestOS = Platform
+ elif release == 25:
GenOSName = "macOS"
Platform = "Tahoe"
LatestOS = Platform
@@ -135,7 +139,7 @@ def SetGlobals():
if not Machine == "x86_64":
# with an Apple Silicon Chip?
- if Machine == "arm64" and Platform in ["Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey"]:
+ if Machine == "arm64" and Platform in ["GoldenGate", "Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey"]:
print("")
print( "### Your Mac equips an Apple Silicon Chip ###" )
print("")
@@ -222,17 +226,17 @@ def SetGlobals():
## To check the contents of the package directory
#
# The package directory name should look like:
-# * ST-qt5MP.pkg.macos-Sequoia-release-RsysPsys
-# * LW-qt5Ana3.pkg.macos-Sequoia-release-Rana3Pana3
-# * LW-qt6Brew.pkg.macos-Sequoia-release-Rhb34Phb312 --- (1)
-# * LW-qt5MP.pkg.macos-Sequoia-release-Rmp33Pmp312
-# * HW-qt6Brew.pkg.macos-Sequoia-release-RsysPhb311
+# * ST-qt5MP.pkg.macos-Sequoia-C32-release-RsysPsys
+# * LW-qt5Ana3.pkg.macos-Sequoia-C32-release-Rana3Pana3
+# * LW-qt6Brew.pkg.macos-Sequoia-C32-release-Rhb34Phb312 --- (1)
+# * LW-qt5MP.pkg.macos-Sequoia-C32-release-Rmp33Pmp312
+# * HW-qt6Brew.pkg.macos-Sequoia-C32-release-RsysPhb311
#
-# * ST-qt6MP.pkg.macos-Sequoia-release-RsysPsys
-# * LW-qt6MP.pkg.macos-Sequoia-release-Rmp33Pmp312
+# * ST-qt6MP.pkg.macos-Sequoia-C32-release-RsysPsys
+# * LW-qt6MP.pkg.macos-Sequoia-C32-release-Rmp33Pmp312
#
# Generated DMG will be, for example,
-# (1) ---> LW-klayout-0.30.2-macOS-Sequoia-1-qt6Brew-Rhb34Phb312.dmg
+# (1) ---> LW-klayout-0.30.2-macOS-Sequoia-C32-1-qt6Brew-Rhb34Phb312.dmg
#
# @return on success, positive integer in [MB] that tells approx. occupied disc space;
# on failure, -1
@@ -247,6 +251,7 @@ def CheckPkgDirectory():
global BundleName
global PackagePrefix
global QtIdentification
+ global CoordSize
global BuildType
global RubyPythonID
global BackgroundPNG
@@ -272,18 +277,18 @@ def CheckPkgDirectory():
#-----------------------------------------------------------------------------------------------
# [2] Identify (Qt, Ruby, Python) from PkgDir
- # * ST-qt5MP.pkg.macos-Sequoia-release-RsysPsys
- # * LW-qt5Ana3.pkg.macos-Sequoia-release-Rana3Pana3
- # * LW-qt6Brew.pkg.macos-Sequoia-release-Rhb34Phb312
- # * LW-qt5MP.pkg.macos-Sequoia-release-Rmp33Pmp312
- # * HW-qt6Brew.pkg.macos-Sequoia-release-RsysPhb311
- # * EX-qt5MP.pkg.macos-Sequoia-release-Rhb34Pmp312
+ # * ST-qt5MP.pkg.macos-Sequoia-C32-release-RsysPsys
+ # * LW-qt5Ana3.pkg.macos-Sequoia-C32-release-Rana3Pana3
+ # * LW-qt6Brew.pkg.macos-Sequoia-C32-release-Rhb34Phb312
+ # * LW-qt5MP.pkg.macos-Sequoia-C32-release-Rmp33Pmp312
+ # * HW-qt6Brew.pkg.macos-Sequoia-C32-release-RsysPhb311
+ # * EX-qt5MP.pkg.macos-Sequoia-C32-release-Rhb34Pmp312
#
- # * ST-qt6MP.pkg.macos-Sequoia-release-RsysPsys
- # * LW-qt6MP.pkg.macos-Sequoia-release-Rmp33Pmp312
+ # * ST-qt6MP.pkg.macos-Sequoia-C32-release-RsysPsys
+ # * LW-qt6MP.pkg.macos-Sequoia-C32-release-Rmp33Pmp312
#-----------------------------------------------------------------------------------------------
- # 0 1 2 3 4 5 6 7
- patQRP = r'(ST|LW|HW|EX)([-])([qt5|qt6][0-9A-Za-z]+)([.]pkg[.])([A-Za-z]+[-][A-Za-z]+[-])(release|debug)([-])([0-9A-Za-z]+)'
+ # 0 1 2 3 4 5 6 7 8 9
+ patQRP = r'(ST|LW|HW|EX)([-])([qt5|qt6][0-9A-Za-z]+)([.]pkg[.])([A-Za-z]+[-][A-Za-z]+[-])(C32|C64)([-])(release|debug)([-])([0-9A-Za-z]+)'
regQRP = re.compile(patQRP)
if not regQRP.match(PkgDir):
print( "! Cannot identify (Qt, Ruby, Python) from the package directory name" )
@@ -309,14 +314,25 @@ def CheckPkgDirectory():
else:
BackgroundPNG = None
raise Exception( "! neither qt5 nor qt6" )
- if pkgdirComponents[5] == 'release':
+
+ if pkgdirComponents[5] == 'C32':
+ CoordSize = 'C32'
+ elif pkgdirComponents[5] == 'C64':
+ CoordSize = 'C64'
+ else:
+ CoordSize = None
+ raise Exception( "! neither C32 nor C64" )
+
+ RubyPythonID = pkgdirComponents[7]
+ if pkgdirComponents[7] == 'release':
BuildType = 'release'
- elif pkgdirComponents[5] == 'debug':
+ elif pkgdirComponents[7] == 'debug':
BuildType = 'debug'
else:
BuildType = None
raise Exception( "! neither release nor debug" )
- RubyPythonID = pkgdirComponents[7]
+
+ RubyPythonID = pkgdirComponents[9]
#-----------------------------------------------------------------------------
# [3] Check if the "LatestOS" with MacPorts / Homebrew / Anaconda3
@@ -329,12 +345,12 @@ def CheckPkgDirectory():
LatestOSMacPorts = Platform == LatestOS
LatestOSMacPorts &= PackagePrefix == "LW"
LatestOSMacPorts &= QtIdentification in [ "qt5MP", "qt6MP" ]
- LatestOSMacPorts &= RubyPythonID in [ "Rmp34Pmp313", "Rmp34Pmp312", "Rmp34Pmp311" ]
+ LatestOSMacPorts &= RubyPythonID in [ "Rmp34Pmp314", "Rmp34Pmp313" ]
LatestOSHomebrew = Platform == LatestOS
LatestOSHomebrew &= PackagePrefix == "LW"
LatestOSHomebrew &= QtIdentification in [ "qt5Brew", "qt6Brew", "qt5MP", "qt6MP" ] # "qt[5|6]MP" are the alternatives
- LatestOSHomebrew &= RubyPythonID in [ "Rhb34Phb313", "Rhb34Phb312", "Rhb34Phb311", "Rhb34Phbauto" ]
+ LatestOSHomebrew &= RubyPythonID in [ "Rhb34Phb314", "Rhb34Phb313", "Rhb34Phb311", "Rhb34Phbauto" ]
LatestOSAnaconda3 = Platform == LatestOS
LatestOSAnaconda3 &= PackagePrefix == "LW"
@@ -555,8 +571,8 @@ def ParseCommandLineArguments():
if opt.target_dmg != "":
TargetDMG = opt.target_dmg
else:
- TargetDMG = "%s-klayout-%s-%s-%s-%d-%s-%s.dmg" \
- % (PackagePrefix, KLVersion, GenOSName, Platform, DMGSerialNum, QtIdentification, RubyPythonID)
+ TargetDMG = "%s-klayout-%s-%s-%s-%s-%d-%s-%s.dmg" \
+ % (PackagePrefix, KLVersion, GenOSName, Platform, CoordSize, DMGSerialNum, QtIdentification, RubyPythonID)
if Machine == "arm64": # with an Apple Silicon Chip
TargetDMG = Machine + TargetDMG
if BuildType == "debug": # in the case of 'debug' build
diff --git a/macbuild/nightlyBuild.py b/macbuild/nightlyBuild.py
index 994dbc941e..dad9a44d80 100755
--- a/macbuild/nightlyBuild.py
+++ b/macbuild/nightlyBuild.py
@@ -30,14 +30,16 @@
#
# @return matching platform name on success; "" on failure
#------------------------------------------------------------------------------
-def Test_My_Platform( platforms=[ 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe' ] ):
+def Test_My_Platform( platforms=[ 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe', 'GoldenGate' ] ):
(System, Node, Release, MacVersion, Machine, Processor) = platform.uname()
if not System == "Darwin":
return ""
release = int( Release.split(".")[0] ) # take the first of ['21', '0', '0']
- if release == 25:
+ if release == 27:
+ Platform = "GoldenGate"
+ elif release == 25:
Platform = "Tahoe"
elif release == 24:
Platform = "Sequoia"
@@ -80,12 +82,13 @@ def Get_Build_Target_Dict():
#
# @param[in] targetDic build target dictionary
# @param[in] platform platform name
+# @param[in] coordsize coordinate size (default='C32')
#
# @return (dictionary1, dictionary2)-tupple
# dictionary1: key=(qtVer, mnemonic, bdType), value=build option list
# dictionary2: key=(qtVer, mnemonic, bdType), value=log file name
#------------------------------------------------------------------------------
-def Get_Build_Options( targetDic, platform ):
+def Get_Build_Options( targetDic, platform, coordsize='C32'):
buildOp = dict()
logfile = dict()
@@ -99,49 +102,49 @@ def Get_Build_Options( targetDic, platform ):
target = targetDic[key]
if target == "std":
buildOp[(qtVer, "std", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'sys', '-p', 'sys' ]
- logfile[(qtVer, "std", "r")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "RsysPsys")
+ logfile[(qtVer, "std", "r")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "RsysPsys")
buildOp[(qtVer, "std", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'sys', '-p', 'sys', '--debug' ]
- logfile[(qtVer, "std", "d")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "RsysPsys")
+ logfile[(qtVer, "std", "d")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "RsysPsys")
elif target == "ports":
- buildOp[(qtVer, "ports", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'MP34', '-p', 'MP313' ]
- logfile[(qtVer, "ports", "r")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "Rmp34Pmp313")
- buildOp[(qtVer, "ports", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'MP34', '-p', 'MP313', '--debug' ]
- logfile[(qtVer, "ports", "d")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "Rmp34Pmp313")
+ buildOp[(qtVer, "ports", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'MP34', '-p', 'MP314' ]
+ logfile[(qtVer, "ports", "r")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "Rmp34Pmp314")
+ buildOp[(qtVer, "ports", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'MP34', '-p', 'MP314', '--debug' ]
+ logfile[(qtVer, "ports", "d")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "Rmp34Pmp314")
elif target == "brew":
- buildOp[(qtVer, "brew", "r")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HB313' ]
- logfile[(qtVer, "brew", "r")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "Rhb34Phb313")
- buildOp[(qtVer, "brew", "d")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HB313', '--debug' ]
- logfile[(qtVer, "brew", "d")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "Rhb34Phb313")
+ buildOp[(qtVer, "brew", "r")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HB314' ]
+ logfile[(qtVer, "brew", "r")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "Rhb34Phb314")
+ buildOp[(qtVer, "brew", "d")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HB314', '--debug' ]
+ logfile[(qtVer, "brew", "d")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "Rhb34Phb314")
elif target == "brewHW":
buildOp[(qtVer, "brewHW", "r")] = [ '-q', '%sBrew' % qtType, '-r', 'sys', '-p', 'HB311' ]
- logfile[(qtVer, "brewHW", "r")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "RsysPhb311")
+ logfile[(qtVer, "brewHW", "r")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "RsysPhb311")
buildOp[(qtVer, "brewHW", "d")] = [ '-q', '%sBrew' % qtType, '-r', 'sys', '-p', 'HB311', '--debug' ]
- logfile[(qtVer, "brewHW", "d")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "RsysPhb311")
+ logfile[(qtVer, "brewHW", "d")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "RsysPhb311")
elif target == "ana3":
buildOp[(qtVer, "ana3", "r")] = [ '-q', '%sAna3' % qtType, '-r', 'Ana3', '-p', 'Ana3' ]
- logfile[(qtVer, "ana3", "r")] = "%sAna3.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "Rana3Pana3")
+ logfile[(qtVer, "ana3", "r")] = "%sAna3.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "Rana3Pana3")
buildOp[(qtVer, "ana3", "d")] = [ '-q', '%sAna3' % qtType, '-r', 'Ana3', '-p', 'Ana3', '--debug' ]
- logfile[(qtVer, "ana3", "d")] = "%sAna3.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "Rana3Pana3")
+ logfile[(qtVer, "ana3", "d")] = "%sAna3.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "Rana3Pana3")
elif target == "brewA":
buildOp[(qtVer, "brewA", "r")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HBAuto' ]
- logfile[(qtVer, "brewA", "r")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "Rhb34Phbauto")
+ logfile[(qtVer, "brewA", "r")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "Rhb34Phbauto")
buildOp[(qtVer, "brewA", "d")] = [ '-q', '%sBrew' % qtType, '-r', 'HB34', '-p', 'HBAuto', '--debug' ]
- logfile[(qtVer, "brewA", "d")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "Rhb34Phbauto")
+ logfile[(qtVer, "brewA", "d")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "Rhb34Phbauto")
elif target == "brewAHW":
buildOp[(qtVer, "brewAHW", "r")] = [ '-q', '%sBrew' % qtType, '-r', 'sys', '-p', 'HBAuto' ]
- logfile[(qtVer, "brewAHW", "r")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "RsysPhbauto")
+ logfile[(qtVer, "brewAHW", "r")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "RsysPhbauto")
buildOp[(qtVer, "brewAHW", "d")] = [ '-q', '%sBrew' % qtType, '-r', 'sys', '-p', 'HBAuto', '--debug' ]
- logfile[(qtVer, "brewAHW", "d")] = "%sBrew.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "RsysPhbauto")
+ logfile[(qtVer, "brewAHW", "d")] = "%sBrew.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "RsysPhbauto")
elif target == "pbrew":
- buildOp[(qtVer, "pbrew", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'HB34', '-p', 'HB313' ]
- logfile[(qtVer, "pbrew", "r")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "Rhb34Phb313")
- buildOp[(qtVer, "pbrew", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'HB34', '-p', 'HB313', '--debug' ]
- logfile[(qtVer, "pbrew", "d")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "Rhb34Phb313")
+ buildOp[(qtVer, "pbrew", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'HB34', '-p', 'HB314' ]
+ logfile[(qtVer, "pbrew", "r")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "Rhb34Phb314")
+ buildOp[(qtVer, "pbrew", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'HB34', '-p', 'HB314', '--debug' ]
+ logfile[(qtVer, "pbrew", "d")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "Rhb34Phb314")
elif target == "pbrewHW":
buildOp[(qtVer, "pbrewHW", "r")] = [ '-q', '%sMacPorts' % qtType, '-r', 'sys', '-p', 'HB311' ]
- logfile[(qtVer, "pbrewHW", "r")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "release", "RsysPhb311")
+ logfile[(qtVer, "pbrewHW", "r")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "release", "RsysPhb311")
buildOp[(qtVer, "pbrewHW", "d")] = [ '-q', '%sMacPorts' % qtType, '-r', 'sys', '-p', 'HB311', '--debug' ]
- logfile[(qtVer, "pbrewHW", "d")] = "%sMP.build.macos-%s-%s-%s.log" % (qtType.lower(), platform, "debug", "RsysPhb311")
+ logfile[(qtVer, "pbrewHW", "d")] = "%sMP.build.macos-%s-%s-%s-%s.log" % (qtType.lower(), platform, coordsize, "debug", "RsysPhb311")
if WithPymod:
buildOp[(qtVer, "ports", "r")] = buildOp[(qtVer, "ports", "r")] + ['--buildPymod']
@@ -161,10 +164,11 @@ def Get_Build_Options( targetDic, platform ):
#
# @param[in] targetDic build target dictionary
# @param[in] platform platform name
+# @param[in] coordsize coordinate size (default='C32')
#
# @return a dictionary; key=(qtVer, mnemonic, bdType), value=".macQAT" directory
#------------------------------------------------------------------------------
-def Get_QAT_Directory( targetDic, platform ):
+def Get_QAT_Directory( targetDic, platform, coordsize='C32' ):
dirQAT = dict()
for qtVer in [5, 6]:
@@ -176,32 +180,32 @@ def Get_QAT_Directory( targetDic, platform ):
for key in targetDic.keys():
target = targetDic[key]
if target == "std":
- dirQAT[(qtVer, "std", "r")] = '%sMP.build.macos-%s-release-RsysPsys.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "std", "d")] = '%sMP.build.macos-%s-debug-RsysPsys.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "std", "r")] = '%sMP.build.macos-%s-%s-release-RsysPsys.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "std", "d")] = '%sMP.build.macos-%s-%s-debug-RsysPsys.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "ports":
- dirQAT[(qtVer, "ports", "r")] = '%sMP.build.macos-%s-release-Rmp34Pmp313.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "ports", "d")] = '%sMP.build.macos-%s-debug-Rmp34Pmp313.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "ports", "r")] = '%sMP.build.macos-%s-%s-release-Rmp34Pmp314.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "ports", "d")] = '%sMP.build.macos-%s-%s-debug-Rmp34Pmp314.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "brew":
- dirQAT[(qtVer, "brew", "r")] = '%sBrew.build.macos-%s-release-Rhb34Phb313.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "brew", "d")] = '%sBrew.build.macos-%s-debug-Rhb34Phb313.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "brew", "r")] = '%sBrew.build.macos-%s-%s-release-Rhb34Phb314.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "brew", "d")] = '%sBrew.build.macos-%s-%s-debug-Rhb34Phb314.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "brewHW":
- dirQAT[(qtVer, "brewHW", "r")] = '%sBrew.build.macos-%s-release-RsysPhb311.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "brewHW", "d")] = '%sBrew.build.macos-%s-debug-RsysPhb311.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "brewHW", "r")] = '%sBrew.build.macos-%s-%s-release-RsysPhb311.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "brewHW", "d")] = '%sBrew.build.macos-%s-%s-debug-RsysPhb311.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "ana3":
- dirQAT[(qtVer, "ana3", "r")] = '%sAna3.build.macos-%s-release-Rana3Pana3.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "ana3", "d")] = '%sAna3.build.macos-%s-debug-Rana3Pana3.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "ana3", "r")] = '%sAna3.build.macos-%s-%s-release-Rana3Pana3.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "ana3", "d")] = '%sAna3.build.macos-%s-%s-debug-Rana3Pana3.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "brewA":
- dirQAT[(qtVer, "brewA", "r")] = '%sBrew.build.macos-%s-release-Rhb34Phbauto.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "brewA", "d")] = '%sBrew.build.macos-%s-debug-Rhb34Phbauto.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "brewA", "r")] = '%sBrew.build.macos-%s-%s-release-Rhb34Phbauto.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "brewA", "d")] = '%sBrew.build.macos-%s-%s-debug-Rhb34Phbauto.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "brewAHW":
- dirQAT[(qtVer, "brewAHW", "r")] = '%sBrew.build.macos-%s-release-RsysPhbauto.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "brewAHW", "d")] = '%sBrew.build.macos-%s-debug-RsysPhbauto.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "brewAHW", "r")] = '%sBrew.build.macos-%s-%s-release-RsysPhbauto.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "brewAHW", "d")] = '%sBrew.build.macos-%s-%s-debug-RsysPhbauto.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "pbrew":
- dirQAT[(qtVer, "pbrew", "r")] = '%sMP.build.macos-%s-release-Rhb34Phb313.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "pbrew", "d")] = '%sMP.build.macos-%s-debug-Rhb34Phb313.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "pbrew", "r")] = '%sMP.build.macos-%s-%s-release-Rhb34Phb314.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "pbrew", "d")] = '%sMP.build.macos-%s-%s-debug-Rhb34Phb314.macQAT' % (qtType.lower(), platform, coordsize)
elif target == "pbrewHW":
- dirQAT[(qtVer, "pbrewHW", "r")] = '%sMP.build.macos-%s-release-RsysPhb311.macQAT' % (qtType.lower(), platform)
- dirQAT[(qtVer, "pbrewHW", "d")] = '%sMP.build.macos-%s-debug-RsysPhb311.macQAT' % (qtType.lower(), platform)
+ dirQAT[(qtVer, "pbrewHW", "r")] = '%sMP.build.macos-%s-%s-release-RsysPhb311.macQAT' % (qtType.lower(), platform, coordsize)
+ dirQAT[(qtVer, "pbrewHW", "d")] = '%sMP.build.macos-%s-%s-debug-RsysPhb311.macQAT' % (qtType.lower(), platform, coordsize)
return dirQAT
@@ -212,10 +216,11 @@ def Get_QAT_Directory( targetDic, platform ):
# @param[in] platform platform name
# @param[in] srlDMG serial number of DMG
# @param[in] makeflag True to make; False to clean
+# @param[in] coordsize coordinate size (default='C32')
#
# @return a dictionary; key=(qtVer, mnemonic, bdType), value=build option list
#------------------------------------------------------------------------------
-def Get_Package_Options( targetDic, platform, srlDMG, makeflag ):
+def Get_Package_Options( targetDic, platform, srlDMG, makeflag, coordsize='C32' ):
packOp = dict()
if makeflag:
@@ -232,49 +237,49 @@ def Get_Package_Options( targetDic, platform, srlDMG, makeflag ):
for key in targetDic.keys():
target = targetDic[key]
if target == "std":
- packOp[(qtVer, "std", "r")] = [ '-p', 'ST-%sMP.pkg.macos-%s-release-RsysPsys' % (qtType.lower(), platform),
+ packOp[(qtVer, "std", "r")] = [ '-p', 'ST-%sMP.pkg.macos-%s-%s-release-RsysPsys' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "std", "d")] = [ '-p', 'ST-%sMP.pkg.macos-%s-debug-RsysPsys' % (qtType.lower(), platform),
+ packOp[(qtVer, "std", "d")] = [ '-p', 'ST-%sMP.pkg.macos-%s-%s-debug-RsysPsys' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "ports":
- packOp[(qtVer, "ports", "r")] = [ '-p', 'LW-%sMP.pkg.macos-%s-release-Rmp34Pmp313' % (qtType.lower(), platform),
+ packOp[(qtVer, "ports", "r")] = [ '-p', 'LW-%sMP.pkg.macos-%s-%s-release-Rmp34Pmp314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "ports", "d")] = [ '-p', 'LW-%sMP.pkg.macos-%s-debug-Rmp34Pmp313' % (qtType.lower(), platform),
+ packOp[(qtVer, "ports", "d")] = [ '-p', 'LW-%sMP.pkg.macos-%s-%s-debug-Rmp34Pmp314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "brew":
- packOp[(qtVer, "brew", "r")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-release-Rhb34Phb313' % (qtType.lower(), platform),
+ packOp[(qtVer, "brew", "r")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-%s-release-Rhb34Phb314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "brew", "d")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-debug-Rhb34Phb313' % (qtType.lower(), platform),
+ packOp[(qtVer, "brew", "d")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-%s-debug-Rhb34Phb314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "brewHW":
- packOp[(qtVer, "brewHW", "r")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-release-RsysPhb311' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewHW", "r")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-%s-release-RsysPhb311' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "brewHW", "d")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-debug-RsysPhb311' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewHW", "d")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-%s-debug-RsysPhb311' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "ana3":
- packOp[(qtVer, "ana3", "r")] = [ '-p', 'LW-%sAna3.pkg.macos-%s-release-Rana3Pana3' % (qtType.lower(), platform),
+ packOp[(qtVer, "ana3", "r")] = [ '-p', 'LW-%sAna3.pkg.macos-%s-%s-release-Rana3Pana3' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "ana3", "d")] = [ '-p', 'LW-%sAna3.pkg.macos-%s-debug-Rana3Pana3' % (qtType.lower(), platform),
+ packOp[(qtVer, "ana3", "d")] = [ '-p', 'LW-%sAna3.pkg.macos-%s-%s-debug-Rana3Pana3' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "brewA":
- packOp[(qtVer, "brewA", "r")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-release-Rhb34Phbauto' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewA", "r")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-%s-release-Rhb34Phbauto' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "brewA", "d")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-debug-Rhb34Phbauto' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewA", "d")] = [ '-p', 'LW-%sBrew.pkg.macos-%s-%s-debug-Rhb34Phbauto' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "brewAHW":
- packOp[(qtVer, "brewAHW", "r")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-release-RsysPhbauto' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewAHW", "r")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-%s-release-RsysPhbauto' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "brewAHW", "d")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-debug-RsysPhbauto' % (qtType.lower(), platform),
+ packOp[(qtVer, "brewAHW", "d")] = [ '-p', 'HW-%sBrew.pkg.macos-%s-%s-debug-RsysPhbauto' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "pbrew":
- packOp[(qtVer, "pbrew", "r")] = [ '-p', 'LW-%sMP.pkg.macos-%s-release-Rhb34Phb313' % (qtType.lower(), platform),
+ packOp[(qtVer, "pbrew", "r")] = [ '-p', 'LW-%sMP.pkg.macos-%s-%s-release-Rhb34Phb314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "pbrew", "d")] = [ '-p', 'LW-%sMP.pkg.macos-%s-debug-Rhb34Phb313' % (qtType.lower(), platform),
+ packOp[(qtVer, "pbrew", "d")] = [ '-p', 'LW-%sMP.pkg.macos-%s-%s-debug-Rhb34Phb314' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
elif target == "pbrewHW":
- packOp[(qtVer, "pbrewHW", "r")] = [ '-p', 'HW-%sMP.pkg.macos-%s-release-RsysPhb311' % (qtType.lower(), platform),
+ packOp[(qtVer, "pbrewHW", "r")] = [ '-p', 'HW-%sMP.pkg.macos-%s-%s-release-RsysPhb311' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
- packOp[(qtVer, "pbrewHW", "d")] = [ '-p', 'HW-%sMP.pkg.macos-%s-debug-RsysPhb311' % (qtType.lower(), platform),
+ packOp[(qtVer, "pbrewHW", "d")] = [ '-p', 'HW-%sMP.pkg.macos-%s-%s-debug-RsysPhb311' % (qtType.lower(), platform, coordsize),
'-s', '%d' % srlDMG, '%s' % flag ]
return packOp
@@ -299,7 +304,7 @@ def Parse_CommandLine_Arguments():
global DryRun # True for dry-run
platform = Test_My_Platform()
- if platform in [ "Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey" ]:
+ if platform in [ "GoldenGate", "Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey" ]:
targetopt = "0,1,2,13,4"
else:
targetopt = ""
@@ -308,7 +313,7 @@ def Parse_CommandLine_Arguments():
Usage += "----------------------------------------------------------------------------------------------------------\n"
Usage += " nightlyBuild.py [EXPERIMENTAL]\n"
Usage += " << To execute the jobs for making KLayout's DMGs for\n"
- Usage += " macOS Monterey, Ventura, Sonoma, or Sequoia >>\n"
+ Usage += " macOS Monterey, Ventura, Sonoma, Sequoia, Tahoe, or GoldenGate >>\n"
Usage += "\n"
Usage += "$ [python] nightlyBuild.py\n"
Usage += " option & argument : comment on option if any | default value\n"
@@ -343,7 +348,7 @@ def Parse_CommandLine_Arguments():
Usage += " (3) $ ./nightlyBuild.py --test |\n"
Usage += " (4) $ ./nightlyBuild.py --check (confirm the QA Test results) |\n"
Usage += " (5) $ ./nightlyBuild.py --makedmg 1 |\n"
- Usage += " (6) $ ./nightlyBuild.py --upload '0.30.2' |\n"
+ Usage += " (6) $ ./nightlyBuild.py --upload '0.30.9' |\n"
Usage += " (7) $ ./nightlyBuild.py --cleandmg 1 |\n"
Usage += "-----------------------------------------------------------------------------+----------------------------\n"
@@ -434,7 +439,7 @@ def Parse_CommandLine_Arguments():
print(Usage)
sys.exit(0)
- myPlatform = Test_My_Platform( [ 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe' ] )
+ myPlatform = Test_My_Platform( [ '', 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe' ] )
if myPlatform == "":
print( "! Current platform is not [ 'Monterey', 'Ventura', 'Sonoma', 'Sequoia', 'Tahoe' ]" )
print(Usage)
diff --git a/macbuild/python3HB.py b/macbuild/python3HB.py
index 7015618b4a..88f8b9b74f 100755
--- a/macbuild/python3HB.py
+++ b/macbuild/python3HB.py
@@ -33,7 +33,7 @@ def SetGlobals():
Usage += "\n"
Usage += " option & argument : descriptions | default value\n"
Usage += " -------------------------------------------------------------------+---------------\n"
- Usage += " <-v|--version >: in ['3.11', '3.12','3.13'] | ''\n"
+ Usage += " <-v|--version >: in ['3.11', '3.12','3.13', '3.14'] | ''\n"
Usage += " [-u|-unlink] : unlink only | disabled\n"
Usage += " [-?|--?] : print this usage and exit | disabled\n"
Usage += "----------------------------------------------------------------------+-----------------\n"
@@ -49,7 +49,7 @@ def Parse_CLI_Args():
p.add_option( '-v', '--version',
dest='version',
- help="python3 version=['3.11', '3.12', '3.13']" )
+ help="python3 version=['3.11', '3.12', '3.13', '3.14']" )
p.add_option( '-u', '--unlink',
action='store_true',
@@ -74,7 +74,7 @@ def Parse_CLI_Args():
Version = opt.version
UnlinkOnly = opt.unlink
- if not Version in [ '3.11', '3.12', '3.13' ]:
+ if not Version in [ '3.11', '3.12', '3.13', '3.14' ]:
print( "! Unsupported Python 3 version <%s>" % Version )
print(Usage)
sys.exit(0)