Apache OpenOffice Documentation

repository·trunk·Indexed 22 days ago

https://github.com/apache/openoffice

Technical documentation for the Apache OpenOffice (AOO) productivity suite. Includes guides on building the C++ project from source, managing branch differences between trunk and AOO42X, assembly versioning for cli_ure, and internal architectural details of the configmgr module.

Tokens
20.9K
Snippets
34
Records
128
Agent score
76%

What's inside Apache OpenOffice

  1. Overview of GCOV Coverage information helper functions

    trunk
    The main/sal/qa/helper/gcov/ directory contains a suite of helper functions and scripts designed to process and interpret GCOV coverage information within the Apache OpenOffice QA environment. These tools assist in managing, filtering, and interpreting code coverage data.
  2. Use the sp2bv tool to convert system paths to escaped file URLs

    trunk

    The sp2bv tool is used to transform system-specific file paths into escaped file URLs suitable for use as bootstrap variables. The conversion process performs two main steps:

    1. Converts the system path into a file:/// URL format (e.g., converting backslashes to forward slashes and handling drive letters).
    2. Escapes special characters (such as $) to ensure the URL is safe for use in bootstrap contexts.

    Example Transformation: c:\program files\App$ becomes file:///c:/program%20files/App\$

  3. Understand the Certificate Authority (CA) directory structure for testing

    trunk

    The main/xmlsecurity/test_docs/CAs/ directory contains various directory structures used by OpenSSL to create and manage certificates for testing purposes. These structures represent different Certificate Authority (CA) hierarchies, allowing developers to test certificate validation, revocation, and chain-of-trust scenarios.

    Each root directory (e.g., Root 1, Root 2) represents a distinct testing scenario with specific characteristics regarding:

    • CRL (Certificate Revocation List): Whether the CA provides a CRL.
    • CRL via HTTP: Whether the CRL is accessible via an HTTP endpoint.
    • OCSP (Online Certificate Status Protocol): Whether the CA provides OCSP services.
    • CRLDP (CRL Distribution Point): The specific URL for CRL distribution.
    • AIA (Authority Information Access): Information for locating the issuer or OCSP responder.
    • Revocation Status: Scenarios including valid certificates, revoked intermediate CAs (e.g., due to keyCompromise), and revoked end-entity certificates.
  4. Understand the relationship between nss, moz, and moz_prebuilt

    trunk

    The nss module contains security libraries that are also part of moz, but nss is updated more frequently.

    Build Order and Environment Variables

    • The build depends on the environment variable ENABLE_NSS_MODULE.
    • By default, ENABLE_NSS_MODULE is set to YES.
    • When YES, nss is built before moz. This ensures that nss libraries/headers are not overwritten by those built in moz.

    Dependency Management

    Because nss provides the libraries used by moz and moz_prebuilt, any changes made to the libraries in the nss module require that moz and moz_prebuilt be rebuilt to ensure compatibility.

    Library Cleanup

    When nss is built first, the build process automatically removes the following from the moz build to prevent overwriting:

    • mozruntime.zip (built in moz/solver/bin)
    • The lib directory (e.g., moz/unxlngi6.pro/lib)
    • nss and nspr headers (inc/nss and inc/nspr)
  5. Compare trunk and AOO42X branches

    trunk

    The trunk branch (future 4.5.x / "dev") and the AOO42X branch (4.2.x release branch) are functionally very close, despite differences in commit counts.

    Key Differences:

    • Python Baseline: trunk targets Python 3.10.18, while AOO42X stays on Python 2.7.18 for release stability.
    • Windows 64-bit Support: trunk includes a native 64-bit Windows UNO bridge (msvc_win64_x86-64), which is absent in AOO42X.
    • Functionality: No functional capability exists in AOO42X that is missing from trunk. Most functional work (e.g., WebDAV→curl port, dynamic OpenSSL, 32-bit paragraph indices) has already been merged to both branches.
    • Divergence Noise: Much of the perceived divergence is due to non-functional changes like pre-commit whitespace/formatting hooks, release bookkeeping (version/copyright bumps), and different squash/merge patterns.
  6. Configure CLI test assemblies for Windows

    trunk

    The CLI test relies on specific .NET assemblies. Depending on your environment, these are sourced in one of two ways:

    1. With Office Installed: The test uses assemblies from the Global Assembly Cache (GAC), typically located in c:\windows\assembly.
    2. Without Office Installed: The test uses assemblies located in the same directory as the executable. The testtools project is responsible for copying these assemblies from the build environment into the wntmscixx\bin folder.

    Warning: If an assembly exists in the GAC, the system will use the GAC version regardless of whether local copies are present in the executable folder.

    cli_types.dll
    cli_basetypes.dll
    cli_ure.dll
    cli_cppuhelper.dll
  7. Understand the Aqua Accessibility (a11y) naming scheme

    trunk

    The Aqua accessibility components follow a specific naming convention to distinguish between helper classes, UNO-interface wrappers, and role-specific subclasses. Use these patterns to identify the purpose of a class in the aqua11y namespace:

    • aqua11yXYZhelper: A helper class providing static methods.
    • aqua11yXYZwrapper: A wrapper around one or two UNO-interfaces.
    • aqua11ywrapperXYZ: A subclass of aqua11ywrapper designed for a specific AXRole.
  8. Use javasettingsunopkginstall.xml for Java settings in bundled extensions

    trunk

    The file javasettingsunopkginstall.xml serves as a dummy settings file containing only the root <java ...> element. It is installed into office/share/config/ and is used by bundled extensions to store their Java settings.

    To access the bootstrap variable for this framework, refer to framework.h for the UNO_JAVA_JFW_INSTALL_DATA definition.

  9. Disable certificate verification in XML Security library

    trunk

    The XML Security library (libxmlsec) has been modified to allow signing and verification operations without performing certificate verification. This is achieved via the xmlsec1-noverify.patch which alters the behavior of certificate store lookups.

    By default, functions like xmlSecMSCryptoX509StoreVerify (on Windows) and xmlSecNssX509StoreVerify (on UNIX) iterate over certificates in X509Data elements (such as X509IssuerSerial and X509Certificate) and select a certificate that is not an issuer of any other certificate in the store to use as the validation key.

    Warning: While this allows operations to proceed without full chain validation, the library relies on finding a certificate containing the proper public key within the store to validate the signature.

  10. Understand the assembly versioning mechanism

    trunk

    Assemblies in this project use strong names and require version management to handle code changes and compatibility.

    Versioning Logic

    • Compatible Changes (Minor Version): Increment the third number (e.g., 1.0.3.0 $\rightarrow$ 1.0.4.0). When this happens, you must also update XYZ_OLD_VERSION and XYZ_POLICY_VERSION.
    • Incompatible Changes (Major Version): Increment the first number (e.g., 1.0.0.0 $\rightarrow$ 2.0.0.0). In this case, the XYZ_POLICY_ASSEMBLY name must change (e.g., from policy.1.0.xxx to policy.2.0.xxx) because old client code should not be redirected to the new incompatible assembly.

    The version.txt Configuration Format

    Entries in cli_ure/version/version.txt are used for building assemblies and the installation set (MSI database).

    Example: Compatible Update

    CLI_URETYPES_NEW_VERSION=1.0.4.0
    CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.3.0
    CLI_URETYPES_POLICY_VERSION=4.0.0.0
    CLI_URETYPES_POLICY_ASSEMBLY=policy.1.0.cli_uretypes

    Example: Incompatible (Major) Update

    CLI_URETYPES_NEW_VERSION=2.0.0.0
    CLI_URETYPES_OLD_VERSION=2.0.0.0-2.0.0.0
    CLI_URETYPES_POLICY_VERSION=1.0.0.0
    CLI_URETYPES_POLICY_ASSEMBLY=policy.2.0.cli_uretypes
  11. Get the latest Apache OpenOffice sources via Git

    trunk

    To obtain the most recent source code for Apache OpenOffice, clone the repository from the Apache Gitbox using the following command:

    git clone https://gitbox.apache.org/repos/asf/openoffice.git aoo