Пакет Сципи или Лапак с Флэтпаком - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь упаковать программу, которая использует Scipy с Flatpak. Я не могу понять, как определить зависимость lapack / blas. Сообщение об ошибке сбоя сборки довольно ясно об ошибке:

numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

Коммит с моей текущей (WIP) конфигурацией находится здесь: https://github.com/innstereo/innstereo/commit/7f0272a70584e919546c4fdd07531d2c5c063d52

Когда я добавляю это в начало массива модулей:

{
   "name": "lapack",
   "buildsystem": "cmake",
   "sources": [
      {
        "type": "git",
         "url": "https://github.com/Reference-LAPACK/lapack"
      }
    ]
 }

Я получаю эту ошибку:

-- The Fortran compiler identification is unknown -- The C compiler identification is GNU 6.2.0 CMake Error at CMakeLists.txt:3 (project): No CMAKE_Fortran_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "FC" or the CMake cache entry CMAKE_Fortran_COMPILER to the full
  path to the compiler, or to the compiler name if it is in the PATH.


-- Check for working C compiler: /run/ccache/bin/cc
-- Check for working C compiler: /run/ccache/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring incomplete, errors occurred!
See also "/run/build/lapack/CMakeFiles/CMakeOutput.log".
See also "/run/build/lapack/CMakeFiles/CMakeError.log".
Error: module lapack: Child process exited with code 1

https://github.com/Reference-LAPACK/lapack имеет конфигурацию cmake. Должно ли это работать из коробки? Нужно ли переопределять его части для сборки Flatpak?

Редактировать 1

Я добавил

"sdk-extensions": [
    "org.freedesktop.Sdk.Extension.gfortran-62"
]

и

"modules": [
    {
        "name": "lapack",
        "buildsystem": "simple",
        "append-path": "/usr/lib/sdk/gfortran-62/bin",
        "build-commands": [
            "/usr/lib/sdk/gfortran-62/use.sh"
        ],
        "sources": [
            {
                "type": "git",
                "url": "https://github.com/Reference-LAPACK/lapack"
            }
        ]
    }

моему плоскому пацану. Кажется, это часть решения. Но он все еще отсутствует, когда numpy пытается скомпилировать внутри контейнера (я полагаю).

Похожие обсуждения: https://github.com/flatpak/flatpak/issues/1913

1 Ответ

0 голосов
/ 15 сентября 2018

Я добился определенного прогресса, глядя на другой проект Конфиг, который я нашел в https://github.com/flathub/org.jamovi.jamovi, кажется, отлично работает для scipy. Вот некоторая важная вещь, которая может помочь в вашем манифесте flatpak:

Вам нужно расширение Fortran SDK:

"sdk-extensions": [
    "org.freedesktop.Sdk.Extension.gfortran-62"
],

В опциях сборки вам нужно указать пути к компилятору gfortran:

"build-options": {
    "append-path": "/usr/lib/sdk/gfortran-62/bin",
    "env": {
        "PATH": "/app/bin:/usr/bin:/usr/lib/sdk/gfortran-62/bin"
    }
},

Первый созданный вами модуль, вероятно, должен быть компилятором fortran:

"modules": [
    {
        "name": "gfortran",
        "buildsystem": "simple",
        "build-commands": [ "/usr/lib/sdk/gfortran-62/install.sh" ]
    },

Далее идет лапак. Кажется, этот конфиг работает:

    {
        "name": "lapack",
        "buildsystem": "cmake",
        "builddir": true,
    "append-path": "/usr/lib/sdk/gfortran-62/bin",
    "config-opts": [
            "-DCMAKE_INSTALL_PREFIX=/app",
            "-DCMAKE_INSTALL_LIBDIR=lib",
            "-DCMAKE_BUILD_TYPE=Release",
            "-DBUILD_SHARED_LIBS=ON",
            "-DBUILD_TESTING=OFF",
            "-DCMAKE_Fortran_COMPILER=/usr/lib/sdk/gfortran-62/bin/gfortran",
            "-DLAPACKE=ON",
            "-DCBLAS=ON"
        ],
        "sources": [
            {
                "type": "archive",
                "url": "http://www.netlib.org/lapack/lapack-3.8.0.tar.gz",
                "sha512": "17786cb7306fccdc9b4a242de7f64fc261ebe6a10b6ec55f519deb4cb673cb137e8742aa5698fd2dc52f1cd56d3bd116af3f593a01dcf6770c4dcc86c50b2a7f"
            }
        ],
        "cleanup": [ "/lib/cmake" ]
    }
...