jeteve-omniorb 4.3.3.post7
pypi compatible packaging for OmniORB 4.3.3
License: MIT
Requires Python: >=3.8

# Jeteve OmniORB

[![PyPI - Version](https://img.shields.io/pypi/v/jeteve-omniorb.svg)](https://pypi.org/project/jeteve-omniorb)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/jeteve-omniorb.svg)](https://pypi.org/project/jeteve-omniorb)

-----

## Table of Contents

- [Installation](#installation)
- [License](#license)

## Installation

```console
pip install jeteve-omniorb
```

## License

`jeteve-omniorb` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.

![PyPI - Wheel](https://img.shields.io/pypi/wheel/jeteve_omniorb) ![PyPI - Version](https://img.shields.io/pypi/v/jeteve_omniorb) [![Build and test](https://github.com/jeteve/jeteve-omniorb/actions/workflows/main.yml/badge.svg)](https://github.com/jeteve/jeteve-omniorb/actions/workflows/main.yml)

# About jeteve-omniorb

This is a standard python wheel packaging OmniORB/OmniORBpy for easy use from python projects.

See original software here: https://omniorb.sourceforge.io/

# Installation

This installs like a standard pypi package.

See https://pypi.org/project/jeteve-omniorb 

# Why jeteve_omniorb

- Just install a Python package, no more special OmniORB compilation on your platform.
- Packages latest stable OmniORB.
- Batteries included. Get started with OmniORB examples right after installation. See `example/` and/or https://omniorb.sourceforge.io/omnipy43/omniORBpy.
- Support for legacy glibc 2.17+ because we don't all have new shiny OSes.
- CI Tested Support for python from 3.8 to 3.14.
- Stable OmniOrb versions Automatically tested using omniorb's examples.
- Tested to work with `uvx` if you want to just run `omniidl` or `omniNames`.
- cute emojis in shell scripts.

## Batteries included

We aim at supporting the full Python example from omniorb out of the box:

https://omniorb.sourceforge.io/omnipy43/omniORBpy/omniORBpy002.html#sec10

In particular, that means that this packages the binary `omnicpp` (OmniORBs take on a C Preprocessor) coming from the C/C++ OmniORB library.

This is tested as part of the building process.

# How to build

In your development environment, run ```build-wheels.sh``` You only need docker.

# Version management

This generates wheels that are versioned with the version of the packaged
OmniORB library, and following https://peps.python.org/pep-0440/, it adds
a `.postN` part that express the fact that this is a new packaging of
the same software.

From git tags perspective, this specific repo needs to be tagged with `.postN`.

# Development principles

_Everything_ happens in the provided Docker images.

It is based on manylinux2014_x86_64 (from project https://github.com/pypa/manylinux) for maximum
compatibility with glibc 2.17.

Other architectures will come later. Maybe.

## Dev notes - Building and testing a specific version:

Building the build image:
```
docker buildx build . --iidfile .docker-image-id
docker run --rm -v $(pwd):/workdir $(cat .docker-image-id) echo "✅ Docker image built successful."
```

# For another platform/architecture:

First follow https://docs.docker.com/build/building/multi-platform/

Make sure you install qemu binaries if you want to leverage qemu:

```sh
docker run --privileged --rm tonistiigi/binfmt --install all
```

Note that qemu will be very slow. The buildx with multiple build nodes
providing the different architectures is preferred.

Using the github actions workflow is preferred, as it provides VM on native architectures.


```sh
# See supported architecture in manylinux
# https://github.com/pypa/manylinux
docker buildx build --iidfile .docker-image-id --platform linux/arm64 --build-arg MANYLINUX_ARCH=aarch64 .
docker run --platform linux/arm64  --rm -v $(pwd):/workdir $(cat .docker-image-id) echo "✅ Docker image built successful."
```

Build:

```bash
docker run -t -e HOME=/workdir -u $(id -u):$(id -g) --rm -v $(pwd):/workdir $(cat .docker-image-id) bash /workdir/inside-build-wheels.sh "cp312" "4.2.6"

```

Test:
```bash
docker run -t -e HOME=/workdir -u $(id -u):$(id -g) --rm -v $(pwd):/workdir $(cat .docker-image-id) bash /workdir/inside-test-wheels.sh "3.12" "4.2.6"
```

## Dev notes - how to upload

1) Check all wheels with twine (using uvx is recommended)

uvx twine check wheelhouse/*

2) Upload to test repo

uvx twine upload --repository testpypi wheelhouse/*

3) Check you can download and execute
uvx -n -p 3.13 --from "jeteve_omniorb~=4.3.3"  --index-url https://test.pypi.org/simple/ omnicpp -h
uvx -n -p 3.12 --from "jeteve_omniorb~=4.3.3"  --index-url https://test.pypi.org/simple/ omnicpp -h
uvx -n -p 3.11 --from "jeteve_omniorb~=4.3.3"  --index-url https://test.pypi.org/simple/ omnicpp -h
uvx -n -p 3.10 --from "jeteve_omniorb~=4.3.3"  --index-url https://test.pypi.org/simple/ omnicpp -h