You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by pe...@apache.org on 2026/09/10 04:10:47 UTC
(openoffice) 03/13: Apple Silicon: macOS bundled-Python packaging; the .dmg builds
This is an automated email from the ASF dual-hosted git repository.
leginee pushed a commit to branch mac-vcl-button-contrast
in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit 1ef42111e53fc0a941193f799de3d09acc12ce3f
Author: peter kovacs <pe...@apache.org>
AuthorDate: Thu Sep 3 07:40:53 2026 +0200
Apple Silicon: macOS bundled-Python packaging; the .dmg builds
instsetoo_native now produces native arm64 Apache OpenOffice 5.1.0 .dmg
installers (en-US de es fr it nl pt ru + SDK). "Successful packaging
process!"; OpenOffice.app/Contents/MacOS/soffice is Mach-O arm64.
scp2's macOS Python packaging expected an OOoPython.framework
(OOoPython.framework.zip, Python.app symlinks) that no build has produced
in years -- python/makefile.mk and pyuno/zipcore build the Unix
python-core-$(PYVERSION).zip layout on macOS exactly as on Linux. Point
the macOS scp2 branches at that layout instead:
- scp2/source/python/file_python.scp: gid_File_Py_Python_Core uses
python-core-<ver>.zip on macOS too; gid_File_Py_Python_Bin enabled for
macOS; the framework Directory/Unixlink block replaced by a plain
gid_File_Lib_Python_So (libpython3.11.dylib -> program/).
- scp2/source/python/profileitem_python.scp: macOS PYUNO_LOADER_PYTHONHOME
/ PYTHONPATH use $ORIGIN/python-core-<ver> like the other UNX.
- scp2/source/ooo/file_library_ooo.scp: gid_File_Lib_Xslt is skipped on
macOS -- the bundled libxslt is built static there (like libxml2), so
there is no shared libxslt.1.dylib to package.
Not yet done (see .agent/mac-silicon-port.md): launch/smoke-test the app
and pyuno; check libpython3.11.dylib / pyuno.so install-name
relocatability; code-signing.
Co-Authored-By: Claude Sonnet 5 <no...@anthropic.com>
---
.agent/mac-silicon-port.md | 53 +++++++-
main/scp2/source/ooo/file_library_ooo.scp | 9 +-
main/scp2/source/python/file_python.scp | 175 +------------------------
main/scp2/source/python/profileitem_python.scp | 11 --
4 files changed, 57 insertions(+), 191 deletions(-)
diff --git a/.agent/mac-silicon-port.md b/.agent/mac-silicon-port.md
index 43d42c03af..41359f84bf 100644
--- a/.agent/mac-silicon-port.md
+++ b/.agent/mac-silicon-port.md
@@ -264,15 +264,54 @@ After that: rerun `./mac-silicon-build.sh`; if the DMG builds, smoke-test
`pyuno` script). Then: code-signing / notarization for distribution (not done on this
branch).
-## Status / Next
+## Milestone 3 — RESULT: the `.dmg` builds ✅ (2026-09-03)
+
+`./mac-silicon-build.sh --from scp2` → **`Successful packaging process!`**. Produced
+under `main/instsetoo_native/unxmaccr.pro/`:
+- `Apache_OpenOffice/dmg/install/<lang>/Apache_OpenOffice_5.1.0_MacOS_aarch64_install_<lang>.dmg`
+ for en-US de es fr it nl pt ru (~155–198 MB each)
+- `Apache_OpenOffice_SDK/dmg/install/en-US/Apache_OpenOffice-SDK_5.1.0_MacOS_aarch64_install_en-US.dmg`
+
+Verified (mounted en-US dmg): proper layout (`OpenOffice.app`, `Applications` symlink,
+LICENSEs, READMEs); `OpenOffice.app/Contents/MacOS/soffice` = **Mach-O arm64**;
+`python-core-3.11.15/lib/urllib/` complete.
+
+### Milestone-3 fix: macOS bundled-Python packaging (option b)
+
+`scp2` was written for a pre-2011 macOS Python **framework** (`OOoPython.framework.zip`)
+that no build has produced in years — `python/makefile.mk` + `pyuno/zipcore/makefile.mk`
+build the Unix `python-core-$(PYVERSION).zip` layout on macOS just like Linux. Switched
+the macOS `scp2` branches to that layout:
+- `scp2/source/python/file_python.scp`: `gid_File_Py_Python_Core` → `python-core-<ver>.zip`
+ for macOS too; enable `gid_File_Py_Python_Bin` on macOS; replace the whole framework
+ `Directory`/`Unixlink` block with a plain `gid_File_Lib_Python_So` (`libpython3.11.dylib`
+ into `program/`).
+- `scp2/source/python/profileitem_python.scp`: macOS `PYUNO_LOADER_PYTHONHOME` /
+ `PYTHONPATH` use `$ORIGIN/python-core-<ver>` like the other UNX.
+- `scp2/source/ooo/file_library_ooo.scp`: `gid_File_Lib_Xslt` — skip on macOS (bundled
+ libxslt is static there, like libxml2, so no shared lib to ship).
+
+### Benign warnings (verified harmless)
+- "ERROR: The following errors occurred in packaging process: ... Copy: .../urllib/error.py"
+ — `error.py` is nonetheless present in the mounted dmg; the installer double-lists that
+ first file and logs a scary line. dmake returns 0, "Successful packaging process!".
+- "Some modules contain old output trees" — leftover from earlier partial runs; cosmetic.
-**Milestone 2 committed** on `mac-silicon-minimal`: `mac-silicon-build.sh`,
-`libxml2/makefile.mk` (`xmllint` deliver path), `scp2/.../file_library_ooo.scp` (openssl
-dylib names), configure-wrapper flags (`--without-system-{curl,libxml,libxslt}`, JDK 8),
-`mac-silicon-bootstrap.sh` (CA bundle), this doc.
+## Status / Next
-**Next:** the macOS bundled-Python packaging item above → then a building `.dmg`.
-Other known gaps: NSS 3.39 age (compiled OK here, watch at runtime); code-signing.
+**A native arm64 Apache OpenOffice 5.1.0 `.dmg` for Apple Silicon now builds from trunk.**
+Committed on `mac-silicon-minimal`.
+
+**Next (validation / polish, not yet done):**
+1. Smoke-test the app: mount en-US dmg, copy `OpenOffice.app` to /Applications, launch
+ (`open`), open Writer, run a Basic macro, run a `pyuno` script (`python-core` layout is
+ new on macOS — `PYTHONHOME`/`PYTHONPATH` + `libpython3.11.dylib` install-name
+ relocatability are the things to check).
+2. `libpython3.11.dylib` / `pyuno.so` install-name check (`--enable-shared` non-framework
+ CPython can bake an absolute `install_name`).
+3. From-scratch `./mac-silicon-build.sh` on a clean tree to confirm no ordering luck.
+4. Code-signing / notarization for distribution.
+5. NSS 3.39 age — compiled fine; watch at runtime (signatures / cert UI).
**Milestone 1 (configure + bootstrap) DONE** — committed on `mac-silicon-minimal`
(`503d3e75c9`): `main/mac-silicon-configure.sh`, `main/mac-silicon-bootstrap.sh`,
diff --git a/main/scp2/source/ooo/file_library_ooo.scp b/main/scp2/source/ooo/file_library_ooo.scp
index 922e0f73d1..345048aa2f 100644
--- a/main/scp2/source/ooo/file_library_ooo.scp
+++ b/main/scp2/source/ooo/file_library_ooo.scp
@@ -1593,16 +1593,16 @@ STD_JAR_FILE( gid_File_Jar_Xsltvalidate, XSLTValidate )
#endif
#ifndef SYSTEM_LIBXSLT
+// On macOS the bundled libxslt is built static (--enable-shared=no, like
+// main/libxml2) and linked into its consumers, so there is no shared
+// libxslt to package -- mirror libxml2, which has no scp2 File entry.
+#ifndef MACOSX
File gid_File_Lib_Xslt
TXT_FILE_BODY;
Styles = (PACKED);
Dir = SCP2_OOO_BIN_DIR;
#ifdef UNX
- #ifdef MACOSX
- Name = STRING(CONCAT4(libxslt,.,LIBXSLT_MAJOR,UNXSUFFIX));
- #else
Name = STRING(CONCAT4(libxslt,UNXSUFFIX,.,LIBXSLT_MAJOR));
- #endif
#else
#ifdef _gcc3
Name = "libxslt-1.dll";
@@ -1612,6 +1612,7 @@ File gid_File_Lib_Xslt
#endif
End
#endif
+#endif
STD_LIB_FILE( gid_File_Lib_Unoxml, unoxml )
diff --git a/main/scp2/source/python/file_python.scp b/main/scp2/source/python/file_python.scp
index 95f64c09db..7116bb0b2e 100644
--- a/main/scp2/source/python/file_python.scp
+++ b/main/scp2/source/python/file_python.scp
@@ -112,27 +112,24 @@ File gid_File_Py_Python_Core
Dir = gid_Dir_Common_Ure;
#endif
// Dir = gid_Dir_Program;
- #ifdef MACOSX
- Name = "OOoPython.framework.zip";
- Styles = (ARCHIVE,USE_INTERNAL_RIGHTS);
- #else
Name = STRING(CONCAT3(python-core-,PYVERSION,.zip));
Styles = (ARCHIVE);
- #endif
End
#ifdef UNX
-#ifndef MACOSX
File gid_File_Py_Python_Bin
BIN_FILE_BODY;
+#if defined MACOSX
+ Dir = gid_Brand_Dir_Program;
+#else
Dir = gid_Dir_Common_Ure;
+#endif
// Dir = gid_Dir_Program;
Name = "python.bin";
Styles = (PACKED);
End
#endif
#endif
-#endif
// Scripting Framework Python script proxy
@@ -167,177 +164,17 @@ File gid_File_Share_Registry_Pyuno_Xcd
End
#ifndef SYSTEM_PYTHON
-#ifndef MACOSX
File gid_File_Lib_Python_So
TXT_FILE_BODY;
- Dir = gid_Dir_Common_Ure;
-// Dir = gid_Dir_Program;
- Name = STRING(PY_FULL_DLL_NAME);
- Styles = (PACKED);
-End
-#else //MACOSX
-//directory entries solely to be able to create the symlinks
-Directory gid_Dir_PythonFramework
#if defined MACOSX
Dir = gid_Brand_Dir_Program;
#else
Dir = gid_Dir_Common_Ure;
#endif
-// ParentID = gid_Dir_Program;
- HostName = "OOoPython.framework";
-End
-
-Unixlink gid_Unixlink_Python_Headers
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework;
- Name = "Headers";
- Target = "Versions/Current/Headers";
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_Resources
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework;
- Name = "Resources";
- Target = "Versions/Current/Resources";
- Styles = ();
-End
-
-Directory gid_Dir_PythonFramework_Versions
- ParentID = gid_Dir_PythonFramework;
- HostName = "Versions";
-End
-
-Unixlink gid_Unixlink_Python_Versions_Current
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions;
- Name = "Current";
- Target = STRING(PYMAJMIN);
- Styles = ();
-End
-
-Directory gid_Dir_PythonFramework_Versions_ver
- ParentID = gid_Dir_PythonFramework_Versions;
- HostName = STRING(PYMAJMIN);
-End
-
-Unixlink gid_Unixlink_Python_Versions_ver_Headers
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver;
- Name = "Headers";
- Target = STRING(CONCAT2(include/python,PYMAJMIN));
- Styles = ();
-End
-
-Directory gid_Dir_PythonFramework_Versions_ver_bin
- ParentID = gid_Dir_PythonFramework_Versions_ver;
- HostName = "bin";
-End
-
-Directory gid_Dir_PythonFramework_Versions_ver_lib
- ParentID = gid_Dir_PythonFramework_Versions_ver;
- HostName = "lib";
-End
-
-Directory gid_Dir_PythonFramework_Versions_ver_lib_pythonver
- ParentID = gid_Dir_PythonFramework_Versions_ver_lib;
- HostName = STRING(CONCAT2(python,PYMAJMIN));
-End
-
-Directory gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config
- ParentID = gid_Dir_PythonFramework_Versions_ver_lib_pythonver;
- HostName = "config";
-End
-
-Unixlink gid_Unixlink_Python_OOoPython
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework;
- Name = "OOoPython";
- Target = "Versions/Current/OOoPython";
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_idle
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "idle";
- Target = STRING(CONCAT2(idle,PYMAJMIN));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_pydoc
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "pydoc";
- Target = STRING(CONCAT2(pydoc,PYMAJMIN));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_python_real
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "python";
- Target = "../Resources/Python.app/Contents/MacOS/OOoPython";
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_python
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "python";
- Target = STRING(CONCAT2(python,PYMAJMIN));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_pythonconfig
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "python-config";
- Target = STRING(CONCAT3(python,PYMAJMIN,-config));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_pythonw_real
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "pythonw";
- Target = "../Resources/Python.app/Contents/MacOS/OOoPython";
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_pythonw
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "pythonw";
- Target = STRING(CONCAT2(pythonw,PYMAJMIN));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_bin_smtpdpy
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_bin;
- Name = "smtpd.py";
- Target = STRING(CONCAT3(smtpd,PYMAJMIN,.py));
- Styles = ();
-End
-
-Unixlink gid_Unixlink_Python_libpython
- BIN_FILE_BODY;
- Dir = gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config;
+// Dir = gid_Dir_Program;
Name = STRING(PY_FULL_DLL_NAME);
- Target = "../../../OOoPython";
- Styles = ();
+ Styles = (PACKED);
End
-#endif //MACOSX
-
-//#ifdef WNT
-//File gid_File_Lib_Python_So_Brand // Fix for system-python-problem on windows
-// TXT_FILE_BODY;
-// Dir = gid_Brand_Dir_Program;
-// Name = STRING(PY_FULL_DLL_NAME);
-// Styles = (PACKED);
-//End
-//#endif
#endif
#ifdef UNX
diff --git a/main/scp2/source/python/profileitem_python.scp b/main/scp2/source/python/profileitem_python.scp
index 4ae2f5b177..00c02d91bd 100644
--- a/main/scp2/source/python/profileitem_python.scp
+++ b/main/scp2/source/python/profileitem_python.scp
@@ -47,11 +47,7 @@ ProfileItem gid_Profileitem_Pythonloader_Pythonhome
Section = "Bootstrap";
Order = 1;
Key = "PYUNO_LOADER_PYTHONHOME";
- #ifdef MACOSX
- Value = CONCAT2($ORIGIN,"OOoPython.framework");
- #else
Value = CONCAT2($ORIGIN/python-core-,PYVERSION);
- #endif
End
#endif
@@ -65,17 +61,10 @@ ProfileItem gid_Profileitem_Pythonloader_Pythonpath
Value = "$ORIGIN";
#else
#ifdef UNX
- #ifdef MACOSX
- #define FRAMEWORKLIB CONCAT4($ORIGIN/OOoPython.framework/Versions/,PYMAJMIN,/lib/python,PYMAJMIN)
- Value = CONCAT3(FRAMEWORKLIB FRAMEWORKLIB,
- /lib-dynload FRAMEWORKLIB,
- /site-packages $ORIGIN);
- #else
Value = CONCAT7($ORIGIN/python-core-,PYVERSION,
/lib $ORIGIN/python-core-,PYVERSION,
/lib/lib-dynload $ORIGIN/python-core-,PYVERSION,
/lib/site-packages $ORIGIN);
- #endif
#else
#ifdef _gcc3
Value = STRING(CONCAT7($ORIGIN/python-core-,PYVERSION,