From c4a588d8be3bf06a8bec023995c51fc653cba46b Mon Sep 17 00:00:00 2001 From: Kazunari Sekigawa Date: Tue, 3 Jun 2025 17:15:00 +0900 Subject: [PATCH] Switch the main development environment to Sequoia --- macbuild/ReadMe.md | 42 +++++++++++----------- macbuild/Resources/script-bundle-A.zip | Bin 6618382 -> 6618381 bytes macbuild/Resources/script-bundle-B.zip | Bin 6606838 -> 6606834 bytes macbuild/Resources/script-bundle-H.zip | Bin 6612172 -> 6612181 bytes macbuild/Resources/script-bundle-P.zip | Bin 6667153 -> 6667153 bytes macbuild/Resources/script-bundle-S.zip | Bin 6639807 -> 6639807 bytes macbuild/build4mac.py | 48 +++++++++++++------------ macbuild/build4mac_env.py | 2 +- macbuild/build4mac_util.py | 2 +- macbuild/macQAT.py | 2 +- macbuild/macQAT.sh | 2 +- macbuild/macQAT2.sh | 2 +- macbuild/makeDMG4mac.py | 36 +++++++++---------- macbuild/nightlyBuild.py | 2 +- macbuild/nightlyBuild.sample.csv | 2 +- macbuild/python3HB.py | 7 ++-- 16 files changed, 74 insertions(+), 73 deletions(-) diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md index 9fea55364..79f408a12 100644 --- a/macbuild/ReadMe.md +++ b/macbuild/ReadMe.md @@ -1,12 +1,12 @@ -Relevant KLayout version: 0.29.11
+Relevant KLayout version: 0.30.2
Author: Kazzz-S
-Last modified: 2025-01-19
+Last modified: 2025-05-30
# 1. Introduction -This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.29.11 or later for different 64-bit macOS, including: -* Sonoma (14.x) : the primary development environment -* Ventura (13.x) : experimental -* Sequoia (15.x) : -- ditto -- +This directory **`macbuild`** contains various files required for building KLayout (http://www.klayout.de/) version 0.30.2 or later for different 64-bit macOS, including: +* Sequoia (15.x) : the primary development environment +* Sonoma (14.x) : experimental +* Ventura (13.x) : -- ditto -- Building KLayout for the previous operating systems listed below has been discontinued.
Pre-built DMG packages are also not provided.
@@ -18,7 +18,7 @@ Pre-built DMG packages are also not provided.
* Sierra (10.12) * El Capitan (10.11) -Throughout this document, the primary target machine is **Intel x86_64** with **macOS Sonoma**.
+Throughout this document, the primary target machine is **Intel x86_64** with **macOS Sequoia**.
All Apple (M1|M2|M3|M4) chips are still untested, as the author does not own an (M1|M2|M3|M4) Mac.
However, some kind volunteers told me they successfully built on an Apple silicon machine.
@@ -43,7 +43,7 @@ If you have installed Anaconda3 under $HOME/opt/anaconda3/, make a symbolic link /Applications/anaconda3/ ---> $HOME/opt/anaconda3/ ``` -The migration work to "Qt6" is ongoing. You can try to use it; however, you might encounter some build and runtime errors.
+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.12.x" (earlier, Python 3.11.x) in this version. @@ -70,7 +70,7 @@ The operating system type is detected automatically. ``` ----------------------------------------------------------------------------------------------------------- << Usage of 'build4mac.py' >> - for building KLayout 0.29.11 or later on different Apple macOS platforms. + for building KLayout 0.30.2 or later on different Apple macOS platforms. $ [python] ./build4mac.py option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details) | default value @@ -123,7 +123,7 @@ $ [python] ./build4mac.py ``` # 6. Use-cases -In this section, the actual file and directory names are those obtained on macOS Sonoma.
+In this section, the actual file and directory names are those obtained on macOS Sequoia.
On different OS, those names differ accordingly. ### 6A. Standard build using the OS-bundled Ruby and Python with MacPorts Qt5 @@ -141,7 +141,7 @@ Confirm that you have: ``` As of this writing, the provided Python version is `3.9.6`. -1. Invoke **`build4mac.py`** with the following options: **((Notes))** These options are the default values for Sonoma, Ventura, and Sequioa. +1. Invoke **`build4mac.py`** with the following options: **((Notes))** These options are the default values for Sequoia, Sonoma, and Ventura. ``` $ cd /where/'build.sh'/exists $ ./build4mac.py -q qt5macports -r sys -p sys @@ -154,7 +154,7 @@ $ ./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-Sonoma-release-RsysPsys`** directory, where + **`ST-qt5MP.pkg.macos-Sequoia-release-RsysPsys`** directory, where * "ST-" means this is a standard package. * "qt5MP" means that Qt5 from MacPorts is used. * "RsysPsys" means that Ruby is 2.6 provided by OS; Python is 3.9 provided by OS. @@ -185,7 +185,7 @@ $ ./build4mac.py -q qt5macports -r mp33 -p mp312 $ ./build4mac.py -q qt5macports -r mp33 -p mp312 -Y ``` The application bundle **`klayout.app`** is located under:
- **`LW-qt5MP.pkg.macos-Sonoma-release-Rmp33Pmp312`** directory, where + **`LW-qt5MP.pkg.macos-Sequoia-release-Rmp33Pmp312`** directory, where * "LW-" means this is a lightweight package. * "qt5MP" means that Qt5 from MacPorts is used. * "Rmp33Pmp312" means that Ruby is 3.3 from MacPorts; Python is 3.12 from MacPorts. @@ -218,7 +218,7 @@ $ ./build4mac.py -q qt6brew -r hb34 -p hb312 $ ./build4mac.py -q qt6brew -r hb34 -p hb312 -Y ``` The application bundle **`klayout.app`** is located under:
- **`LW-qt6Brew.pkg.macos-Sonoma-release-Rhb34Phb312`** directory, where + **`LW-qt6Brew.pkg.macos-Sequoia-release-Rhb34Phb312`** directory, where * "LW-" means this is a lightweight package. * "qt6Brew" means that Qt6 from Homebrew is used. * "Rhb34Phb312" means that Ruby is 3.4 from Homebrew; Python is 3.12 from Homebrew. @@ -258,7 +258,7 @@ $ ./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-Sonoma-release-RsysPhb311`** directory, where + **`HW-qt6Brew.pkg.macos-Sequoia-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. * "RsysPhb311" means that Ruby is OS-bundled; Python is 3.11 from Homebrew. @@ -300,14 +300,14 @@ $ ./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-Sonoma-release-RsysPhb311`** directory, where + **`HW-qt5MP.pkg.macos-Sequoia-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.12 -0. Install Anaconda3 (Anaconda3-2024.06-1-MacOSX-x86_64.pkg), then install Ruby 3.2 and libgit2 by +0. Install Anaconda3 (Anaconda3-2024.10-1-MacOSX-x86_64.pkg), then install Ruby 3.2 and libgit2 by ``` $ conda install ruby=3.2.2 $ conda install libgit2=1.6.4 @@ -327,7 +327,7 @@ $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 $ ./build4mac.py -q qt5ana3 -r ana3 -p ana3 -Y ``` The application bundle **`klayout.app`** is located under:
- **`LW-qt5Ana3.pkg.macos-Sonoma-release-Rana3Pana3`** directory, where + **`LW-qt5Ana3.pkg.macos-Sequoia-release-Rana3Pana3`** directory, where * "LW-" means this is a lightweight package. * "qt5Ana3" means that Qt5 from Anaconda3 is used. * "Rana3Pana3" means that Ruby (3.2) is from Anaconda3; Python (3.12) is from Anaconda3. @@ -394,11 +394,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-Sonoma-release-Rmp33Pmp312 -m +$ ./makeDMG4mac.py -p LW-qt5MP.pkg.macos-Sequoia-release-Rmp33Pmp312 -m ``` This command will generate the two files below:
-* **`LW-klayout-0.29.11-macOS-Sonoma-1-qt5MP-Rmp33Pmp312.dmg`** ---(1) the main DMG file -* **`LW-klayout-0.29.11-macOS-Sonoma-1-qt5MP-Rmp33Pmp312.dmg.md5`** ---(2) MD5-value text file +* **`LW-klayout-0.30.2-macOS-Sequoia-1-qt5MP-Rmp33Pmp312.dmg`** ---(1) the main DMG file +* **`LW-klayout-0.30.2-macOS-Sequoia-1-qt5MP-Rmp33Pmp312.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/script-bundle-A.zip b/macbuild/Resources/script-bundle-A.zip index 8fe31e9384069ec68baa988d64d32287effa8ba7..1260f864525316ac6de656e0d8c16dd59f9ef79f 100644 GIT binary patch delta 4602 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 delta 4437 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≤Q-oUSuSwk4?M5f%;_8D^}V9t)4z4C73YLHG`g> z#Pf7~>Z3+GuW5&^@_AC`=joJ6J5rxKY|{j_)d zr_PxV(LMe&#*N?641BsCsSz%hskl1W#EB(~yXs;0-I!FQu`Lfx#|IjbI+346C%|n) X3JSvTFA4#HUGQ7CKtMo)i@^FXtv)bs diff --git a/macbuild/Resources/script-bundle-B.zip b/macbuild/Resources/script-bundle-B.zip index e48f714404b43fd792806438afdc174c6146b05f..45ca4140b9850c4e2fc2994d1994e46c23a50a64 100644 GIT binary patch delta 7529 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 diff --git a/macbuild/Resources/script-bundle-H.zip b/macbuild/Resources/script-bundle-H.zip index 40ecf395cf5cd7ff680ad1c7ae6cae3e18058c0c..9cd7530f7c27407f91def5ad2ac44a16d007df41 100644 GIT binary patch delta 4902 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 WqV`rCoQ&aq@c$Zo+N8=6sDA)nE3=;f delta 4825 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 O`0r02H0YyU1nd7Jfxeai delta 3048 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 V9l?{eGgyJ&KV$|4`I0zB{|DNWkjVf5 delta 2944 zcmYL~3s98T702Z+APdV=1YMrWYh?k2m5;YCRs~@fER9A(5}MvyTg24qjFXh98EtAe zO`=jMoM=rlbz(J+l-i8mY8a5%3BnP$*>n~3zx zXwL@)zyapV8SRDVU)ox{tvFy?F*{mpI_Q$K9APCU&u*CtW`Wrt4W!H6GGmQPCXCz9 zHFz3di~`Xh222C7vhl^~>(6_JT_z9+fz*Nl!7u)4l2L`un;T)i@_3537lXlSO%7ZDo_npfErK>Tr$P(j`%YTW*5cC%NO|o z>+Ingxt0hsRh{7xvhO}W%BaaL!f3@AZlPbgG2O>c@d8~l%Q35Xm(i_A{M!~OVuEPw zCf8)mL%zrxNY?)gA!TDf|B%U~@A-K~5!I8SvZ@hk>UD&IW~MFGB3cfG3MZqt%S4z= zyv-d<#TyC~yO>1i*(TaNA7ka`c?XjlzvSOBdgB9bmhKPuWkydg^Tj^K#2!_^mQ-<^ z(VYSArklfX+%e2wRZ*!%6A@}s>oiod=^-y9w}why>*3MVHNl7EwD-9qfEE;p5LtSP zU-Es}Ho+}&(F8A0_OU+R$Y?`2)*vZdG&6ZAUi2~QsuLk(yUHWwdr6{~QOjMVPrS=t zW|Zncmfxj{2)XJE-^S#vYkWJSJ+-L*i))BI7AtNsxqghdvtvE{teVM&8~oR5cji?h z)#eBMBBSq}!Xhs`;`NNS6i)`#uJS{S{&F1oo;uDyV)ElbzKW5(%C|bQd#d;;;vdu= z3zWOt__H=DNfT9s{tz2B#rN~p);t<_nGz^Lzs7&e6v?JIXAo^4wOeUlhR8P6EDNH0 zyYgq!Xa?>{jqdQ);!q_e2W5uR&P-t;^oZDSBW6xU6dlPD^C&SL{$+EcXjYe&LXGLz z0JM%|)2^K{ls9fqr*r5TdJ9Q4#Y9chquQv|hJahs;5Bo1ye`e46KNuvTJ%``BUTmb zaJrb@nJKKMZ$G!HYP3u-ol3Ld)KHYFN1sDXpF#2~smh@$L(HU0Y4~Q_>P#hB+@>&! zN=L#cGw|WhZ`hSSRu>mWN76+$8?B<1Hesa)=^|e570ITrJ2ZWA@nl6VdEF-74WJgg zNTzqPMGpP%uognSc41>(2Wfnc$kvr$s_)XQRFH#mnlpPf(#86_Ph+w6!(s-VjPfdlQh>>B0)Ad4;OKth^`R@+p2&MII6ghjBUkM>x^XN`DJ{tK01uTT$f*Ks|PgX!#*x^?y+0RJD zOs&OPJXwR`_Y6g&IwvYA+M|5XBqFG_0(bCqrLeMgL$*+HnJ8mjdzB-4NSN+uW5KWc z6|?f$_@+|OVZ!LqJopS6ikW)*xvG2VK02~gRM7JkIA|S9k?#$!@;r;)uOgraIasq{ zcpFj~`^Nz_jF#kJv#@dcLO0*$R%$B6^vVw@1sy7a>X#$`YldQ>6U(vw-dP8BDaVtg zLSs#aVWI7x`f9w_tz6LI9IX1Ue#1;-^C!3Q^xyQ=UdK}2(f?McMR?_?^3^*bRTQDD zVMDQc_f7m=xu8QjSg&E2sfMYo4XCAi`Uyb8^saUUEvy&Tfc<{eOmiIAm4;sGFP~h= z{pDE6!(OFX%`>@QB|>x6SgT?9_H_4v8m=h70r?~!rA`=%?|>XQt$g%0t2QitG18dM z_~j(E_z8nvrL%AHAay(8_ncp~(3W|q__=fHL%l=O!)oLlG8DBucP}UxbZ+0|J6#A> zdC@Op6I_UOa7b4QRdcVcL#%+yex;JV@V@#$@AdS=0t{a@6qPFapUTDi2AnK_OS7Rk zS=UEu7*B$)k_Xp#l*Q#Ff zprNP*T{*5?@W}aA49CDieGc@RL&g|x##!G?5Bytwfd|pSrrh@%W_rC!BvD7UNMT))Hnk`CLzhOjD*xOn-HQCW8TXRKfzyN(#i3J+U6|u2F!TLUJ!0#_|r%WkI6R`dd D1U8 ../Frameworks/Python.framework/ <=== this symbolic was needed # pkgconfig/ # # Use the "python3HB.py" tool to make different symbolic links [*] including the above one. - # Sonoma{kazzz-s} lib (1)% pwd + # Sequoia{kazzz-s} lib (1)% pwd # /usr/local/opt/python@3.11/lib - # Sonoma{kazzz-s} lib (2)% ll + # Sequoia{kazzz-s} lib (2)% ll # total 0 # drwxr-xr-x 4 kazzz-s admin 128 9 21 23:03 . # drwxr-xr-x 14 kazzz-s admin 448 9 21 18:33 .. # [*] lrwxr-xr-x 1 kazzz-s admin 31 9 21 23:03 Python.framework -> ../Frameworks/Python.framework/ # drwxr-xr-x 4 kazzz-s admin 128 9 7 10:03 pkgconfig # - # Sonoma{kazzz-s} Python.framework (3)% pwd + # Sequoia{kazzz-s} Python.framework (3)% pwd # /usr/local/opt/python@3.11/Frameworks/Python.framework/Versions - # Sonoma{kazzz-s} Versions (4)% ll + # Sequoia{kazzz-s} Versions (4)% ll # total 0 # drwxr-xr-x 4 kazzz-s admin 128 9 21 23:03 . # drwxr-xr-x 6 kazzz-s admin 192 9 21 23:03 .. # drwxr-xr-x 9 kazzz-s admin 288 9 7 10:03 3.11 # [*] lrwxr-xr-x 1 kazzz-s admin 5 9 21 23:03 Current -> 3.11/ # - # Sonoma{kazzz-s} Python.framework (5)% pwd + # Sequoia{kazzz-s} Python.framework (5)% pwd # /usr/local/opt/python@3.11/Frameworks/Python.framework - # Sonoma{kazzz-s} Python.framework (6)% ll + # Sequoia{kazzz-s} Python.framework (6)% ll # total 0 # drwxr-xr-x 6 kazzz-s admin 192 9 21 23:03 . # drwxr-xr-x 3 kazzz-s admin 96 9 7 10:03 .. diff --git a/macbuild/build4mac_env.py b/macbuild/build4mac_env.py index e3527edf6..cac9623de 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.29.11 or later on different Apple Mac OSX platforms. +# version 0.30.2 or later on different Apple Mac OSX platforms. # # This file is imported by 'build4mac.py' script. #=============================================================================== diff --git a/macbuild/build4mac_util.py b/macbuild/build4mac_util.py index 2fabd423b..7acc1fe47 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.29.7 or later on different Apple Mac OSX platforms. +# version 0.30.2 or later on different Apple Mac OSX platforms. # # This file is imported by 'build4mac.py' script. #======================================================================================== diff --git a/macbuild/macQAT.py b/macbuild/macQAT.py index 97ccd563a..e0a0ab90a 100755 --- a/macbuild/macQAT.py +++ b/macbuild/macQAT.py @@ -5,7 +5,7 @@ # File: "macbuild/macQAT.py" # # The top Python script to run "ut_runner" after building KLayout -# (http://www.klayout.de/index.php) version 0.29.7 or later on different +# (http://www.klayout.de/index.php) version 0.30.2 or later on different # Apple Mac OSX platforms. # # This script must be copied to a "*.macQAT/" directory to run. diff --git a/macbuild/macQAT.sh b/macbuild/macQAT.sh index 5f1e5eb90..162c3765c 100755 --- a/macbuild/macQAT.sh +++ b/macbuild/macQAT.sh @@ -4,7 +4,7 @@ # File: "macbuild/macQAT.sh" # # The top Bash script to run "ut_runner" after building KLayout -# (http://www.klayout.de/index.php) version 0.29.7 or later on different +# (http://www.klayout.de/index.php) version 0.30.2 or later on different # Apple Mac OSX platforms. # # This script must be copied to a "*.macQAT/" directory to run. diff --git a/macbuild/macQAT2.sh b/macbuild/macQAT2.sh index 42f0763fd..0736cc1b7 100755 --- a/macbuild/macQAT2.sh +++ b/macbuild/macQAT2.sh @@ -4,7 +4,7 @@ # File: "macbuild/macQAT2.sh" # # The top Bash script to run "ut_runner" after building KLayout -# (http://www.klayout.de/index.php) version 0.29.7 or later on different +# (http://www.klayout.de/index.php) version 0.30.2 or later on different # Apple Mac OSX platforms. # # This script must be copied to a directory that can be found in $PATH. diff --git a/macbuild/makeDMG4mac.py b/macbuild/makeDMG4mac.py index b7e7aa9da..7c62caab3 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.29.11 or later on different Apple macOS platforms.\n" + Usage += " for making a DMG file of KLayout 0.30.2 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-Monterey-release-Rmp33Pmp311' | \n" + Usage += " : like 'LW-qt5MP.pkg.macos-Sequoia-release-Rmp33Pmp312' | \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" @@ -218,17 +218,17 @@ def SetGlobals(): ## To check the contents of the package directory # # The package directory name should look like: -# * ST-qt5MP.pkg.macos-Sonoma-release-RsysPsys -# * LW-qt5Ana3.pkg.macos-Sonoma-release-Rana3Pana3 -# * LW-qt6Brew.pkg.macos-Sonoma-release-Rhb34Phb312 --- (1) -# * LW-qt5MP.pkg.macos-Sonoma-release-Rmp33Pmp312 -# * HW-qt6Brew.pkg.macos-Sonoma-release-RsysPhb311 +# * 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-qt6MP.pkg.macos-Sonoma-release-RsysPsys -# * LW-qt6MP.pkg.macos-Sonoma-release-Rmp33Pmp312 +# * ST-qt6MP.pkg.macos-Sequoia-release-RsysPsys +# * LW-qt6MP.pkg.macos-Sequoia-release-Rmp33Pmp312 # # Generated DMG will be, for example, -# (1) ---> LW-klayout-0.29.7-macOS-Sonoma-1-qt6Brew-Rhb34Phb312.dmg +# (1) ---> LW-klayout-0.30.2-macOS-Sequoia-1-qt6Brew-Rhb34Phb312.dmg # # @return on success, positive integer in [MB] that tells approx. occupied disc space; # on failure, -1 @@ -268,15 +268,15 @@ def CheckPkgDirectory(): #----------------------------------------------------------------------------------------------- # [2] Identify (Qt, Ruby, Python) from PkgDir - # * ST-qt5MP.pkg.macos-Sonoma-release-RsysPsys - # * LW-qt5Ana3.pkg.macos-Sonoma-release-Rana3Pana3 - # * LW-qt6Brew.pkg.macos-Sonoma-release-Rhb34Phb312 - # * LW-qt5MP.pkg.macos-Sonoma-release-Rmp33Pmp312 - # * HW-qt6Brew.pkg.macos-Sonoma-release-RsysPhb311 - # * EX-qt5MP.pkg.macos-Sonoma-release-Rhb34Pmp312 + # * 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-qt6MP.pkg.macos-Sonoma-release-RsysPsys - # * LW-qt6MP.pkg.macos-Sonoma-release-Rmp33Pmp312 + # * ST-qt6MP.pkg.macos-Sequoia-release-RsysPsys + # * LW-qt6MP.pkg.macos-Sequoia-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]+)' diff --git a/macbuild/nightlyBuild.py b/macbuild/nightlyBuild.py index 0cd27822a..8c3d51e27 100755 --- a/macbuild/nightlyBuild.py +++ b/macbuild/nightlyBuild.py @@ -339,7 +339,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.29.7' |\n" + Usage += " (6) $ ./nightlyBuild.py --upload '0.30.2' |\n" Usage += " (7) $ ./nightlyBuild.py --cleandmg 1 |\n" Usage += "-----------------------------------------------------------------------------+----------------------------\n" diff --git a/macbuild/nightlyBuild.sample.csv b/macbuild/nightlyBuild.sample.csv index 30ba786a3..bea222f3a 100644 --- a/macbuild/nightlyBuild.sample.csv +++ b/macbuild/nightlyBuild.sample.csv @@ -18,7 +18,7 @@ qtVer,target,bdType 5,0,r 5,1,r 6,2,r -6,13,r +5,13,r 5,4,r #6,0,r #6,1,r diff --git a/macbuild/python3HB.py b/macbuild/python3HB.py index 82046c09b..7015618b4 100755 --- a/macbuild/python3HB.py +++ b/macbuild/python3HB.py @@ -33,8 +33,7 @@ def SetGlobals(): Usage += "\n" Usage += " option & argument : descriptions | default value\n" Usage += " -------------------------------------------------------------------+---------------\n" - Usage += " <-v|--version >: in ['3.8', '3.9', '3.10', '3.11', '3.12', | ''\n" - Usage += " '3.13'] |\n" + Usage += " <-v|--version >: in ['3.11', '3.12','3.13'] | ''\n" Usage += " [-u|-unlink] : unlink only | disabled\n" Usage += " [-?|--?] : print this usage and exit | disabled\n" Usage += "----------------------------------------------------------------------+-----------------\n" @@ -50,7 +49,7 @@ def Parse_CLI_Args(): p.add_option( '-v', '--version', dest='version', - help="python3 version=['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']" ) + help="python3 version=['3.11', '3.12', '3.13']" ) p.add_option( '-u', '--unlink', action='store_true', @@ -75,7 +74,7 @@ def Parse_CLI_Args(): Version = opt.version UnlinkOnly = opt.unlink - if not Version in [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13' ]: + if not Version in [ '3.11', '3.12', '3.13' ]: print( "! Unsupported Python 3 version <%s>" % Version ) print(Usage) sys.exit(0)