diff options
author | 2024-07-29 00:38:40 +0200 | |
---|---|---|
committer | 2024-07-29 00:46:39 +0200 | |
commit | 27eb38d18856f0e508b046fcb46db6737e557fb5 (patch) | |
tree | a048c174f71d45a74e1c92d173daef57798b40e9 /sci-physics/openmodelica | |
parent | app-editors/imhex: add 1.35.4, drop 1.35.3 (diff) | |
download | guru-27eb38d18856f0e508b046fcb46db6737e557fb5.tar.gz guru-27eb38d18856f0e508b046fcb46db6737e557fb5.tar.bz2 guru-27eb38d18856f0e508b046fcb46db6737e557fb5.zip |
sci-physics/openmodelica: new package, add 1.23.1
Signed-off-by: Ivan Lloro <ivan.lloro.boada@gmail.com>
Diffstat (limited to 'sci-physics/openmodelica')
-rw-r--r-- | sci-physics/openmodelica/files/omedit.png | bin | 0 -> 54373 bytes | |||
-rw-r--r-- | sci-physics/openmodelica/files/omoptim.png | bin | 0 -> 23747 bytes | |||
-rw-r--r-- | sci-physics/openmodelica/files/openmodelica-1.23.1-raw_strings.patch | 29 | ||||
-rw-r--r-- | sci-physics/openmodelica/metadata.xml | 11 | ||||
-rw-r--r-- | sci-physics/openmodelica/openmodelica-1.23.1.ebuild | 184 |
5 files changed, 224 insertions, 0 deletions
diff --git a/sci-physics/openmodelica/files/omedit.png b/sci-physics/openmodelica/files/omedit.png Binary files differnew file mode 100644 index 000000000..9fd43dcef --- /dev/null +++ b/sci-physics/openmodelica/files/omedit.png diff --git a/sci-physics/openmodelica/files/omoptim.png b/sci-physics/openmodelica/files/omoptim.png Binary files differnew file mode 100644 index 000000000..3dcafa5bc --- /dev/null +++ b/sci-physics/openmodelica/files/omoptim.png diff --git a/sci-physics/openmodelica/files/openmodelica-1.23.1-raw_strings.patch b/sci-physics/openmodelica/files/openmodelica-1.23.1-raw_strings.patch new file mode 100644 index 000000000..73e169b36 --- /dev/null +++ b/sci-physics/openmodelica/files/openmodelica-1.23.1-raw_strings.patch @@ -0,0 +1,29 @@ +diff --git a/OMSens/analysis/indiv_sens.py b/analysis/indiv_sens.py +index 676c0b6..e12f022 100644 +--- a/OMSens/analysis/indiv_sens.py ++++ b/OMSens/analysis/indiv_sens.py +@@ -323,8 +323,8 @@ def slugify(value): + and converts spaces to hyphens. + """ + value = unicodedata.normalize('NFKD', value) +- value = re.sub('[^\w\s-]', '', value).strip().lower() +- value = re.sub('[-\s]+', '-', value) ++ value = re.sub(r'[^\w\s-]', '', value).strip().lower() ++ value = re.sub(r'[-\s]+', '-', value) + return value + + +diff --git a/OMSens/modelica_interface/run_omc.py b/modelica_interface/run_omc.py +index 583e0d6..1cd67e4 100644 +--- a/OMSens/modelica_interface/run_omc.py ++++ b/OMSens/modelica_interface/run_omc.py +@@ -36,7 +36,8 @@ def writeOMCLog(log_str, output_path): + final_str = intro_str+separator_str+log_str + filesystem.files_aux.writeStrToFile(final_str,output_path) + return 0 ++ + def removeTemporaryFiles(folder_path): +- regex = '.*\.(c|o|h|makefile|log|libs|json)$' ++ regex = r'.*\.(c|o|h|makefile|log|libs|json)$' + filesystem.files_aux.removeFilesWithRegexAndPath(regex,folder_path) + diff --git a/sci-physics/openmodelica/metadata.xml b/sci-physics/openmodelica/metadata.xml new file mode 100644 index 000000000..c2206a3ea --- /dev/null +++ b/sci-physics/openmodelica/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>ivan.lloro.boada@gmail.com</email> + <name>Ivan Lloro</name> + </maintainer> + <upstream> + <remote-id type="github">OpenModelica/OpenModelica</remote-id> + </upstream> +</pkgmetadata> diff --git a/sci-physics/openmodelica/openmodelica-1.23.1.ebuild b/sci-physics/openmodelica/openmodelica-1.23.1.ebuild new file mode 100644 index 000000000..23907e2fb --- /dev/null +++ b/sci-physics/openmodelica/openmodelica-1.23.1.ebuild @@ -0,0 +1,184 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +EAPI=8 + +inherit cmake git-r3 desktop xdg + +DESCRIPTION="Open-source Modelica-based modeling and simulation environment" +HOMEPAGE="https://openmodelica.org/" + +EGIT_REPO_URI="https://github.com/OpenModelica/OpenModelica.git" +EGIT_COMMIT="v1.23.1" + +LICENSE="OSMC-PL GPL-3 AGPL-3 BSD EPL-1.0 public-domain BSD-with-attribution LGPL-2.1+ LGPL-2 Apache-2.0 Boost-1.0 Modelica-1.1 Modelica-2 MIT WTFPL-2" +SLOT="0" +KEYWORDS="~amd64" + +RDEPEND=" + >=virtual/lapack-3.10 + >=dev-libs/boost-1.84.0-r3 + >=virtual/opencl-3-r3 + >=net-misc/curl-8.7.1-r4 + >=sys-libs/readline-8.2_p10 + >=app-text/asciidoc-10.2.0 + >=virtual/libintl-0-r2 + >=virtual/libiconv-0-r2 + >=virtual/blas-3.8 + >=virtual/lapack-3.10 + >=virtual/jdk-17 + >=virtual/pkgconfig-3 + dev-qt/qtconcurrent:5 + dev-qt/qtprintsupport:5 + dev-qt/qtxml:5 + dev-qt/qtopengl:5 + dev-qt/qtnetwork:5 + dev-qt/qtsvg:5 + dev-qt/qtwebengine:5[widgets] + dev-qt/qtxmlpatterns:5 + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtwidgets:5 + dev-qt/qtdeclarative:5 + dev-qt/qtquickcontrols:5 + dev-qt/qtquickcontrols2:5 + dev-qt/qtwebchannel:5[qml] + dev-qt/qtpositioning:5[qml] + >=dev-games/openscenegraph-3.6.5-r114 + >=virtual/opengl-7.0-r2 + >=dev-libs/expat-2.5.0 + >=net-misc/omniORB-4.3.0 + >=dev-python/six-1.16.0-r1 + >=dev-python/pytest-8.2.2 + >=dev-python/numpy-1.26.4 + >=dev-python/matplotlib-3.3 + >=dev-python/kiwisolver-1.3.2 + >=dev-python/pillow-9.0.1 + >=dev-python/pandas-1.1.3 + dev-lang/python:3.12 +" + +# dev-libs/libxml2 only needed if compiled with -DOM_OMEDIT_ENABLE_LIBXML2=ON +RDEPEND+=" + >=dev-libs/libxml2-2.12.7 + >=dev-libs/icu-74.2 + >=app-text/doxygen-1.9.8 + >=dev-python/sphinx-7.3.7-r2 + >=sys-devel/flex-2.6.4-r6 + >=sys-apps/hwloc-2.9.2 + >=sci-libs/hdf5-1.14.3-r1 + >=sys-libs/ncurses-6.4_p20240414 +" + +BDEPEND=" + dev-util/ccache + net-misc/wget + app-arch/tar + virtual/fortran +" + +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/"${P}"-raw_strings.patch +) + +BOMCCOMMIT="c289e97c41d00939a4a69fe504961b47283a6d8e" +TMPBOMCARCHIVE="${T}/sources-${BOMCCOMMIT}.tar.gz" + +pkg_setup() { + # OMCompiler/Compiler/boot/CMakeLists.txt downloads a file during src_prepare phase which is blocked by ebuild + # network sandbox. Upstream downloads the (changing) master archive by default. Instead, the specific commit + # available at this OpenModelica version release date is taken. + local URI="https://github.com/OpenModelica/OMBootstrapping/archive/${BOMCCOMMIT}.tar.gz" + + [[ -f "${DISTFILE}" ]] || wget "${URI}" -O "${TMPBOMCARCHIVE}" + + local SHA12SUM=$(sha512sum "${TMPBOMCARCHIVE}") + einfo "${SHA12SUM}" + [[ "${SHA12SUM}" == "2202f02edc33ac4fb7264b0ea82ae4b2c965a85f8b96cb872cc4cc59c5e5b76346a023c416f994a9744021428d598c3dbdf688c0845ba4726849d3c9ee0cd4ba ${TMPBOMCARCHIVE}" ]] || die "Wrong checksum." + local B2SUM=$(b2sum "${TMPBOMCARCHIVE}") + einfo "${B2SUM}" + [[ "${B2SUM}" == "afdda81842a686e092b46bd50d192f5e35ae6c662e8c5517346d86c7c098f2e23a99df27bc5c045b819472d0539837c845c63123ae4822127a14ac42e4ad2e97 ${TMPBOMCARCHIVE}" ]] || die "Wrong checksum." +} + +src_prepare() { + # Setup Bootstrapping OMC + local BOMCDIR="${WORKDIR}"/"${P}"/OMCompiler/Compiler/boot/bomc + mkdir -p "${BOMCDIR}" + mv "${TMPBOMCARCHIVE}" "${BOMCDIR}"/sources.tar.gz + tar xzf "${BOMCDIR}"/sources.tar.gz --strip-components=1 -C "${BOMCDIR}" + + cmake_src_prepare +} + +src_configure() { + #local CMAKE_BUILD_TYPE=Debug + # TODO: potential USE flags. + # BUG: CORBA ON required for OMOptim (but compilation fails) + local mycmakeargs=( + -DOM_OMEDIT_ENABLE_QTWEBENGINE=ON + -DBUILD_SHARED_LIBS=OFF + -DOM_ENABLE_ENCRYPTION=OFF + -DOM_USE_CCACHE=ON + -DOM_ENABLE_GUI_CLIENTS=ON + -DOM_OMC_ENABLE_FORTRAN=ON + -DOM_OMC_ENABLE_IPOPT=ON + -DOM_OMC_ENABLE_CPP_RUNTIME=ON + -DOM_OMC_USE_CORBA=OFF + -DOM_OMC_USE_LAPACK=ON + -DOM_OMEDIT_INSTALL_RUNTIME_DLLS=ON + -DOM_OMEDIT_ENABLE_TESTS=OFF + -DOM_OMEDIT_ENABLE_QTWEBENGINE=ON + -DOM_OMEDIT_ENABLE_LIBXML2=ON + ) + cmake_src_configure +} + +src_compile() { + # [2024-07-15] + # OMSens is disabled in "${WORKDIR}/${P}/CMakeLists.txt" (## omc_add_subdirectory(OMSens)) due to lack of a + # working "${WORKDIR}/${P}/OMSens/CMakeLists.txt". So, we compile it manually. + PWD=$(pwd) + cd "${WORKDIR}"/"${P}"/OMSens/fortran_interface + gfortran -fPIC -c Rutf.for Rut.for Curvif.for + # BUG: Undefined symbol curvif_ in + # ${WORKDIR}/${P}/OMSens/fortran_interface/curvif_simplified.cpython-312-x86_64-linux-gnu.so + # This bug causes "Vectorial Parameter Based Sensitivity Analysis" in OMSens to fail. + f2py --verbose -c -I. Curvif.o Rutf.o Rut.o -m curvif_simplified curvif_simplified.pyf Curvif_simplified.f90 + cd "${PWD}" + + cmake_src_compile +} + +src_install() { + cmake_src_install + + # [2024-07-15] + # OMSens is disabled in "${WORKDIR}/${P}/CMakeLists.txt" (## omc_add_subdirectory(OMSens)) due to lack of a + # working "${WORKDIR}/${P}/OMSens/CMakeLists.txt". So, we install it manually. + cp -a "${WORKDIR}"/"${P}"/OMSens "${ED}"/usr/share/ + rm -fr "${ED}"/usr/share//OMSens/{old,.git,.gitignore,CMakeLists.txt,.jenkins,Jenkinsfile,Makefile.omdev.mingw,Makefile.unix,README.md,setup.py,testing} + + newicon -s scalable OMShell/OMShell/OMShellGUI/Resources/omshell-large.svg omshell.svg + newicon -s scalable OMNotebook/OMNotebook/OMNotebookGUI/Resources/OMNotebook_icon.svg OMNotebook.svg + # No proper icon for Linux available from upstream + doicon -s 256 "${FILESDIR}"/omedit.png + doicon -s 256 "${FILESDIR}"/omoptim.png + make_desktop_entry "OMEdit %F" OMedit omedit "Physics;" "MimeType=text/x-modelica;" + make_desktop_entry OMShell OMShell omshell "Physics;" + make_desktop_entry "OMNotebook %f" OMNotebook OMNotebook "Physics;" + + # Fix libraries + if [[ $(get_libdir) != "lib" ]]; then + mv "${ED}"/usr/lib/omc/* "${ED}"/usr/$(get_libdir)/omc/ + rmdir "${ED}"/usr/lib/omc/ + dosym -r /usr/$(get_libdir)/omc /usr/lib/omc + fi + dosym -r /usr/include/omc/ParModelica /usr/include/ParModelica + + # Documentation housekeeping & QA + mv "${ED}"/usr/share/doc/omc "${ED}"/usr/share/doc/"${P}" + rm -fr "${ED}"/usr/doc + + ewarn "Upstream has deprecated OMTLMSimuulator and, therefore, it has not been installed. Use OMSimulator/SSP instead." +} |