Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .github/workflows/build-deb.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# Full build of OpenModelica plus the Debian packages, the way the nightly
# Jenkins job does it: configure/make (autoconf) from a git checkout, then
# dpkg-buildpackage using the debian/ directory of this repository.
# Jenkins job does it: a CMake build from a git checkout, then dpkg-buildpackage
# using the debian/ directory of this repository.
#
# This is the only job that can catch a .install glob that stopped matching
# because upstream moved or dropped a file -- the failure that breaks the
# nightly build. It compiles all of OpenModelica, so it takes hours. The fast
# metadata-only checks live in packaging.yml.
#
# Uses the Autoconf + Makefile build; to be switched to the CMake build later.
name: full deb build

on:
Expand Down
21 changes: 9 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,18 @@ jammy, noble, resolute and trixie on amd64, armhf and arm64.

### What is in `debian/`

* [`control`](./debian/control) — one source stanza and 20 binary packages (`omc`,
* [`control`](./debian/control) — one source stanza and 18 binary packages (`omc`,
`libomc`, `omedit`, `omshell`, `omnotebook`, `omsimulator`, `omlibrary`, …). Some
build dependencies carry alternatives (`libhdf5-serial-dev | libhdf5-dev`) because a
single control file has to satisfy every distribution in the matrix. Note that `apt`
installs the *first* alternative it can, so an alternative is not a way to say
"either of these will do" — it only helps where the first one is unavailable.
* [`rules`](./debian/rules) — a hand-written rules file, *not* the `dh` sequencer. It
configures and builds the tree itself and then calls each `dh_*` helper explicitly
from the `install` and `binary-arch` targets. There are no override targets; edit the
recipes directly.
configures and builds the tree itself — with CMake, into `obj-<triplet>/` — and then
calls each `dh_*` helper explicitly from the `install` and `binary-arch` targets.
There are no override targets; edit the recipes directly.
* `<package>.install` — the file lists. Everything is installed into `debian/tmp` by
`make install DESTDIR=…` first, and these files distribute it into the binary
`cmake --install` with `DESTDIR` first, and these files distribute it into the binary
packages. Paths are globs, e.g.
`debian/tmp/usr/lib/*/omc/libOMSimulator.so`.
* Desktop integration: [`desktops/`](./debian/desktops), [`icons/`](./debian/icons),
Expand Down Expand Up @@ -161,11 +161,10 @@ the compat level in the control files changes.

### Full build — [`build-deb.yml`](./.github/workflows/build-deb.yml)

Builds OpenModelica from a git checkout with the Autoconf + Makefile build and then runs
`dpkg-buildpackage` against this repository's `debian/`, the same sequence Jenkins uses,
and uploads the resulting `.deb` files as an artifact. It is the only job that catches a
`.install` glob that stopped matching, and the only one that proves the `Build-Depends`
are still installable.
Builds OpenModelica from a git checkout and then runs `dpkg-buildpackage` against this
repository's `debian/`, the same sequence Jenkins uses, and uploads the resulting `.deb`
files as an artifact. It is the only job that catches a `.install` glob that stopped
matching, and the only one that proves the `Build-Depends` are still installable.

It compiles everything, so it takes hours, and it never starts on its own. Run it on
demand via `workflow_dispatch` (with an input to pick the OpenModelica ref), or put the
Expand All @@ -174,8 +173,6 @@ request, and again on every push to it, until the label comes off. There is no s
the nightly Jenkins build already catches an upstream move that broke an `.install`
glob. Only on `ubuntu-latest` — Jenkins covers the rest of the matrix.

It uses the Autoconf + Makefile build; switching it to the CMake build is a later change.

> [!IMPORTANT]
> What no CI here tells you: whether the packages build on the other distributions
> in the matrix, or on armhf and arm64. That is still Jenkins' job.
Expand Down
40 changes: 8 additions & 32 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@ Section: math
Priority: optional
Maintainer: OpenModelica Build System <build@openmodelica.org>
Build-Depends: debhelper-compat (= 13),
# sbuild i386 does not handle native, cross-compile armhf requires it...
clang:native | clang,
gfortran:native | gfortran,
default-jdk:native | default-jdk,
libhwloc-dev:native | libhwloc-dev,
automake,
libtool,
clang,
gfortran,
default-jdk,
libhwloc-dev,
uuid-dev,
libncurses5-dev,
libsqlite3-dev,
cmake (>= 2.8.6),
cmake (>= 3.14),
# libssl-dev (>= 0.9.8g), # Do we really depend on libssl directly? Debian stretch conflicts with it...
libreadline-dev,
qt6-base-dev,
Expand Down Expand Up @@ -42,7 +39,6 @@ Build-Depends: debhelper-compat (= 13),
libhdf5-serial-dev | libhdf5-dev,
liblapack-dev,
libcurl4-gnutls-dev | libcurl-dev,
autoconf (>=2.71),
libexpat1-dev,
libomp-dev,
# Should be needed but seems to mess up sbuild
Expand Down Expand Up @@ -133,17 +129,6 @@ Depends: omc-common (<< 20000),
Description: The OpenModelica Compiler lib dependencies
This is the core libraries of the OpenModelica project.

Package: libomc-dev
Section: math
Multi-Arch: same
Architecture: any
Depends: libomc (<< 20000),
${shlibs:Depends},
${misc:Depends}
Description: The OpenModelica Compiler lib dependencies
This is the core libraries of the OpenModelica project.
Currently contains antlr3 include-files.

Package: libomcsimulation
Section: math
Multi-Arch: same
Expand Down Expand Up @@ -176,19 +161,10 @@ Package: libomplot
Section: math
Multi-Arch: same
Architecture: any
Depends: ${shlibs:Depends},
${misc:Depends}
Description: Plot tool for OpenModelica, lib dependencies
This tool is essential for using the plot() command in omc.

Package: libomplot-dev
Section: math
Multi-Arch: same
Architecture: any
Depends: libomplot (<< 20000),
Depends: libomcsimulation (<< 20000),
${shlibs:Depends},
${misc:Depends}
Description: Plot tool for OpenModelica, development package
Description: Plot tool for OpenModelica, lib dependencies
This tool is essential for using the plot() command in omc.

Package: omedit
Expand Down Expand Up @@ -262,7 +238,7 @@ Description: A text-based interface to OpenModelica (based on Qt)

Package: libomccpp
Section: math
Architecture: i386 amd64
Architecture: amd64
Multi-Arch: same
Depends: libboost-dev,
libboost-filesystem-dev,
Expand Down
4 changes: 0 additions & 4 deletions debian/libomc-dev.install

This file was deleted.

4 changes: 0 additions & 4 deletions debian/libomc.install
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
debian/tmp/usr/lib/*/omc/libOpenModelicaCompiler.so
debian/tmp/usr/lib/*/omc/libOpenModelicaRuntimeC*
debian/tmp/usr/lib/*/omc/lib*antlr3.so
debian/tmp/usr/lib/*/omc/libomcruntime*
debian/tmp/usr/lib/*/omc/libzmq*

# The Modelica External shared libs. They are in omc/ffi/ folder
debian/tmp/usr/lib/*/omc/ffi/*

# These are not really needed
#debian/tmp/usr/lib/*/omc/libomparse.a
5 changes: 3 additions & 2 deletions debian/libomcsimulation.install
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ debian/tmp/usr/include/omc/ModelicaExternalC/*
debian/tmp/usr/lib/*/omc/libOpenModelicaFMIRuntimeC*
debian/tmp/usr/lib/*/omc/libSimulationRuntime*

# Result files
debian/tmp/usr/lib/*/omc/libomc_result*

## SuiteSparse
debian/tmp/usr/lib/*/omc/lib*amd*
debian/tmp/usr/lib/*/omc/libbtf*
Expand All @@ -24,9 +27,7 @@ debian/tmp/usr/lib/*/omc/libumfpack*

debian/tmp/usr/lib/*/omc/liblis*
debian/tmp/usr/lib/*/omc/libcminpack*
debian/tmp/usr/lib/*/omc/libomopc*
debian/tmp/usr/lib/*/omc/libsundials_*
debian/tmp/usr/lib/*/omc/libryu*

## MOO
debian/tmp/usr/lib/*/omc/libseq*
Expand Down
1 change: 0 additions & 1 deletion debian/libomplot-dev.install

This file was deleted.

4 changes: 4 additions & 0 deletions debian/omc-common.install
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
debian/tmp/usr/share/omc/runtime
debian/tmp/usr/share/omc/sources
debian/tmp/usr/lib/omc/*.mo
debian/tmp/usr/include/omc/c
# openmodelica.h includes <gc.h>, which is not under include/omc/c
debian/tmp/usr/include/omc/gc.h
debian/tmp/usr/include/omc/gc
debian/tmp/usr/include/omc/scripting-API
debian/tmp/usr/include/omc/sundials
1 change: 1 addition & 0 deletions debian/omedit.install
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ debian/desktops/omedit.desktop usr/share/applications
OMEdit/OMEditLIB/Resources/icons/omedit.png usr/share/pixmaps
debian/tmp/usr/bin/OMEdit
debian/tmp/usr/share/omedit/nls/*
debian/tmp/usr/share/omedit/ls
1 change: 0 additions & 1 deletion debian/omnotebook.install
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
debian/desktops/omnotebook.desktop usr/share/applications
OMNotebook/OMNotebook/OMNotebookGUI/Resources/OMNotebook_icon.svg usr/share/pixmaps
debian/tmp/usr/bin/OMNotebook
debian/tmp/usr/share/omnotebook/*.xml
debian/tmp/usr/share/omnotebook/*.onb
2 changes: 0 additions & 2 deletions debian/omshell.install
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
debian/desktops/omshell.desktop usr/share/applications
debian/tmp/usr/bin/OMShell
debian/tmp/usr/share/omshell/*.xml
debian/tmp/usr/share/omshell/nls/*.qm
OMShell/OMShell/OMShellGUI/Resources/omshell-large.svg usr/share/pixmaps
Loading
Loading