From 85c033db64a72d15bd1ef78b65f56cc3336eadc7 Mon Sep 17 00:00:00 2001
From: Matthias Koefferlein
Date: Sat, 21 Dec 2019 18:00:02 +0100
Subject: [PATCH 1/6] Small doc fixes
---
src/db/db/gsiDeclDbLayoutToNetlist.cc | 8 +++++---
src/lay/lay/layGSIHelpProvider.cc | 4 +---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/db/db/gsiDeclDbLayoutToNetlist.cc b/src/db/db/gsiDeclDbLayoutToNetlist.cc
index eab15bca5..dc65068cc 100644
--- a/src/db/db/gsiDeclDbLayoutToNetlist.cc
+++ b/src/db/db/gsiDeclDbLayoutToNetlist.cc
@@ -329,7 +329,7 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
gsi::method ("global_net_name", &db::LayoutToNetlist::global_net_name, gsi::arg ("global_net_id"),
"@brief Gets the global net name for the given global net ID."
) +
- gsi::method ("extract_netlist", &db::LayoutToNetlist::extract_netlist, gsi::arg ("join_net_names", std::string ()), gsi::arg ("include_floating_subcircuits", false),
+ gsi::method ("extract_netlist", &db::LayoutToNetlist::extract_netlist, gsi::arg ("join_net_names", std::string (), "\"\""), gsi::arg ("include_floating_subcircuits", false),
"@brief Runs the netlist extraction\n"
"'join_net_names' is a glob expression for labels. Nets on top level carrying the same label which matches this glob "
"expression will be connected implicitly even if there is no physical connection. This feature is useful to simulate a connection "
@@ -359,12 +359,14 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
"@brief Runs the netlist extraction\n"
"This method runs the netlist extraction like the two-parameter version. In addition to the latter, this method "
"can be given a per-cell net label joining specification in 'join_net_names_per_cell'. The keys of this array "
- "are cell names or cell names or cell name match expressions (glob style). The values are lable match expressions.\n"
+ "are cell names or cell names or cell name match expressions (glob style). The values are label match expressions.\n"
"\n"
"If not an empty string, the 'join_net_names' label match expression is applied to the top cell. For all non-top cells "
"the per-cell label match expression is applied and determines what labels are joined into single nets. "
"As the keys of 'join_net_names_per_cell' are glob expressions, a single cell may fall into more than one category. In this "
- "case, the label match pattern are combined. In any case, the 'join_net_names' has priority for the top cell."
+ "case, the label match pattern are combined. In any case, the 'join_net_names' has priority for the top cell.\n"
+ "\n"
+ "This variant of 'extract_netlist' has been introduced in version 0.26.2."
) +
gsi::method_ext ("internal_layout", &l2n_internal_layout,
"@brief Gets the internal layout\n"
diff --git a/src/lay/lay/layGSIHelpProvider.cc b/src/lay/lay/layGSIHelpProvider.cc
index ee14780c4..48121cd71 100644
--- a/src/lay/lay/layGSIHelpProvider.cc
+++ b/src/lay/lay/layGSIHelpProvider.cc
@@ -796,7 +796,6 @@ method_arguments (const gsi::MethodBase *method, const gsi::ClassBase *cls_obj,
if (i > 0) {
r += ",";
r += sep;
- r += " ";
}
r += escape_xml (doc.args [i]);
}
@@ -816,7 +815,6 @@ method_arguments (const gsi::MethodBase *method, const gsi::ClassBase *cls_obj,
if (n > 0) {
r += ",";
r += sep;
- r += " ";
}
r += type_to_s (*a, linked, false);
r += " ";
@@ -1312,7 +1310,7 @@ GSIHelpProvider::produce_class_doc (const std::string &cls) const
if (! attr.empty ()) {
os << "[" << escape_xml (attr) << "] ";
}
- os << method_return (i->second.first, method_doc, true) << " " << escape_xml (i->first) << " " << method_arguments (i->second.first, cls_obj, method_doc, true, "");
+ os << method_return (i->second.first, method_doc, true) << " " << escape_xml (i->first) << " " << method_arguments (i->second.first, cls_obj, method_doc, true, " ");
os << "
" << std::endl;
os << "" << tl::to_string (QObject::tr ("Description")) << " : " << replace_references (escape_xml (method_doc.brief_doc), cls_obj) << "
" << std::endl;
From aaf117508d5428f6d03c679140a829a00f7f4200 Mon Sep 17 00:00:00 2001
From: Kazunari Sekigawa
Date: Sun, 22 Dec 2019 20:15:53 +0900
Subject: [PATCH 2/6] To build 0.26.1 on Catalina.
---
macbuild/ReadMe.md | 264 +++++--
macbuild/Resources/KLayoutDMG-Back.logoist | Bin 452095 -> 199144 bytes
macbuild/Resources/KLayoutDMG-Back.png | Bin 311787 -> 207064 bytes
macbuild/Resources/KLayoutDMG.applescript | 116 ----
macbuild/Resources/KLayoutEditor.sh | 36 -
macbuild/Resources/KLayoutViewer.sh | 36 -
.../icon-resources/klayout-Ana3.logoist | Bin 0 -> 92023 bytes
.../Resources/icon-resources/klayout-Ana3.png | Bin 0 -> 76863 bytes
.../icon-resources/klayout-HB.logoist | Bin 0 -> 100754 bytes
.../Resources/icon-resources/klayout-HB.png | Bin 0 -> 84476 bytes
.../icon-resources/klayout-blue.logoist | Bin 0 -> 96794 bytes
.../Resources/icon-resources/klayout-blue.png | Bin 0 -> 91204 bytes
.../icon-resources/klayout-green.logoist | Bin 0 -> 80509 bytes
.../icon-resources/klayout-green.png | Bin 0 -> 74155 bytes
.../icon-resources/klayout-orange.logoist | Bin 0 -> 82643 bytes
.../icon-resources/klayout-orange.png | Bin 0 -> 76956 bytes
.../icon-resources/klayout-pink.logoist | Bin 0 -> 81898 bytes
.../Resources/icon-resources/klayout-pink.png | Bin 0 -> 77667 bytes
.../icon-resources/klayout-purple.logoist | Bin 0 -> 81898 bytes
.../icon-resources/klayout-purple.png | Bin 0 -> 77392 bytes
.../icon-resources/klayout-red.logoist | Bin 0 -> 82384 bytes
.../Resources/icon-resources/klayout-red.png | Bin 0 -> 76034 bytes
.../icon-resources/klayout-yellow.logoist | Bin 0 -> 92022 bytes
.../icon-resources/klayout-yellow.png | Bin 0 -> 86417 bytes
macbuild/Resources/klayout-Ana3.icns | Bin 0 -> 353292 bytes
macbuild/Resources/klayout-HB.icns | Bin 0 -> 360246 bytes
macbuild/Resources/klayout-blue.icns | Bin 251637 -> 381075 bytes
macbuild/Resources/klayout-green.icns | Bin 213038 -> 346187 bytes
macbuild/Resources/klayout-orange.icns | Bin 0 -> 348445 bytes
macbuild/Resources/klayout-pink.icns | Bin 0 -> 348521 bytes
macbuild/Resources/klayout-purple.icns | Bin 0 -> 356414 bytes
macbuild/Resources/klayout-red.icns | Bin 210773 -> 327739 bytes
macbuild/Resources/klayout-yellow.icns | Bin 239220 -> 362697 bytes
macbuild/Resources/modified-inv.png | Bin 0 -> 24738 bytes
macbuild/Resources/modified-inv_schematic.png | Bin 0 -> 10555 bytes
macbuild/Resources/script-bundles.zip | Bin 0 -> 9379888 bytes
.../Resources/template-KLayoutDMG.applescript | 22 +-
macbuild/build4mac.py | 651 +++++++++---------
macbuild/build4mac_env.py | 217 +++---
macbuild/build4mac_util.py | 19 +-
macbuild/makeDMG4mac.py | 215 +++---
41 files changed, 785 insertions(+), 791 deletions(-)
delete mode 100644 macbuild/Resources/KLayoutDMG.applescript
delete mode 100755 macbuild/Resources/KLayoutEditor.sh
delete mode 100755 macbuild/Resources/KLayoutViewer.sh
create mode 100644 macbuild/Resources/icon-resources/klayout-Ana3.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-Ana3.png
create mode 100644 macbuild/Resources/icon-resources/klayout-HB.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-HB.png
create mode 100644 macbuild/Resources/icon-resources/klayout-blue.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-blue.png
create mode 100644 macbuild/Resources/icon-resources/klayout-green.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-green.png
create mode 100644 macbuild/Resources/icon-resources/klayout-orange.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-orange.png
create mode 100644 macbuild/Resources/icon-resources/klayout-pink.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-pink.png
create mode 100644 macbuild/Resources/icon-resources/klayout-purple.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-purple.png
create mode 100644 macbuild/Resources/icon-resources/klayout-red.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-red.png
create mode 100644 macbuild/Resources/icon-resources/klayout-yellow.logoist
create mode 100644 macbuild/Resources/icon-resources/klayout-yellow.png
create mode 100644 macbuild/Resources/klayout-Ana3.icns
create mode 100644 macbuild/Resources/klayout-HB.icns
create mode 100644 macbuild/Resources/klayout-orange.icns
create mode 100644 macbuild/Resources/klayout-pink.icns
create mode 100644 macbuild/Resources/klayout-purple.icns
create mode 100644 macbuild/Resources/modified-inv.png
create mode 100644 macbuild/Resources/modified-inv_schematic.png
create mode 100644 macbuild/Resources/script-bundles.zip
diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md
index 9ea112376..847d26dd7 100644
--- a/macbuild/ReadMe.md
+++ b/macbuild/ReadMe.md
@@ -1,13 +1,15 @@
-Relevant KLayout version: 0.25.2
+Relevant KLayout version: 0.26.1
# 1. Introduction
-This directory "macbuild" contains different files required for building KLayout (http://www.klayout.de/) version 0.25 or later for different 64-bit Mac OSXs including:
-* Yosemite (10.10)
+This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.26.1 or later for different 64-bit Mac OSXs including:
* El Capitan (10.11)
* Sierra (10.12)
* High Sierra (10.13)
+* Mojave (10.14)
+* Catalina (10.15)
-By default, Qt framework is "Qt5" from MacPorts (https://www.macports.org/) which is usually located under:
+# 2. Qt5 Frameworks
+By default, Qt frameworks are "Qt5" from MacPorts (https://www.macports.org/) which is usually located under:
```
/opt/local/libexec/qt5/
```
@@ -16,102 +18,218 @@ Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/) which is usual
```
/usr/local/opt/qt/
```
-Please refer to Section # 5. of this document regarding use of Homebrew.
-KLayout 0.25.2 was successfully built with "Qt 5.10.0" from MacPorts and "Qt 5.10.1" from Homebrew.
+ OR
-### IMPORTANT
+"Qt5" from Anaconda3 (https://www.anaconda.com/) which is usually located under:
```
-* Please DO NOT USE "Qt 4.x" which is problematic in compilation.
+$HOME/opt/anaconda3/pkgs/qt-{version}
```
-Also by default, supported script languages, i.e, Ruby and Python, are those standard ones bundled with the OS.
+# 3. Script language support: Ruby and Python
+By default, supported script languages, i.e., Ruby and Python, are those standard ones bundled with the OS.
+As for Catalina (10.15),
+```
+$ /usr/bin/ruby -v
+ ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
-# 2. Non-OS-standard script language support
-You may want to use a non-OS-standard script language such as Python 3.6 from Anaconda2 (https://www.anaconda.com/download/#macos) in combination with KLayout.
+$ /usr/bin/python --version
+ Python 2.7.16
+```
+Even in the latest OS as of today (December 2019), Python 3.x is not bundled with the OS, and this is the main reason why users want non-OS-standard script language support.
-Since Anaconda2 is a popular Python development environment, this is worth trying. Unfortunately, however, some dynamic linkage problems are observed as of today.
-On the other hand, Python 3.7 provided by MacPorts or Homebrew is usable.
-Please try this (refer to 3B below or Section #5) if you feel it's useful.
+To meet such a requirement, the build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy and Python module.
+Some typical use cases are described in Section 6.
-# 3. Use-cases
-### 3A. Debug build using the OS-standard script languages
-1. Make a symbolic link (if it does not exist) from the parent directory (where 'build.sh' exists) to 'build4mac.py', that is,
-```
- build4mac.py -> macbuild/build4mac.py
-```
-2. Invoke 'build4mac.py' with appropriate options ("-d" for debug build):
-```
-$ cd /where/'build.sh'/exists
-$ ./build4mac.py -d
-```
-3. Confirm successful build (it will take about one hour).
-4. Run 'build4mac.py' again with the same options used in 2. PLUS "-y" to deploy executables and libraries (including Qt's frameworks) under "klayout.app" bundle. The buddy command line tools (strm*) will also be deployed in this step.
-```
-$ ./build4mac.py -d -y
-```
-5. Copy/move generated bundles ("klayout.app" and "klayout.scripts/") to your "/Applications" directory for installation.
+# 4. Prerequisites
+You need to have:
+* the latest Xcode and command-line tool kit compliant with each OS
+* Qt5 package 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`. ####
-### 3B. Release build using the non-OS-standard Ruby 2.4 and Python 3.6 both from MacPorts
-1. Make a symbolic link (if it does not exist) from the parent directory (where 'build.sh' exists) to 'build4mac.py', that is,
+# 5. Command-line options of **`build4mac.py`** are as shown below.
```
-build4mac.py -> macbuild/build4mac.py
+---------------------------------------------------------------------------------------------------------
+<< Usage of **`build4mac.py`** >>
+ for building KLayout 0.26.1 or later on different Apple Mac OSX platforms.
+
+$ [python] ./build4mac.py
+ option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value
+ --------------------------------------------------------------------------------------+---------------
+ [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5macports
+ : Qt5MacPorts: use Qt5 from MacPorts |
+ : Qt5Brew: use Qt5 from Homebrew |
+ : Qt5Ana3: use Qt5 from Anaconda3 |
+ [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP26', 'HB26', 'Ana3'] | sys
+ : nil: don't bind Ruby |
+ : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS |
+ : MP26: use Ruby 2.6 from MacPorts |
+ : HB26: use Ruby 2.6 from Homebrew |
+ : Ana3: use Ruby 2.5 from Anaconda3 |
+ [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP37', 'HB37', 'Ana3'] | sys
+ : nil: don't bind Python |
+ : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] |
+ : MP37: use Python 3.7 from MacPorts |
+ : HB37: use Python 3.7 from Homebrew |
+ : Ana3: use Python 3.7 from Anaconda3 |
+ [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled
+ [-m|--make ] : option passed to 'make' | '-j4'
+ [-d|--debug] : enable debug mode build | 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 for those who built KLayout | disabled
+ : from the source code and use the tools in the same machine |
+ : ! After confirmation of successful build of 'klayout.app', |
+ : rerun this script with BOTH: |
+ : 1) the same options used for building AND |
+ : 2) <-y|--deploy> OR <-Y|--DEPLOY> |
+ : optionally with [-v|--verbose <0-3>] |
+ [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1
+ : 0 = no output, 1 = error/warning (default), |
+ : 2 = normal, 3 = debug |
+ [-?|--?] : print this usage and exit | disabled
+-----------------------------------------------------------------------------------------+---------------
```
-2. Invoke 'build4mac.py' with appropriate options:
+
+# 6. Use-cases
+In this section, the actual file- and directory names are those obtained on macOS Catalina.
+On different OS, those names differ accordingly.
+
+### 6A. Standard build using the OS-bundled Ruby and Python
+1. Invoke **`build4mac.py`** with the default options:
```
$ cd /where/'build.sh'/exists
-$ ./build4mac.py -r mp24 -p mp36
+$ ./build4mac.py
```
-3. Confirm successful build (it will take about one hour).
-4. Run 'build4mac.py' again with the same options used in 2. PLUS "-Y" to deploy executables and libraries under "klayout.app" bundle. The buddy command line tools (strm*) will also be deployed in this step.
+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 frameworks) under **`klayout.app`** bundle.
+ The buddy command-line tools (strm*) will also be deployed in this step.
```
-$ ./build4mac.py -r mp24 -p mp36 -Y
+$ ./build4mac.py -y
```
-* [-Y|--DEPLOY] option deploys KLayout's dylibs and executables only.
-That is, paths to other modules (Ruby, Python, and Qt5 Frameworks) remain unchanged (absolute paths in your development environment).
+ The application bundle **`klayout.app`** is located under:
+ **`ST-qt5MP.pkg.macos-Catalina-release-RsysPsys`** directory, where the three 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.
-5. Copy/move generated bundles ("klayout.app" and "klayout.scripts/") to your "/Applications" directory for installation.
+If you use "-Y" option instead of "-y" in Step-3, Qt5 frameworks is NOT deployed in the application bundle.
+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 use it on the same machine, "-Y" option is highly recommended. ####
+
+### 6B. Fully MacPorts-flavored build with MacPorts Ruby 2.6 and MacPorts Python 3.7
+```
+$ cd /where/'build.sh'/exists
+$ ./build4mac.py -q qt5macports -r mp26 -p mp37
+```
+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.
+ The buddy command-line tools (strm*) will also be deployed in this step.
+```
+$ ./build4mac.py -q qt5macports -r mp26 -p mp37 -Y
+```
+ The application bundle **`klayout.app`** is located under:
+ **`LW-qt5MP.pkg.macos-Catalina-release-Rmp26Pmp37`** directory, where
+* "LW-" means that this is a lightweight package.
+* "qt5MP" means that Qt5 from MacPorts is used.
+* "Rmp26Pmp37" means that Ruby is 2.6 from MacPorts; Python is 3.7 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 2.6 and Homebrew Python 3.7
+```
+$ cd /where/'build.sh'/exists
+$ ./build4mac.py -q qt5brew -r hb26 -p hb37
+```
+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.
+ The buddy command-line tools (strm*) will also be deployed in this step.
+```
+$ ./build4mac.py -q qt5brew -r hb26 -p hb37 -Y
+```
+ The application bundle **`klayout.app`** is located under:
+ **`LW-qt5Brew.pkg.macos-Catalina-release-Rhb26Phb37`** directory, where
+* "LW-" means that this is a lightweight package.
+* "qt5Brew" means that Qt5 from Homebrew is used.
+* "Rhb26Phb37" means that Ruby is 2.6 from Homebrew; Python is 3.7 from Homebrew.
+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.7
+```
+$ cd /where/'build.sh'/exists
+$ ./build4mac.py -q qt5brew -r sys -p hb37
+```
+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 frameworks and Python frameworks) under **`klayout.app`** bundle.
+ The buddy command-line tools (strm*) will also be deployed in this step.
+```
+$ ./build4mac.py -q qt5brew -r sys -p hb37 -y
+```
+ The application bundle **`klayout.app`** is located under:
+ **`HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb37`** directory, where
+* "HW-" means that this is a heavyweight package because both Qt5 and Python are deployed.
+* "qt5Brew" means that Qt5 from Homebrew is used.
+* "RsysPhb37" means that Ruby is OS-bundled; Python is 3.7 from Homebrew.
+4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
+### Important ###
+So far, deployment of Homebrew Ruby is not supported.
+Therefore, if you intend to use "-y" option, you need to use "-r sys" for building.
+
+### 6E. Fully Anaconda3-flavored build with Anaconda3 Ruby 2.5 and Anaconda3 Python 3.7
+```
+$ cd /where/'build.sh'/exists
+$ ./build4mac.py -q qt5ana3 -r ana3 -p ana3
+```
+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.
+ The buddy command-line tools (strm*) will also be deployed in this step.
+```
+$ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 -Y
+```
+ The application bundle **`klayout.app`** is located under:
+ **`LW-qt5Ana3.pkg.macos-Catalina-release-Rana3Pana3`** directory, where
+* "LW-" means that this is a lightweight package.
+* "qt5Ana3" means that Qt5 from Anaconda3 is used.
+* "Rana3Pana3" means that Ruby (2.5) is from Anaconda3; Python (3.7) is from Anaconda3.
+4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
+5. You may have to set `PYTHONHOME` environment variable like:
+```
+export PYTHONHOME=$HOME/opt/anaconda3
+```
+
+### 6F. Other combinations
+Logically, several different module combinations other than 6A. through 6E. are possible, including `nil` choice.
+If you choose such a combination, the resultant package directory name will begin with **`EX-`** (exceptional).
----
-# 4. Making a DMG installer
-You can make a DMG installer using another Python script 'makeDMG4mac.py'.
-This script requires a directory generated by 'build4mac.py' with [-y|-Y] option (refer to 3A.4 & 3B.4)
+# 7. Making a DMG installer
+You can make a DMG installer using another Python script **`makeDMG4mac.py`**.
+This script requires a directory generated by **`build4mac.py`** with [-y|-Y] option (refer to 6A through 6E).
-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,
```
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
-$ ./makeDMG4mac.py -p qt5.pkg.macos-HighSierra-release -m
+$ ./makeDMG4mac.py -p ST-qt5MP.pkg.macos-Catalina-release-RsysPsys -m
```
+This command will generate the two files below:
+* **`ST-klayout-0.26.1-macOS-Catalina-1-qt5MP-RsysPsys.dmg`** ---(1) the main DMG file
+* **`ST-klayout-0.26.1-macOS-Catalina-1-qt5MP-RsysPsys.dmg.md5`** ---(2) MD5-value text file
+# 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.
+In such cases, you need to update the dictionary contents of **`build4mac_env.py`**.
-# 5. Alternative building options
-### 5.1 Python 3.7 from Homebrew, Qt 5.10.1 from Homebrew
+# Final comments
+No need to say, KLayout is a great tool!
+With the object-oriented script language (both Ruby and Python) support, our error-prone jobs can be simplified and speed-up.
+Building KLayout from its source code is not difficult. Try it with your favorite environment!
-Homebrew's installation of python3 (`brew install python3`) places a `Python.framework` in `/usr/local/opt/python/Frameworks/Python.framework/`, which you can use to build KLayout from. Qt can also be downloaded from brew with `brew install qt`.
-
-```
-# Build step
-./build4mac.py -p B37 -q Qt5Brew
-# build with log
-./build4mac.py -p B37 -q Qt5Brew 2>&1 | tee qt5.build.macos-HighSierra-release-version.log
-
-
-# Deploy step
-./build4mac.py -p B37 -q Qt5Brew -y # normal deploy
-./build4mac.py -p B37 -q Qt5Brew -y -v 3 2>&1 | tee qt5.pkg.macos-HighSierra-release.log # deploy with debug options
-
-# Packaging step
-./makeDMG4mac.py -p qt5.pkg.macos-HighSierra-release -m -q Qt5101
-
-```
-
-#### Known issues
-
-Because we link python to `/usr/local/opt/python/Frameworks/Python.framework/`, updating python from brew might break KLayout if the new version is incompatible. To fix this, it is better to link python directly to `/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework`, but that might complicate release builds, because that assumes users have the exact version of python installed by brew.
-
-[End of File]
+[End of File]
diff --git a/macbuild/Resources/KLayoutDMG-Back.logoist b/macbuild/Resources/KLayoutDMG-Back.logoist
index ff1fe79dec88aa500f9eccf70c5a4818f5720517..b459680cf0c8db3e19078d8b0dc18f84ecb31a65 100644
GIT binary patch
delta 85657
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 PK8*|}IZyDob!I$=!^XKK5yP{uxIQz&f
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