-
Notifications
You must be signed in to change notification settings - Fork 343
[workflow][Nix] initial packaging & flake #5059
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
dfe6c37
5dd380b
9aa1926
3a11a38
eb693f6
7167823
45cdcd1
0f60968
95a2c8d
05aa1b9
db4ba7f
9a03bb3
c626f70
fc3d12b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| name: "CI - Nix" | ||
|
|
||
| on: | ||
| push: | ||
|
|
||
| jobs: | ||
| nix: | ||
| runs-on: "${{ matrix.os }}-latest" | ||
| if: ${{ github.repository_owner == 'sofa-framework' }} | ||
| strategy: | ||
| matrix: | ||
| os: [ubuntu, macos] | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: cachix/install-nix-action@v27 | ||
| # TODO: the "sofa" account on cachix does not exist yet | ||
| #- uses: cachix/cachix-action@v15 | ||
| #with: | ||
| #name: sofa | ||
| #authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | ||
| - run: nix build -L | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -24,8 +24,11 @@ endif() | |
|
|
||
| if (Qt6Core_FOUND) | ||
| message("${PROJECT_NAME}: will use Qt6") | ||
| sofa_find_package(Qt6 COMPONENTS Gui GuiTools Widgets WidgetsTools OpenGLWidgets REQUIRED) | ||
| set(SOFA_GUI_QT_TARETS ${SOFA_GUI_QT_TARGETS} Qt::Core Qt::Gui Qt::Widgets Qt::OpenGLWidgets ) | ||
| find_package(Qt6 COMPONENTS Gui GuiTools Widgets WidgetsTools OpenGLWidgets REQUIRED) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am not very familiar with Qt components. Can you give more details on the changes here? Thanks
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am not familiar with those neither, but as a matter of fact, the But I don't know why we are looking for those CMake targets to define if |
||
| # GuiTools & WidgetsTools does not define a Qt6::component CMake target | ||
| # So we can't look for those target to know how we should define SOFA_GUI_QT_HAVE_QT6 | ||
| sofa_find_package(Qt6 COMPONENTS Gui Widgets OpenGLWidgets REQUIRED) | ||
| set(SOFA_GUI_QT_TARGETS ${SOFA_GUI_QT_TARGETS} Qt::Core Qt::Gui Qt::Widgets Qt::OpenGLWidgets ) | ||
| elseif (Qt5Core_FOUND) | ||
| message("${PROJECT_NAME}: will use Qt5 (deprecated)") | ||
| sofa_find_package(Qt5 COMPONENTS Core Gui OpenGL REQUIRED) | ||
|
|
||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| { | ||
| description = "SOFA is an open-source framework for interactive physics simulation, with emphasis on biomechanical and robotic simulations"; | ||
|
|
||
| inputs = { | ||
| flake-parts.url = "github:hercules-ci/flake-parts"; | ||
| #nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | ||
| # ref. https://github.com/NixOS/nixpkgs/pull/348549 | ||
| nixpkgs.url = "github:nim65s/nixpkgs/qt6-libqglviewer"; | ||
| nixgl.url = "github:nix-community/nixGL"; | ||
| }; | ||
|
|
||
| outputs = | ||
| inputs@{ flake-parts, nixgl, nixpkgs, ... }: | ||
| flake-parts.lib.mkFlake { inherit inputs; } { | ||
| systems = nixpkgs.lib.systems.flakeExposed; | ||
| perSystem = | ||
| { pkgs, self', system, ... }: | ||
| { | ||
| _module.args.pkgs = import nixpkgs { | ||
| inherit system; | ||
| overlays = [ nixgl.overlay ]; | ||
| }; | ||
| apps.nixgl = { | ||
| type = "app"; | ||
| program = pkgs.writeShellApplication { | ||
| name = "nixgl-sofa"; | ||
| text = "${pkgs.lib.getExe pkgs.nixgl.auto.nixGLDefault} ${pkgs.lib.getExe self'.packages.sofa}"; | ||
| }; | ||
| }; | ||
| devShells.default = pkgs.mkShell { inputsFrom = [ self'.packages.default ]; }; | ||
| packages = { | ||
| default = self'.packages.sofa; | ||
| sofa = pkgs.callPackage ./package.nix { }; | ||
| }; | ||
| }; | ||
| }; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| { | ||
| boost, | ||
| cmake, | ||
| cxxopts, | ||
| eigen, | ||
| #fetchFromGitHub, | ||
| glew, | ||
| gtest, | ||
| lib, | ||
nim65s marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| qt6Packages, | ||
| libGL, | ||
| metis, | ||
| stdenv, | ||
| tinyxml-2, | ||
| zlib, | ||
| }: | ||
|
|
||
| stdenv.mkDerivation { | ||
| pname = "sofa"; | ||
| version = "24.06.00"; | ||
|
|
||
| src = lib.fileset.toSource { | ||
| root = ./.; | ||
| fileset = lib.fileset.unions [ | ||
| ./applications | ||
| ./Authors.txt | ||
| ./cmake | ||
| ./CHANGELOG.md | ||
| ./CMakeLists.txt | ||
| ./CMakePresets.json | ||
| ./examples | ||
| ./extlibs | ||
| ./LICENSE-LGPL.md | ||
| ./package.cmake | ||
| ./README.md | ||
| ./scripts | ||
| ./share | ||
| ./Sofa | ||
| ./tools | ||
| ]; | ||
| }; | ||
|
|
||
| propagatedNativeBuildInputs = [ | ||
| cmake | ||
| qt6Packages.wrapQtAppsHook | ||
| ]; | ||
| propagatedBuildInputs = [ | ||
| boost | ||
| cxxopts | ||
| eigen | ||
| glew | ||
| gtest | ||
| qt6Packages.libqglviewer | ||
| qt6Packages.qtbase | ||
| libGL | ||
| metis | ||
| tinyxml-2 | ||
| zlib | ||
| ]; | ||
|
|
||
| cmakeFlags = [ | ||
| (lib.cmakeBool "SOFA_ALLOW_FETCH_DEPENDENCIES" false) | ||
| ]; | ||
|
|
||
| doCheck = true; | ||
|
|
||
| postFixup = lib.optionalString stdenv.hostPlatform.isDarwin '' | ||
| install_name_tool -change \ | ||
| $out/lib/libSceneChecking.24.12.99.dylib \ | ||
| $out/plugins/SceneChecking/lib/libSceneChecking.24.12.99.dylib \ | ||
| $out/bin/.runSofa-24.12.99-wrapped | ||
| ''; | ||
|
|
||
| meta = { | ||
| description = "SOFA is an open-source framework for interactive physics simulation, with emphasis on biomechanical and robotic simulations"; | ||
| homepage = "https://github.com/sofa-framework/sofa"; | ||
| license = lib.licenses.lgpl21Only; | ||
| maintainers = with lib.maintainers; [ nim65s ]; | ||
| mainProgram = "runSofa"; | ||
| platforms = lib.platforms.unix ++ lib.platforms.windows; | ||
| }; | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.