Updated the macOS build system to build KLayout 0.29.1

This commit is contained in:
Kazunari Sekigawa 2024-05-05 08:17:57 +09:00
parent f95aef89d2
commit 432c962feb
3 changed files with 52 additions and 14 deletions

View File

@ -1,6 +1,6 @@
Relevant KLayout version: 0.29.0<br> Relevant KLayout version: 0.29.1<br>
Author: Kazzz-S<br> Author: Kazzz-S<br>
Last modified: 2024-03-27<br> Last modified: 2024-05-01<br>
# 1. Introduction # 1. Introduction
This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.29.0 or later for different 64-bit macOS, including: This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.29.0 or later for different 64-bit macOS, including:
@ -188,8 +188,10 @@ $ ./build4mac.py -q qt5macports -r mp33 -p mp311 -Y
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.3 and Homebrew Python 3.11 ### 6C. Fully Homebrew-flavored build with Homebrew Ruby 3.3 and Homebrew Python 3.11
> [!IMPORTANT] > [!CAUTION]
> To build KLayout >= 0.29.0, you need "Qt6" to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599). > To build KLayout >= 0.29.0, you need "Qt6" to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599).<br>
> However, the current KLayout is not compliant with the latest Qt6.7.0, so you will get another compilation error.<br>
> Therefore, this section will be disabled for the time being.
0. Install Homebrew, then install Qt6, Ruby 3.3, Python 3.11, and libgit2 by 0. Install Homebrew, then install Qt6, Ruby 3.3, Python 3.11, and libgit2 by
``` ```
@ -222,13 +224,10 @@ $ ./build4mac.py -q qt6brew -r hb33 -p hb311 -Y
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.11 ### 6D. Partially Homebrew-flavored build with System Ruby and Homebrew Python 3.11
> [!IMPORTANT]
> To build KLayout >= 0.29.0, you need "Qt6" to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599).
> [!CAUTION] > [!CAUTION]
> Homebrew Qt6.6.2 seems buggy. More precisely, it does not perfectly deploy the required Qt frameworks. > To build KLayout >= 0.29.0, you need "Qt6" to address [the compilation issue](https://github.com/KLayout/klayout/issues/1599).<br>
> If you plan to distribute an HW*.dmg package, consider using Qt6.4.x from MacPorts. > However, the current KLayout is not compliant with the latest Qt6.7.0, so you will get another compilation error.<br>
> That is, substitute `qt6brew` with `qt6macports` in the following command lines. > Therefore, this section will be disabled for the time being.
0. Install Homebrew, then install Qt6, Python 3.11, and libgit2 by 0. Install Homebrew, then install Qt6, Python 3.11, and libgit2 by
``` ```
@ -261,7 +260,46 @@ $ ./build4mac.py -q qt6brew -r sys -p hb311 -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.2 and Anaconda3 Python 3.11 ### 6E. Heterogeneous combination of MacPorts Qt5, System Ruby, and Homebrew Python 3.11
> [!IMPORTANT]
> This is a practical solution for building an HW*.dmg package.
0. Install MacPorts, then install Qt5 and libgit2 by
```
$ sudo port install coreutils
$ sudo port install findutils
$ sudo port install qt5
$ sudo port install libgit2
```
Then, install Homebrew, then install Python 3.11 by
```
$ brew install python@3.11
$ cd /where/'build.sh'/exists
$ cd macbuild
$ ./python3HB.py -v 3.11
```
1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5macports -r sys -p hb311
```
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.<br>
The buddy command-line tools (strm*) will also be deployed under **klayout.app/Contents/Buddy/** in this step.<br>
```
$ ./build4mac.py -q qt5macports -r sys -p hb311 -y
```
The application bundle **`klayout.app`** is located under:<br>
**`HW-qt5MP.pkg.macos-Monterey-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.
* "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.
### 6F. Fully Anaconda3-flavored build with Anaconda3 Ruby 3.2 and Anaconda3 Python 3.11
0. Install Anaconda3 (Anaconda3-2023.09-0-MacOSX-x86_64.pkg), then install Ruby 3.2 and libgit2 by 0. Install Anaconda3 (Anaconda3-2023.09-0-MacOSX-x86_64.pkg), then install Ruby 3.2 and libgit2 by
``` ```
$ conda install ruby=3.2.2 $ conda install ruby=3.2.2
@ -292,11 +330,11 @@ $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 -Y
export PYTHONHOME=$HOME/opt/anaconda3 export PYTHONHOME=$HOME/opt/anaconda3
``` ```
### 6F. Other combinations ### 6G. Other combinations
Logically, several module combinations other than 6B through 6E are possible, including `nil` choice.<br> Logically, several module combinations other than 6B through 6E 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.
### 6G. Using the git-based Salt Package Manager through a proxy server ### 6H. Using the git-based Salt Package Manager through a proxy server
If you use the git-based Salt Package Manager through a proxy server, you need to set the `KLAYOUT_GIT_HTTP_PROXY` environment variable. For example, If you use the git-based Salt Package Manager through a proxy server, you need to set the `KLAYOUT_GIT_HTTP_PROXY` environment variable. For example,
``` ```
$ export KLAYOUT_GIT_HTTP_PROXY="http://111.222.333.444:5678" $ export KLAYOUT_GIT_HTTP_PROXY="http://111.222.333.444:5678"

View File

@ -182,7 +182,7 @@ RubySonoma = { 'exe': '/System/Library/Frameworks/Ruby.framework/Versions/
# install with 'sudo port install ruby33' # install with 'sudo port install ruby33'
# [Key Type Name] = 'MP33' # [Key Type Name] = 'MP33'
Ruby33MacPorts = { 'exe': '/opt/local/bin/ruby3.3', Ruby33MacPorts = { 'exe': '/opt/local/bin/ruby3.3',
'inc': '/opt/local/include/ruby-3.3.0', 'inc': '/opt/local/include/ruby-3.3.1',
'lib': '/opt/local/lib/libruby.3.3.dylib' 'lib': '/opt/local/lib/libruby.3.3.dylib'
} }