Again, the build system for macOS was revised to work with KLayout version 0.28 or later.

This commit is contained in:
Kazunari Sekigawa 2022-12-24 11:08:57 +09:00
parent 6c6a3ae3b0
commit 9720de0f37
4 changed files with 121 additions and 125 deletions

View File

@ -1,12 +1,13 @@
Relevant KLayout version: 0.27.11<br> Relevant KLayout version: 0.28.2<br>
Author: Kazzz-S<br> Author: Kazzz-S<br>
Last modified: 2022-10-10<br> Last modified: 2022-12-24<br>
# 1. Introduction # 1. Introduction
This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.27.11 or later for different 64-bit macOS, including: This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.28.2 or later for different 64-bit macOS, including:
* Catalina (10.15.7) : the primary development environment * Catalina (10.15.7) : the primary development environment
* Big Sur (11.x) : experimental; Apple M1 chip is not tested since the author does not own an M1 Mac * Big Sur (11.x) : experimental; Apple M1 chip is not tested since the author does not own an M1 Mac
* Monterey (12.x) : -- ditto -- * Monterey (12.x) : -- ditto --
* Ventura (13.x) : planning
Building KLayout for the previous operating systems listed below should still be possible. <br> Building KLayout for the previous operating systems listed below should still be possible. <br>
However, they are not actively supported, and DMG packages are not provided. However, they are not actively supported, and DMG packages are not provided.
@ -43,11 +44,9 @@ If you have installed Anaconda3 under $HOME/opt/anaconda3/, make a symbolic link
``` ```
The migration work to "Qt6" is ongoing. You can try to use it; however, you will encounter some build and runtime errors. The migration work to "Qt6" is ongoing. You can try to use it; however, you will encounter some build and runtime errors.
For example, as of 2021-11-27, MacPorts' Qt6 does not provide `qt6-qtmultimedia`, which causes a build error.
# 3. Script language support: Ruby and Python # 3. Script language support: Ruby and Python
Earlier, by default, supported script languages, i.e., Ruby and Python, were those standard ones bundled with the OS.<br> Earlier, by default, supported script languages, i.e., Ruby and Python, were those standard ones bundled with the OS.<br>
This configuration is possible only for macOS Catalina (10.15.7).<br>
``` ```
$ /usr/bin/ruby -v $ /usr/bin/ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19] ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
@ -55,11 +54,10 @@ $ /usr/bin/ruby -v
$ /usr/bin/python --version $ /usr/bin/python --version
Python 2.7.16 Python 2.7.16
``` ```
This configuration WAS possible only for macOS Catalina (10.15.7).<br>
Big Sur (11.x) and Monterey (< 12.3) still provide Python 2.7 binaries to run various legacy applications.<br> However, it is no longer supported since KLayout version 0.28.x~ uses some Python3-specific features.
However, the latest Xcode 13.1 does not allow us to link the legacy Python 2.7 library with the newly compiled KLayout binaries.<br> Therefore, MacPorts' Ruby 3.1 and Python 3.8 are adopted as the default environment for Catalina.
Moreover, Monterey (12.3.1) finally eliminated the Python 2.7 binaries.<br> Big Sur and Monterey use Homebrew's Ruby 3.1 and Python 3.8 by default.
Therefore, Homebrew is adopted as the default environment for Big Sur and Monterey.
The build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python modules to accommodate such a slightly complex environment.<br> The build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python modules to accommodate such a slightly complex environment.<br>
Some typical use cases are described in Section 6. Some typical use cases are described in Section 6.
@ -71,12 +69,12 @@ You need to have the followings:
* Optionally, Ruby and Python packages from MacPorts, Homebrew, or Anaconda3 * Optionally, Ruby and Python packages from MacPorts, Homebrew, or Anaconda3
#### For matching versions of Ruby and Python, please also refer to `build4mac_env.py`. #### For matching versions of Ruby and Python, please also refer to `build4mac_env.py`.
# 5. Command-line options of **`build4mac.py`** are as shown below. # 5. Command-line options of **`build4mac.py`** are shown below.
**((Notes))** For **Catalina** **((Notes))** For **Catalina**
``` ```
--------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------
<< Usage of 'build4mac.py' >> << Usage of 'build4mac.py' >>
for building KLayout 0.27.11 or later on different Apple macOS / Mac OSX platforms. for building KLayout 0.28 or later on different Apple macOS / Mac OSX platforms.
$ [python] ./build4mac.py $ [python] ./build4mac.py
option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value
@ -89,16 +87,15 @@ $ [python] ./build4mac.py
: Qt6MacPorts: use Qt6 from MacPorts (*) | : Qt6MacPorts: use Qt6 from MacPorts (*) |
: Qt6Brew: use Qt6 from Homebrew (*) | : Qt6Brew: use Qt6 from Homebrew (*) |
: (*) migration to Qt6 is ongoing | : (*) migration to Qt6 is ongoing |
[-r|--ruby <type>] : case-insensitive type=['nil', 'Sys', 'MP31', 'HB31', 'Ana3'] | sys [-r|--ruby <type>] : case-insensitive type=['nil', 'Sys', 'MP31', 'HB31', 'Ana3'] | mp31
: nil: don't bind Ruby | : nil: don't bind Ruby |
: Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS | : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS |
: MP31: use Ruby 3.1 from MacPorts | : MP31: use Ruby 3.1 from MacPorts |
: HB31: use Ruby 3.1 from Homebrew | : HB31: use Ruby 3.1 from Homebrew |
: Ana3: use Ruby 3.1 from Anaconda3 | : Ana3: use Ruby 3.1 from Anaconda3 |
[-p|--python <type>] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | sys [-p|--python <type>] : case-insensitive type=['nil', 'MP38', 'HB38', 'Ana3', | mp38
: HB39', 'HBAuto'] | : HB39', 'HBAuto'] |
: nil: don't bind Python | : nil: don't bind Python |
: Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] |
: MP38: use Python 3.8 from MacPorts | : MP38: use Python 3.8 from MacPorts |
: HB38: use Python 3.8 from Homebrew | : HB38: use Python 3.8 from Homebrew |
: Ana3: use Python 3.8 from Anaconda3 | : Ana3: use Python 3.8 from Anaconda3 |
@ -110,7 +107,7 @@ $ [python] ./build4mac.py
[-m|--make <option>] : option passed to 'make' | '--jobs=4' [-m|--make <option>] : option passed to 'make' | '--jobs=4'
[-d|--debug] : enable debug mode build | disabled [-d|--debug] : enable debug mode build | disabled
[-c|--checkcom] : check command-line and exit without building | disabled [-c|--checkcom] : check command-line and exit without building | disabled
[-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled [-y|--deploy] : deploy executables and dylibs, including Qt's Frameworks | disabled
[-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled
: from the source code and use the tools in the same machine | : from the source code and use the tools in the same machine |
: ! After confirmation of the successful build of 'klayout.app', | : ! After confirmation of the successful build of 'klayout.app', |
@ -129,7 +126,7 @@ $ [python] ./build4mac.py
``` ```
--------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------
<< Usage of 'build4mac.py' >> << Usage of 'build4mac.py' >>
for building KLayout 0.27.11 or later on different Apple macOS / Mac OSX platforms. for building KLayout 0.28 or later on different Apple macOS / Mac OSX platforms.
$ [python] ./build4mac.py $ [python] ./build4mac.py
option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value
@ -148,10 +145,9 @@ $ [python] ./build4mac.py
: MP31: use Ruby 3.1 from MacPorts | : MP31: use Ruby 3.1 from MacPorts |
: HB31: use Ruby 3.1 from Homebrew | : HB31: use Ruby 3.1 from Homebrew |
: Ana3: use Ruby 3.1 from Anaconda3 | : Ana3: use Ruby 3.1 from Anaconda3 |
[-p|--python <type>] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | hb38 [-p|--python <type>] : case-insensitive type=['nil', 'MP38', 'HB38', 'Ana3', | hb38
: HB39', 'HBAuto'] | : HB39', 'HBAuto'] |
: nil: don't bind Python | : nil: don't bind Python |
: Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] |
: MP38: use Python 3.8 from MacPorts | : MP38: use Python 3.8 from MacPorts |
: HB38: use Python 3.8 from Homebrew | : HB38: use Python 3.8 from Homebrew |
: Ana3: use Python 3.8 from Anaconda3 | : Ana3: use Python 3.8 from Anaconda3 |
@ -163,7 +159,7 @@ $ [python] ./build4mac.py
[-m|--make <option>] : option passed to 'make' | '--jobs=4' [-m|--make <option>] : option passed to 'make' | '--jobs=4'
[-d|--debug] : enable debug mode build | disabled [-d|--debug] : enable debug mode build | disabled
[-c|--checkcom] : check command-line and exit without building | disabled [-c|--checkcom] : check command-line and exit without building | disabled
[-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled [-y|--deploy] : deploy executables and dylibs, including Qt's Frameworks | disabled
[-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled
: from the source code and use the tools in the same machine | : from the source code and use the tools in the same machine |
: ! After confirmation of the successful build of 'klayout.app', | : ! After confirmation of the successful build of 'klayout.app', |
@ -179,41 +175,10 @@ $ [python] ./build4mac.py
``` ```
# 6. Use-cases # 6. Use-cases
In this section, the actual file names and directory names are those obtained on macOS Catalina.<br> In this section, the actual file and directory names are those obtained on macOS Catalina.<br>
On different OS, those names differ accordingly. On different OS, those names differ accordingly.
### 6A. Standard build using the OS-bundled Ruby and Python ### 6A. Fully MacPorts-flavored build with MacPorts Ruby 3.1 and MacPorts Python 3.8
0. Install MacPorts, then install Qt5 by
```
$ sudo port install coreutils
$ sudo port install findutils
$ sudo port install qt5
```
1. Invoke **`build4mac.py`** with the default options: **((Notes))** only for Catalina
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py
```
2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Run **`build4mac.py`** again with the same options used in 1. PLUS "-y" to deploy executables and libraries (including Qt's framework) under **`klayout.app`** bundle.<br>
The buddy command-line tools (strm*) will also be deployed in this step.
```
$ ./build4mac.py -y
```
The application bundle **`klayout.app`** is located under:<br>
**`ST-qt5MP.pkg.macos-Catalina-release-RsysPsys`** directory, where the three name parts below are important.
* "ST-" means that this is a standard package (LW-, HW-, and EX- are other possibilities explained below).
* "qt5MP" means that Qt5 from MacPorts is used.
* "RsysPsys" means that Ruby is OS-bundled; Python is OS-bundled.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
If you use the "-Y" option instead of the "-y" in Step-3, the Qt5 framework is NOT deployed in the application bundle.<br>
Then the directory name will be **`LW-qt5MP.pkg.macos-Catalina-release-RsysPsys`**, where
* "LW-" means that this is a lightweight package.
#### If you build KLayout from the source code AND run it on the same machine, the "-Y" option is highly recommended.
### 6B. Fully MacPorts-flavored build with MacPorts Ruby 3.1 and MacPorts Python 3.8
0. Install MacPorts, then install Qt5, Ruby 3.1, and Python 3.8 by 0. Install MacPorts, then install Qt5, Ruby 3.1, and Python 3.8 by
``` ```
$ sudo port install coreutils $ sudo port install coreutils
@ -229,7 +194,7 @@ $ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5macports -r mp31 -p mp38 $ ./build4mac.py -q qt5macports -r mp31 -p mp38
``` ```
2. Confirm successful build (it will take about one hour, depending on your machine spec). 2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Run **`build4mac.py`** again with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br> 3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br>
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br> The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br>
If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**. If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**.
@ -238,12 +203,12 @@ $ ./build4mac.py -q qt5macports -r mp31 -p mp38 -Y
``` ```
The application bundle **`klayout.app`** is located under:<br> The application bundle **`klayout.app`** is located under:<br>
**`LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38`** directory, where **`LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38`** directory, where
* "LW-" means that this is a lightweight package. * "LW-" means this is a lightweight package.
* "qt5MP" means that Qt5 from MacPorts is used. * "qt5MP" means that Qt5 from MacPorts is used.
* "Rmp31Pmp38" means that Ruby is 3.1 from MacPorts; Python is 3.8 from MacPorts. * "Rmp31Pmp38" means that Ruby is 3.1 from MacPorts; Python is 3.8 from MacPorts.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation. 4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
### 6C. Fully Homebrew-flavored build with Homebrew Ruby 3.1 and Homebrew Python 3.8 ### 6B. Fully Homebrew-flavored build with Homebrew Ruby 3.1 and Homebrew Python 3.8
0. Install Homebrew, then install Qt5, Ruby 3.1, and Python 3.8 by 0. Install Homebrew, then install Qt5, Ruby 3.1, and Python 3.8 by
``` ```
$ brew install qt@5 $ brew install qt@5
@ -256,7 +221,7 @@ $ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5brew -r hb31 -p hb38 $ ./build4mac.py -q qt5brew -r hb31 -p hb38
``` ```
2. Confirm successful build (it will take about one hour, depending on your machine spec). 2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Run **`build4mac.py`** again with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br> 3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br>
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br> The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br>
If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**. If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**.
@ -265,12 +230,12 @@ $ ./build4mac.py -q qt5brew -r hb31 -p hb38 -Y
``` ```
The application bundle **`klayout.app`** is located under:<br> The application bundle **`klayout.app`** is located under:<br>
**`LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38`** directory, where **`LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38`** directory, where
* "LW-" means that this is a lightweight package. * "LW-" means this is a lightweight package.
* "qt5Brew" means that Qt5 from Homebrew is used. * "qt5Brew" means that Qt5 from Homebrew is used.
* "Rhb31Phb38" means that Ruby is 3.1 from Homebrew; Python is 3.8 from Homebrew. * "Rhb31Phb38" means that Ruby is 3.1 from Homebrew; Python is 3.8 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation. 4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
### 6D. Partially Homebrew-flavored build with System Ruby and Homebrew Python 3.8 ### 6C. Partially Homebrew-flavored build with System Ruby and Homebrew Python 3.8
0. Install Homebrew, then install Qt5 and Python 3.8 by 0. Install Homebrew, then install Qt5 and Python 3.8 by
``` ```
$ brew install qt@5 $ brew install qt@5
@ -282,7 +247,7 @@ $ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5brew -r sys -p hb38 $ ./build4mac.py -q qt5brew -r sys -p hb38
``` ```
2. Confirm successful build (it will take about one hour, depending on your machine spec). 2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Run **`build4mac.py`** again with the same options used in 1. PLUS "-y" to deploy executables and libraries (including Qt and Python frameworks) under the **`klayout.app`** bundle.<br> 3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-y" to deploy executables and libraries (including Qt and Python frameworks) under the **`klayout.app`** bundle.<br>
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step. The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.
``` ```
@ -290,7 +255,7 @@ $ ./build4mac.py -q qt5brew -r sys -p hb38 -y
``` ```
The application bundle **`klayout.app`** is located under:<br> The application bundle **`klayout.app`** is located under:<br>
**`HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38`** directory, where **`HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38`** directory, where
* "HW-" means that this is a heavyweight package because both Qt5 and Python Frameworks are deployed. * "HW-" means this is a heavyweight package because both Qt5 and Python Frameworks are deployed.
* "qt5Brew" means that Qt5 from Homebrew is used. * "qt5Brew" means that Qt5 from Homebrew is used.
* "RsysPhb38" means that Ruby is OS-bundled; Python is 3.8 from Homebrew. * "RsysPhb38" means that Ruby is OS-bundled; Python is 3.8 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation. 4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
@ -298,7 +263,7 @@ $ ./build4mac.py -q qt5brew -r sys -p hb38 -y
So far, the deployment of Homebrew Ruby is not supported. <br> So far, the deployment of Homebrew Ruby is not supported. <br>
Therefore, if you intend to use the "-y" option for deployment, you need to use the "-r sys" option for building. Therefore, if you intend to use the "-y" option for deployment, you need to use the "-r sys" option for building.
### 6E. Fully Anaconda3-flavored build with Anaconda3 Ruby 3.1 and Anaconda3 Python 3.8 ### 6D. Fully Anaconda3-flavored build with Anaconda3 Ruby 3.1 and Anaconda3 Python 3.8
0. Install Anaconda3, then install Ruby 3.1 by 0. Install Anaconda3, then install Ruby 3.1 by
``` ```
$ conda install ruby $ conda install ruby
@ -309,7 +274,7 @@ $ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3
``` ```
2. Confirm successful build (it will take about one hour, depending on your machine spec). 2. Confirm successful build (it will take about one hour, depending on your machine spec).
3. Run **`build4mac.py`** again with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br> 3. Rerun **`build4mac.py`** with the same options used in 1. PLUS "-Y" to deploy executables and libraries under **`klayout.app`** bundle.<br>
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br> The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br>
If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**. If you use `--buildPymod` option in Step-1 and Step-3, the KLayout Python Module (\*.whl, \*.egg) will be built and deployed under **klayout.app/Contents/pymod-dist/**.
@ -318,7 +283,7 @@ $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 -Y
``` ```
The application bundle **`klayout.app`** is located under:<br> The application bundle **`klayout.app`** is located under:<br>
**`LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3`** directory, where **`LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3`** directory, where
* "LW-" means that this is a lightweight package. * "LW-" means this is a lightweight package.
* "qt5Ana3" means that Qt5 from Anaconda3 is used. * "qt5Ana3" means that Qt5 from Anaconda3 is used.
* "Rana3Pana3" means that Ruby (3.1) is from Anaconda3; Python (3.8) is from Anaconda3. * "Rana3Pana3" means that Ruby (3.1) is from Anaconda3; Python (3.8) is from Anaconda3.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation. 4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
@ -327,15 +292,15 @@ $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 -Y
export PYTHONHOME=$HOME/opt/anaconda3 export PYTHONHOME=$HOME/opt/anaconda3
``` ```
### 6F. Other combinations ### 6E. Other combinations
Logically, several different module combinations other than 6A through 6E are possible, including `nil` choice.<br> Logically, several module combinations other than 6A through 6D are possible, including `nil` choice.<br>
The resultant package directory name will begin with **`EX-`** (exceptional) if you choose such a combination. The resultant package directory name will begin with **`EX-`** (exceptional) if you choose such a combination.
---- ----
# 7. Making a DMG installer # 7. Making a DMG installer
You can make a DMG installer using another Python script **`makeDMG4mac.py`**. You can make a DMG installer using another Python script **`makeDMG4mac.py`**.
This script requires a directory generated by **`build4mac.py`** with the [-y|-Y] option (refer to 6A through 6E). This script requires a directory generated by **`build4mac.py`** with the [-y|-Y] option (refer to 6A through 6D).
1. Make a symbolic link (if it does not exist) from the parent directory (where **`build.sh`** exists) to **`makeDMG4mac.py`**, that is, 1. Make a symbolic link (if it does not exist) from the parent directory (where **`build.sh`** exists) to **`makeDMG4mac.py`**, that is,
``` ```
@ -344,11 +309,11 @@ makeDMG4mac.py -> macbuild/makeDMG4mac.py
2. Invoke **`makeDMG4mac.py`** with -p and -m options, for example, 2. Invoke **`makeDMG4mac.py`** with -p and -m options, for example,
``` ```
$ cd /where/'build.sh'/exists $ cd /where/'build.sh'/exists
$ ./makeDMG4mac.py -p ST-qt5MP.pkg.macos-Catalina-release-RsysPsys -m $ ./makeDMG4mac.py -p LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38 -m
``` ```
This command will generate the two files below:<br> This command will generate the two files below:<br>
* **`ST-klayout-0.27.11-macOS-Catalina-1-qt5MP-RsysPsys.dmg`** ---(1) the main DMG file * **`LW-klayout-0.28.2-macOS-Catalina-1-qt5MP-Rmp31Pmp38.dmg`** ---(1) the main DMG file
* **`ST-klayout-0.27.11-macOS-Catalina-1-qt5MP-RsysPsys.dmg.md5`** ---(2) MD5-value text file * **`LW-klayout-0.28.2-macOS-Catalina-1-qt5MP-Rmp31Pmp38.dmg.md5`** ---(2) MD5-value text file
# Known issues # Known issues
Because we assume some specific versions of non-OS-standard Ruby and Python, updating MacPorts, Homebrew, or Anaconda3 may cause build- and link errors.<br> Because we assume some specific versions of non-OS-standard Ruby and Python, updating MacPorts, Homebrew, or Anaconda3 may cause build- and link errors.<br>
@ -356,7 +321,7 @@ In such cases, you need to update the dictionary contents of **`build4mac_env.py
# Final comments # Final comments
No need to say KLayout is a great tool! <br> No need to say KLayout is a great tool! <br>
With the object-oriented script language (both Ruby and Python) support, our error-prone layout jobs can be greatly simplified and sped up.<br> With the object-oriented script language (both Ruby and Python) support, our error-prone layout jobs can be significantly simplified and sped up.<br>
Building KLayout from its source code is not difficult. Try it with your favorite environment! Building KLayout from its source code is not difficult. Try it with your favorite environment!
[End of File] [End of File]

View File

@ -38,16 +38,16 @@ def GenerateUsage(platform):
myRuby = "hb31" myRuby = "hb31"
myPython = "hb38" myPython = "hb38"
moduleset = ('qt5Brew', 'HB31', 'HB38') moduleset = ('qt5Brew', 'HB31', 'HB38')
else: # with Xcode [ .. 12.4] else: # with Xcode [ .. 12.4]; 'sys' for Python has been abolished in 0.28
myQt56 = "qt5macports" myQt56 = "qt5macports"
myRuby = "sys" myRuby = "mp31"
myPython = "sys" myPython = "mp38"
moduleset = ('qt5MP', 'Sys', 'Sys') moduleset = ('qt5MP', 'MP31', 'MP38')
usage = "\n" usage = "\n"
usage += "---------------------------------------------------------------------------------------------------------\n" usage += "---------------------------------------------------------------------------------------------------------\n"
usage += "<< Usage of 'build4mac.py' >>\n" usage += "<< Usage of 'build4mac.py' >>\n"
usage += " for building KLayout 0.27.11 or later on different Apple macOS / Mac OSX platforms.\n" usage += " for building KLayout 0.28 or later on different Apple macOS / Mac OSX platforms.\n"
usage += "\n" usage += "\n"
usage += "$ [python] ./build4mac.py\n" usage += "$ [python] ./build4mac.py\n"
usage += " option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value\n" usage += " option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value\n"
@ -66,10 +66,9 @@ def GenerateUsage(platform):
usage += " : MP31: use Ruby 3.1 from MacPorts | \n" usage += " : MP31: use Ruby 3.1 from MacPorts | \n"
usage += " : HB31: use Ruby 3.1 from Homebrew | \n" usage += " : HB31: use Ruby 3.1 from Homebrew | \n"
usage += " : Ana3: use Ruby 3.1 from Anaconda3 | \n" usage += " : Ana3: use Ruby 3.1 from Anaconda3 | \n"
usage += " [-p|--python <type>] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | %s \n" % myPython usage += " [-p|--python <type>] : case-insensitive type=['nil', 'MP38', 'HB38', 'Ana3', | %s \n" % myPython
usage += " : HB39', 'HBAuto'] | \n" usage += " : HB39', 'HBAuto'] | \n"
usage += " : nil: don't bind Python | \n" usage += " : nil: don't bind Python | \n"
usage += " : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] | \n"
usage += " : MP38: use Python 3.8 from MacPorts | \n" usage += " : MP38: use Python 3.8 from MacPorts | \n"
usage += " : HB38: use Python 3.8 from Homebrew | \n" usage += " : HB38: use Python 3.8 from Homebrew | \n"
usage += " : Ana3: use Python 3.8 from Anaconda3 | \n" usage += " : Ana3: use Python 3.8 from Anaconda3 | \n"
@ -81,10 +80,10 @@ def GenerateUsage(platform):
usage += " [-m|--make <option>] : option passed to 'make' | '--jobs=4'\n" usage += " [-m|--make <option>] : option passed to 'make' | '--jobs=4'\n"
usage += " [-d|--debug] : enable debug mode build | disabled\n" usage += " [-d|--debug] : enable debug mode build | disabled\n"
usage += " [-c|--checkcom] : check command-line and exit without building | disabled\n" usage += " [-c|--checkcom] : check command-line and exit without building | disabled\n"
usage += " [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled\n" usage += " [-y|--deploy] : deploy executables and dylibs, including Qt's Frameworks | disabled\n"
usage += " [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled\n" usage += " [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled\n"
usage += " : from the source code and use the tools in the same machine | \n" usage += " : from the source code and use the tools in the same machine | \n"
usage += " : ! After confirmation of the uccessful build of 'klayout.app', | \n" usage += " : ! After confirmation of the successful build of 'klayout.app', | \n"
usage += " : rerun this script with BOTH: | \n" usage += " : rerun this script with BOTH: | \n"
usage += " : 1) the same options used for building AND | \n" usage += " : 1) the same options used for building AND | \n"
usage += " : 2) <-y|--deploy> OR <-Y|--DEPLOY> | \n" usage += " : 2) <-y|--deploy> OR <-Y|--DEPLOY> | \n"
@ -387,7 +386,7 @@ def Parse_CLI_Args(config):
p.add_option( '-p', '--python', p.add_option( '-p', '--python',
dest='type_python', dest='type_python',
help="Python type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', 'HB39', 'HBAuto']" ) help="Python type=['nil', 'MP38', 'HB38', 'Ana3', 'HB39', 'HBAuto']" )
p.add_option( '-P', '--buildPymod', p.add_option( '-P', '--buildPymod',
action='store_true', action='store_true',
@ -461,8 +460,8 @@ def Parse_CLI_Args(config):
checkusage = False ) checkusage = False )
else: # with Xcode [ .. 12.4] else: # with Xcode [ .. 12.4]
p.set_defaults( type_qt = "qt5macports", p.set_defaults( type_qt = "qt5macports",
type_ruby = "sys", type_ruby = "mp31",
type_python = "sys", type_python = "mp38",
build_pymod = False, build_pymod = False,
no_qt_binding = False, no_qt_binding = False,
no_qt_uitools = False, no_qt_uitools = False,
@ -562,7 +561,7 @@ def Parse_CLI_Args(config):
# (C) Determine the Python type # (C) Determine the Python type
candidates = dict() candidates = dict()
candidates['NIL'] = 'nil' candidates['NIL'] = 'nil'
candidates['SYS'] = 'Sys' # candidates['SYS'] = 'Sys' # has been abolished in 0.28
candidates['MP38'] = 'MP38' candidates['MP38'] = 'MP38'
candidates['HB38'] = 'HB38' candidates['HB38'] = 'HB38'
candidates['ANA3'] = 'Ana3' candidates['ANA3'] = 'Ana3'

View File

@ -59,10 +59,11 @@ def SetGlobals():
global VolumeDMG # the volume name of DMG global VolumeDMG # the volume name of DMG
global TargetDMG # the name of target DMG file global TargetDMG # the name of target DMG file
global RootApplications # reserved directory name for applications global RootApplications # reserved directory name for applications
global LatestOSMacPorts # True if 'LatestOS with MacPorts' global LatestOSMacPorts # True if 'LatestOS with MacPorts' and targeting LW-*
global LatestOSHomebrew # True if 'LatestOS with Homebrew' global LatestOSHomebrew # True if 'LatestOS with Homebrew' and targeting LW-*
global LatestOSAnaconda3 # True if 'LatestOS with Anaconda3' global LatestOSAnaconda3 # True if 'LatestOS with Anaconda3' and targeting LW-*
global DicLightWeight # dictionary for LW-* packages global LatestOSHomebrewH # True if 'LatestOS with Homebrew' and targeting HW-*
global DicLightHeavyW # dictionary for LW-* and HW-* packages
global Item3AppleScript # ITEM_3 in the Apple script global Item3AppleScript # ITEM_3 in the Apple script
# auxiliary variables on platform # auxiliary variables on platform
global System # 6-tuple from platform.uname() global System # 6-tuple from platform.uname()
@ -76,13 +77,13 @@ def SetGlobals():
Usage = "\n" Usage = "\n"
Usage += "---------------------------------------------------------------------------------------------------------\n" Usage += "---------------------------------------------------------------------------------------------------------\n"
Usage += "<< Usage of 'makeDMG4mac.py' >>\n" Usage += "<< Usage of 'makeDMG4mac.py' >>\n"
Usage += " for making a DMG file of KLayout 0.27.11 or later on different Apple macOS / Mac OSX platforms.\n" Usage += " for making a DMG file of KLayout 0.28 or later on different Apple macOS / Mac OSX platforms.\n"
Usage += "\n" Usage += "\n"
Usage += "$ [python] ./makeDMG4mac.py\n" Usage += "$ [python] ./makeDMG4mac.py\n"
Usage += " option & argument : descriptions | default value\n" Usage += " option & argument : descriptions | default value\n"
Usage += " ----------------------------------------------------------------------------------+-----------------\n" Usage += " ----------------------------------------------------------------------------------+-----------------\n"
Usage += " <-p|--pkg <dir>> : package directory created by `build4mac.py` with [-y|-Y] | ``\n" Usage += " <-p|--pkg <dir>> : package directory created by `build4mac.py` with [-y|-Y] | ``\n"
Usage += " : like 'ST-qt5MP.pkg.macos-Catalina-release-RsysPsys' | \n" Usage += " : like 'LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38' | \n"
Usage += " <-c|--clean> : clean the work directory | disabled\n" Usage += " <-c|--clean> : clean the work directory | disabled\n"
Usage += " <-m|--make> : make a compressed DMG file | disabled\n" Usage += " <-m|--make> : make a compressed DMG file | disabled\n"
Usage += " : <-c|--clean> and <-m|--make> are mutually exclusive | \n" Usage += " : <-c|--clean> and <-m|--make> are mutually exclusive | \n"
@ -168,43 +169,52 @@ def SetGlobals():
LatestOSMacPorts = False LatestOSMacPorts = False
LatestOSHomebrew = False LatestOSHomebrew = False
LatestOSAnaconda3 = False LatestOSAnaconda3 = False
DicLightWeight = dict() LatestOSHomebrewH = False
DicLightHeavyW = dict()
Item3AppleScript = "" Item3AppleScript = ""
# Populate DicLightWeight
DicLightWeight[ "ports" ] = dict()
DicLightWeight[ "brew" ] = dict()
DicLightWeight[ "ana3" ] = dict()
DicLightWeight[ "ports" ]["zip"] = "macbuild/Resources/script-bundle-P.zip" # Populate DicLightHeavyW
DicLightWeight[ "ports" ]["src"] = "script-bundle-P" DicLightHeavyW[ "ports" ] = dict() # LW-*
DicLightWeight[ "ports" ]["des"] = "MacPortsUser-ReadMeFirst" DicLightHeavyW[ "brew" ] = dict() # LW-*
DicLightWeight[ "ports" ]["item3"] = 'set position of item "MacPortsUser-ReadMeFirst" to {700, 400}' DicLightHeavyW[ "ana3" ] = dict() # LW-*
DicLightHeavyW[ "brewH" ] = dict() # HW-*
DicLightWeight[ "brew" ]["zip"] = "macbuild/Resources/script-bundle-B.zip" DicLightHeavyW[ "ports" ]["zip"] = "macbuild/Resources/script-bundle-P.zip"
DicLightWeight[ "brew" ]["src"] = "script-bundle-B" DicLightHeavyW[ "ports" ]["src"] = "script-bundle-P"
DicLightWeight[ "brew" ]["des"] = "HomebrewUser-ReadMeFirst" DicLightHeavyW[ "ports" ]["des"] = "MacPortsUser-ReadMeFirst"
DicLightWeight[ "brew" ]["item3"] = 'set position of item "HomebrewUser-ReadMeFirst" to {700, 400}' DicLightHeavyW[ "ports" ]["item3"] = 'set position of item "MacPortsUser-ReadMeFirst" to {700, 400}'
DicLightWeight[ "ana3" ]["zip"] = "macbuild/Resources/script-bundle-A.zip" DicLightHeavyW[ "brew" ]["zip"] = "macbuild/Resources/script-bundle-B.zip"
DicLightWeight[ "ana3" ]["src"] = "script-bundle-A" DicLightHeavyW[ "brew" ]["src"] = "script-bundle-B"
DicLightWeight[ "ana3" ]["des"] = "Anaconda3User-ReadMeFirst" DicLightHeavyW[ "brew" ]["des"] = "HomebrewUser-ReadMeFirst"
DicLightWeight[ "ana3" ]["item3"] = 'set position of item "Anaconda3User-ReadMeFirst" to {700, 400}' DicLightHeavyW[ "brew" ]["item3"] = 'set position of item "HomebrewUser-ReadMeFirst" to {700, 400}'
DicLightHeavyW[ "ana3" ]["zip"] = "macbuild/Resources/script-bundle-A.zip"
DicLightHeavyW[ "ana3" ]["src"] = "script-bundle-A"
DicLightHeavyW[ "ana3" ]["des"] = "Anaconda3User-ReadMeFirst"
DicLightHeavyW[ "ana3" ]["item3"] = 'set position of item "Anaconda3User-ReadMeFirst" to {700, 400}'
DicLightHeavyW[ "brewH" ]["zip"] = "macbuild/Resources/script-bundle-H.zip"
DicLightHeavyW[ "brewH" ]["src"] = "script-bundle-H"
DicLightHeavyW[ "brewH" ]["des"] = "Homebrew-HUser-ReadMeFirst"
DicLightHeavyW[ "brewH" ]["item3"] = 'set position of item "Homebrew-HUser-ReadMeFirst" to {700, 400}'
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
## To check the contents of the package directory ## To check the contents of the package directory
# #
# The package directory name should look like: # The package directory name should look like:
# * ST-qt5MP.pkg.macos-Catalina-release-RsysPsys --- (1)
# * LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3 # * LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3
# * LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38 # * LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38 --- (1)
# * LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38 # * LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38
# * HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38
# #
# * ST-qt6MP.pkg.macos-Catalina-release-RsysPsys # * LW-qt6Ana3.pkg.macos-Catalina-release-Rana3Pana3
# * LW-qt6Brew.pkg.macos-Catalina-release-Rhb31Phb38 # * LW-qt6Brew.pkg.macos-Catalina-release-Rhb31Phb38
# * LW-qt6MP.pkg.macos-Catalina-release-Rmp31Pmp38 # * LW-qt6MP.pkg.macos-Catalina-release-Rmp31Pmp38
# * HW-qt6Brew.pkg.macos-Catalina-release-RsysPhb38
# #
# Generated DMG will be, for example, # Generated DMG will be, for example,
# (1) ---> ST-klayout-0.27.11-macOS-Catalina-1-qt5MP-RsysPsys.dmg # (1) ---> LW-klayout-0.28.2-macOS-Catalina-1-qt5Brew-Rhb31Phb38.dmg
# #
# @return on success, positive integer in [MB] that tells approx. occupied disc space; # @return on success, positive integer in [MB] that tells approx. occupied disc space;
# on failure, -1 # on failure, -1
@ -224,7 +234,8 @@ def CheckPkgDirectory():
global LatestOSMacPorts global LatestOSMacPorts
global LatestOSHomebrew global LatestOSHomebrew
global LatestOSAnaconda3 global LatestOSAnaconda3
global DicLightWeight global LatestOSHomebrewH
global DicLightHeavyW
global Item3AppleScript global Item3AppleScript
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@ -242,17 +253,18 @@ def CheckPkgDirectory():
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# [2] Identify (Qt, Ruby, Python) from PkgDir # [2] Identify (Qt, Ruby, Python) from PkgDir
# * ST-qt5MP.pkg.macos-Catalina-release-RsysPsys
# * LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3 # * LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3
# * LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38 # * LW-qt5Brew.pkg.macos-Catalina-release-Rhb31Phb38
# * LW-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38
# * HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38 # * HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38
# * EX-qt5MP.pkg.macos-Catalina-release-Rmp31Pmp38 # * EX-qt5MP.pkg.macos-Catalina-release-Rhb31Pmp38
# #
# * ST-qt6MP.pkg.macos-Catalina-release-RsysPsys # * LW-qt6Ana3.pkg.macos-Catalina-release-Rana3Pana3
# * LW-qt6MP.pkg.macos-Catalina-release-Rmp31Pmp38
# * LW-qt6Brew.pkg.macos-Catalina-release-Rhb31Phb38 # * LW-qt6Brew.pkg.macos-Catalina-release-Rhb31Phb38
# * LW-qt6MP.pkg.macos-Catalina-release-Rmp31Pmp38
# * HW-qt6Brew.pkg.macos-Catalina-release-RsysPhb38
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
patQRP = u'(ST|LW|HW|EX)([-])([qt5|qt6][0-9A-Za-z]+)([.]pkg[.])([A-Za-z]+[-][A-Za-z]+[-]release[-])([0-9A-Za-z]+)' patQRP = u'(LW|HW|EX)([-])([qt5|qt6][0-9A-Za-z]+)([.]pkg[.])([A-Za-z]+[-][A-Za-z]+[-]release[-])([0-9A-Za-z]+)'
regQRP = re.compile(patQRP) regQRP = re.compile(patQRP)
if not regQRP.match(PkgDir): if not regQRP.match(PkgDir):
print( "! Cannot identify (Qt, Ruby, Python) from the package directory name" ) print( "! Cannot identify (Qt, Ruby, Python) from the package directory name" )
@ -292,8 +304,13 @@ def CheckPkgDirectory():
LatestOSAnaconda3 &= QtIdentification in ["qt5Ana3"] LatestOSAnaconda3 &= QtIdentification in ["qt5Ana3"]
LatestOSAnaconda3 &= RubyPythonID in ["Rana3Pana3"] LatestOSAnaconda3 &= RubyPythonID in ["Rana3Pana3"]
LatestOSHomebrewH = Platform == LatestOS
LatestOSHomebrewH &= PackagePrefix == "HW"
LatestOSHomebrewH &= QtIdentification in ["qt5Brew", "qt6Brew"]
LatestOSHomebrewH &= RubyPythonID in ["RsysPhb38", "RsysPhb39", "RsysPhbauto"] # Sys-Homebre hybrid
if LatestOSMacPorts: if LatestOSMacPorts:
mydic = DicLightWeight["ports"] mydic = DicLightHeavyW["ports"]
srcDir = PkgDir + "/" + mydic["src"] srcDir = PkgDir + "/" + mydic["src"]
desDir = PkgDir + "/" + mydic["des"] desDir = PkgDir + "/" + mydic["des"]
if OpMake: if OpMake:
@ -308,7 +325,7 @@ def CheckPkgDirectory():
Item3AppleScript = mydic["item3"] Item3AppleScript = mydic["item3"]
if LatestOSHomebrew: if LatestOSHomebrew:
mydic = DicLightWeight["brew"] mydic = DicLightHeavyW["brew"]
srcDir = PkgDir + "/" + mydic["src"] srcDir = PkgDir + "/" + mydic["src"]
desDir = PkgDir + "/" + mydic["des"] desDir = PkgDir + "/" + mydic["des"]
if OpMake: if OpMake:
@ -323,7 +340,22 @@ def CheckPkgDirectory():
Item3AppleScript = mydic["item3"] Item3AppleScript = mydic["item3"]
if LatestOSAnaconda3: if LatestOSAnaconda3:
mydic = DicLightWeight["ana3"] mydic = DicLightHeavyW["ana3"]
srcDir = PkgDir + "/" + mydic["src"]
desDir = PkgDir + "/" + mydic["des"]
if OpMake:
with zipfile.ZipFile( mydic["zip"], 'r' ) as zip_ref:
zip_ref.extractall(PkgDir)
os.rename( srcDir, desDir )
if OpClean:
if os.path.isdir(srcDir):
shutil.rmtree(srcDir)
if os.path.isdir(desDir):
shutil.rmtree(desDir)
Item3AppleScript = mydic["item3"]
if LatestOSHomebrewH:
mydic = DicLightHeavyW["brewH"]
srcDir = PkgDir + "/" + mydic["src"] srcDir = PkgDir + "/" + mydic["src"]
desDir = PkgDir + "/" + mydic["des"] desDir = PkgDir + "/" + mydic["des"]
if OpMake: if OpMake:
@ -525,7 +557,7 @@ def MakeTargetDMGFile(msg=""):
# Figures below were determined by experiments for best fit # Figures below were determined by experiments for best fit
applescript = t.safe_substitute( applescript = t.safe_substitute(
ORGX='50', ORGY='100', ORGX='50', ORGY='100',
WIN_WIDTH='1000', WIN_HEIGHT='500', WIN_WIDTH='1000', WIN_HEIGHT='540',
FULL_PATH_DS_STORE='/Volumes/%s/.DS_Store' % VolumeDMG, FULL_PATH_DS_STORE='/Volumes/%s/.DS_Store' % VolumeDMG,
BACKGROUND_PNG_FILE=BackgroundPNG, BACKGROUND_PNG_FILE=BackgroundPNG,
ITEM_1='%s' % BundleName, X1='900', Y1='165', ITEM_1='%s' % BundleName, X1='900', Y1='165',

View File

@ -52,7 +52,7 @@ def Test_My_Platform( platforms=['Catalina', 'BigSur', 'Monterey' ] ):
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
def Get_Build_Target_Dict(): def Get_Build_Target_Dict():
buildTargetDic = dict() buildTargetDic = dict()
buildTargetDic[0] = 'std' # buildTargetDic[0] = 'std' # has been abolished in 0.28
buildTargetDic[1] = 'ports' buildTargetDic[1] = 'ports'
buildTargetDic[2] = 'brew' buildTargetDic[2] = 'brew'
buildTargetDic[3] = 'brewHW' buildTargetDic[3] = 'brewHW'
@ -213,7 +213,7 @@ def Parse_CommandLine_Arguments():
Usage += " option & argument : comment on option if any | default value\n" Usage += " option & argument : comment on option if any | default value\n"
Usage += " ------------------------------------------------------------------------+--------------\n" Usage += " ------------------------------------------------------------------------+--------------\n"
Usage += " [--qt <type>] : 5='qt5', 6='qt6' (migration to Qt6 is ongoing) | 5\n" Usage += " [--qt <type>] : 5='qt5', 6='qt6' (migration to Qt6 is ongoing) | 5\n"
Usage += " [--target <list>] : 0='std', 1='ports', 2='brew', 3='brewHW', 4='ana3', | '%s'\n" % targetopt Usage += " [--target <list>] : 1='ports', 2='brew', 3='brewHW', 4='ana3', | '%s'\n" % targetopt
Usage += " 5='brewA', 6='brewAHW' | \n" Usage += " 5='brewA', 6='brewAHW' | \n"
Usage += " * with --qt=6, use --target='2,3' (4 is ignored) | \n" Usage += " * with --qt=6, use --target='2,3' (4 is ignored) | \n"
Usage += " [--build] : build and deploy | disabled\n" Usage += " [--build] : build and deploy | disabled\n"
@ -233,7 +233,7 @@ def Parse_CommandLine_Arguments():
Usage += " (3) $ ./nightlyBuild.py --test | \n" Usage += " (3) $ ./nightlyBuild.py --test | \n"
Usage += " (4) $ ./nightlyBuild.py --check (confirm the QA Test results) | \n" Usage += " (4) $ ./nightlyBuild.py --check (confirm the QA Test results) | \n"
Usage += " (5) $ ./nightlyBuild.py --makedmg 1 | \n" Usage += " (5) $ ./nightlyBuild.py --makedmg 1 | \n"
Usage += " (6) $ ./nightlyBuild.py --upload '0.27.11' | \n" Usage += " (6) $ ./nightlyBuild.py --upload '0.28.2' | \n"
Usage += " (7) $ ./nightlyBuild.py --cleandmg 1 | \n" Usage += " (7) $ ./nightlyBuild.py --cleandmg 1 | \n"
Usage += "---------------------------------------------------------------------------+----------------------\n" Usage += "---------------------------------------------------------------------------+----------------------\n"
@ -319,7 +319,7 @@ def Parse_CommandLine_Arguments():
targetDic = Get_Build_Target_Dict() targetDic = Get_Build_Target_Dict()
Target = list() Target = list()
for idx in sorted( list( set( [ int(item) for item in opt.targets.split(",") ] ) ) ): for idx in sorted( list( set( [ int(item) for item in opt.targets.split(",") ] ) ) ):
if idx in range(0, 7): if idx in range(1, 7): # '0' has been abolished in 0.28
Target.append( targetDic[idx] ) Target.append( targetDic[idx] )
Build = opt.build Build = opt.build