mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-14 17:04:42 +00:00
limo: init at 1.0.8.2; libloot: init at 0.24.1 (#342877)
This commit is contained in:
commit
fe86462ad7
46
pkgs/by-name/li/libloot/deps.patch
Normal file
46
pkgs/by-name/li/libloot/deps.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 24c7d85..3d070d5 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -79,6 +79,7 @@ if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
find_package(TBB REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+#[==[
|
||||||
|
if(NOT DEFINED ESPLUGIN_URL)
|
||||||
|
set(ESPLUGIN_URL "https://github.com/Ortham/esplugin/archive/refs/tags/6.1.0.tar.gz")
|
||||||
|
set(ESPLUGIN_HASH "SHA256=52dec796d98426e1c75c5cf3c41351c0b3431a6301137e00fcf6023f4e47b502")
|
||||||
|
@@ -153,6 +154,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
else()
|
||||||
|
set(LCI_LIBRARIES ${LCI_LIBRARIES} dl)
|
||||||
|
endif()
|
||||||
|
+#]==]
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
fmt
|
||||||
|
@@ -307,10 +309,6 @@ set(LIBLOOT_ALL_SOURCES
|
||||||
|
|
||||||
|
# Build API.
|
||||||
|
add_library(loot ${LIBLOOT_ALL_SOURCES})
|
||||||
|
-add_dependencies(loot
|
||||||
|
- esplugin
|
||||||
|
- libloadorder
|
||||||
|
- loot-condition-interpreter)
|
||||||
|
target_link_libraries(loot PRIVATE
|
||||||
|
Boost::headers
|
||||||
|
${ESPLUGIN_LIBRARIES}
|
||||||
|
diff --git a/cmake/tests.cmake b/cmake/tests.cmake
|
||||||
|
index ebccd82..2cef53c 100644
|
||||||
|
--- a/cmake/tests.cmake
|
||||||
|
+++ b/cmake/tests.cmake
|
||||||
|
@@ -108,10 +108,6 @@ set(LIBLOOT_INTERFACE_TESTS_ALL_SOURCES
|
||||||
|
|
||||||
|
# Build tests.
|
||||||
|
add_executable(libloot_internals_tests ${LIBLOOT_INTERNALS_TESTS_ALL_SOURCES})
|
||||||
|
-add_dependencies(libloot_internals_tests
|
||||||
|
- esplugin
|
||||||
|
- libloadorder
|
||||||
|
- loot-condition-interpreter)
|
||||||
|
target_link_libraries(libloot_internals_tests PRIVATE
|
||||||
|
Boost::headers
|
||||||
|
${ESPLUGIN_LIBRARIES}
|
211
pkgs/by-name/li/libloot/package.nix
Normal file
211
pkgs/by-name/li/libloot/package.nix
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
|
||||||
|
rustPlatform,
|
||||||
|
rust-cbindgen,
|
||||||
|
|
||||||
|
cmake,
|
||||||
|
pkg-config,
|
||||||
|
|
||||||
|
withDocs ? true,
|
||||||
|
doxygen,
|
||||||
|
python3Packages,
|
||||||
|
|
||||||
|
boost,
|
||||||
|
fmt_11,
|
||||||
|
gtest,
|
||||||
|
icu,
|
||||||
|
spdlog,
|
||||||
|
tbb_2021_11,
|
||||||
|
yaml-cpp,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "libloot";
|
||||||
|
version = "0.24.5";
|
||||||
|
# Note: don't forget to also update the package versions in the passthru section
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
] ++ lib.optionals withDocs [ "doc" ];
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "loot";
|
||||||
|
repo = "libloot";
|
||||||
|
rev = "refs/tags/${finalAttrs.version}";
|
||||||
|
hash = "sha256-SAnbp34DlGsq4nfaRHfCTGRSGQtv/rRgngvwma2tc7Q=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# don't try to build the rust FFI dependencies with cargo, since we build them separately
|
||||||
|
./deps.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# there seem to have been some changes in header files generated by rust-cbindgen, so we use the new names
|
||||||
|
substituteInPlace src/api/plugin.{h,cpp} \
|
||||||
|
--replace-fail 'Vec_PluginMetadata' 'Vec<::PluginMetadata>'
|
||||||
|
'';
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
nativeBuildInputs =
|
||||||
|
[
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
]
|
||||||
|
++ lib.optionals withDocs [
|
||||||
|
doxygen
|
||||||
|
python3Packages.sphinx
|
||||||
|
python3Packages.sphinx-rtd-theme
|
||||||
|
python3Packages.breathe
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
boost
|
||||||
|
fmt_11
|
||||||
|
gtest
|
||||||
|
icu
|
||||||
|
(spdlog.override { fmt = fmt_11; })
|
||||||
|
tbb_2021_11
|
||||||
|
|
||||||
|
finalAttrs.passthru.yaml-cpp # has merge-key support
|
||||||
|
finalAttrs.passthru.libloadorder
|
||||||
|
finalAttrs.passthru.esplugin
|
||||||
|
finalAttrs.passthru.loot-condition-interpreter
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeFeature "ESPLUGIN_LIBRARIES" "esplugin_ffi")
|
||||||
|
(lib.cmakeFeature "LIBLOADORDER_LIBRARIES" "loadorder_ffi")
|
||||||
|
(lib.cmakeFeature "LCI_LIBRARIES" "loot_condition_interpreter_ffi")
|
||||||
|
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_TESTING-PLUGINS" "../testing-plugins")
|
||||||
|
(lib.cmakeBool "LIBLOOT_BUILD_TESTS" finalAttrs.doCheck)
|
||||||
|
(lib.cmakeBool "LIBLOOT_INSTALL_DOCS" withDocs)
|
||||||
|
];
|
||||||
|
|
||||||
|
postConfigure = lib.optionalString finalAttrs.doCheck ''
|
||||||
|
cp -r --no-preserve=all ${finalAttrs.passthru.testing-plugins} ../testing-plugins
|
||||||
|
'';
|
||||||
|
|
||||||
|
postBuild = lib.optionalString withDocs ''
|
||||||
|
sphinx-build -b html ../docs docs/html
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.GTEST_FILTER =
|
||||||
|
let
|
||||||
|
disabledTests = [
|
||||||
|
# Some locale releated tests fail because they need the LOCALE_ARCHIVE env var to be set to "${glibcLocales}/lib/locale/locale-archive"
|
||||||
|
# Due to storage size concerns of `glibcLocales`, we skip this
|
||||||
|
"CompareFilenames.shouldBeCaseInsensitiveAndLocaleInvariant"
|
||||||
|
"NormalizeFilename.shouldCaseFoldStringsAndBeLocaleInvariant"
|
||||||
|
|
||||||
|
# Some filesystem related test fail because they assume `std::filesystem::equivalent` works with non-existent paths
|
||||||
|
"Filesystem.equivalentShouldNotRequireThatBothPathsExist"
|
||||||
|
"Filesystem.equivalentShouldBeCaseSensitive"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
"-${builtins.concatStringsSep ":" disabledTests}";
|
||||||
|
|
||||||
|
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
testing-plugins = fetchFromGitHub {
|
||||||
|
owner = "Ortham";
|
||||||
|
repo = "testing-plugins";
|
||||||
|
rev = "refs/tags/1.6.2";
|
||||||
|
hash = "sha256-3Aa98EwqpuGA3YlsRF8luWzXVEFO/rs6JXisXdLyIK4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildRustFFIPackage =
|
||||||
|
args:
|
||||||
|
rustPlatform.buildRustPackage (
|
||||||
|
args
|
||||||
|
// {
|
||||||
|
postConfigure = ''
|
||||||
|
cp -r --no-preserve=all ${finalAttrs.passthru.testing-plugins} testing-plugins
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ rust-cbindgen ];
|
||||||
|
|
||||||
|
buildAndTestSubdir = "ffi";
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
cbindgen ffi/ -l "$lang" -o "$out/include/$header"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
libloadorder = finalAttrs.passthru.buildRustFFIPackage rec {
|
||||||
|
pname = "libloadorder";
|
||||||
|
version = "18.1.3";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Ortham";
|
||||||
|
repo = "libloadorder";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-qJ7gC4BkrXJiVcyA1BqlJSRzgc/7VmNBHtDq0ouJoTU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-x4LFO6dD3bBKv6gTrNUAo7Rdw5cP67gn44QP6Iwbv0I=";
|
||||||
|
|
||||||
|
lang = "c++";
|
||||||
|
header = "libloadorder.hpp";
|
||||||
|
};
|
||||||
|
|
||||||
|
esplugin = finalAttrs.passthru.buildRustFFIPackage rec {
|
||||||
|
pname = "esplugin";
|
||||||
|
version = "6.1.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Ortham";
|
||||||
|
repo = "esplugin";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-ygjSyixg+9HFFNV/G+w+TxGFTrjlWxlDt8phpCE8xyQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-39iod83yVU5PyIjwv7pLLuMeNw9fHiM0tXDauyGrbx8=";
|
||||||
|
|
||||||
|
lang = "c++";
|
||||||
|
header = "esplugin.hpp";
|
||||||
|
};
|
||||||
|
|
||||||
|
loot-condition-interpreter = finalAttrs.passthru.buildRustFFIPackage rec {
|
||||||
|
pname = "loot-condition-interpreter";
|
||||||
|
version = "4.0.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "loot";
|
||||||
|
repo = "loot-condition-interpreter";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-yXbe7ByYHvFpokRpV2pz2SX0986dpk5IpehwDUhoZKg=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-p+raWZkW16MrvfZhJigSPth8pZZ68twU1+0GL/Mo1Xw=";
|
||||||
|
|
||||||
|
lang = "c";
|
||||||
|
header = "loot_condition_interpreter.h";
|
||||||
|
};
|
||||||
|
|
||||||
|
yaml-cpp = yaml-cpp.overrideAttrs rec {
|
||||||
|
version = "0.8.0+merge-key-support.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "loot";
|
||||||
|
repo = "yaml-cpp";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-whYorebrLiDeO75LC2SMUX/8OD528BR0+DEgnJxxpoQ=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "C++ library for accessing LOOT's metadata and sorting functionality";
|
||||||
|
homepage = "https://github.com/loot/libloot";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
maintainers = with lib.maintainers; [ tomasajt ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
82
pkgs/by-name/li/limo/package.nix
Normal file
82
pkgs/by-name/li/limo/package.nix
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
|
||||||
|
cmake,
|
||||||
|
pkg-config,
|
||||||
|
|
||||||
|
jsoncpp,
|
||||||
|
libarchive,
|
||||||
|
libcpr,
|
||||||
|
libloot,
|
||||||
|
pugixml,
|
||||||
|
|
||||||
|
libsForQt5,
|
||||||
|
|
||||||
|
withUnrar ? true,
|
||||||
|
unrar, # has an unfree license
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "limo";
|
||||||
|
version = "1.0.8.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "limo-app";
|
||||||
|
repo = "limo";
|
||||||
|
rev = "refs/tags/v${finalAttrs.version}";
|
||||||
|
hash = "sha256-6rv1IjWb/nrymd57CtrlAjX2KfMYlYNnfiodiRAJ1Ok=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = lib.optionals (!withUnrar) [
|
||||||
|
# remove `unrar` as fallback when libarchive fails
|
||||||
|
./remove-unrar.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
libsForQt5.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
jsoncpp
|
||||||
|
libarchive
|
||||||
|
libcpr
|
||||||
|
libloot
|
||||||
|
pugixml
|
||||||
|
|
||||||
|
libsForQt5.qtbase
|
||||||
|
libsForQt5.qtsvg
|
||||||
|
libsForQt5.qtwayland
|
||||||
|
]
|
||||||
|
++ lib.optionals withUnrar [
|
||||||
|
unrar
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags =
|
||||||
|
[
|
||||||
|
(lib.cmakeFeature "LIMO_INSTALL_PREFIX" (placeholder "out"))
|
||||||
|
(lib.cmakeBool "USE_SYSTEM_LIBUNRAR" true)
|
||||||
|
]
|
||||||
|
++ lib.optionals (!withUnrar) [
|
||||||
|
(lib.cmakeFeature "LIBUNRAR_PATH" "")
|
||||||
|
(lib.cmakeFeature "LIBUNRAR_INCLUDE_DIR" "")
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "General purpose mod manager with support for the NexusMods API and LOOT";
|
||||||
|
homepage = "https://github.com/limo-app/limo";
|
||||||
|
license = lib.licenses.gpl3Plus;
|
||||||
|
mainProgram = "Limo";
|
||||||
|
maintainers = with lib.maintainers; [
|
||||||
|
tomasajt
|
||||||
|
MattSturgeon
|
||||||
|
];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
42
pkgs/by-name/li/limo/remove-unrar.patch
Normal file
42
pkgs/by-name/li/limo/remove-unrar.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
diff --git a/src/core/installer.cpp b/src/core/installer.cpp
|
||||||
|
index ea384a8..aab8be0 100644
|
||||||
|
--- a/src/core/installer.cpp
|
||||||
|
+++ b/src/core/installer.cpp
|
||||||
|
@@ -7,7 +7,6 @@
|
||||||
|
#include <ranges>
|
||||||
|
#include <regex>
|
||||||
|
#define _UNIX
|
||||||
|
-#include <dll.hpp>
|
||||||
|
|
||||||
|
namespace sfs = std::filesystem;
|
||||||
|
namespace pu = path_utils;
|
||||||
|
@@ -35,6 +34,8 @@ void Installer::extract(const sfs::path& source_path,
|
||||||
|
}
|
||||||
|
catch(CompressionError& error)
|
||||||
|
{
|
||||||
|
+ throw error;
|
||||||
|
+ /*
|
||||||
|
std::string extension = source_path.extension().string();
|
||||||
|
std::transform(extension.begin(),
|
||||||
|
extension.end(),
|
||||||
|
@@ -48,6 +49,7 @@ void Installer::extract(const sfs::path& source_path,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw error;
|
||||||
|
+ */
|
||||||
|
}
|
||||||
|
for(const auto& dir_entry : sfs::recursive_directory_iterator(dest_path))
|
||||||
|
{
|
||||||
|
@@ -428,6 +430,7 @@ void Installer::extractWithProgress(const sfs::path& source_path,
|
||||||
|
sfs::current_path(working_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
void Installer::extractRarArchive(const sfs::path& source_path, const sfs::path& dest_path)
|
||||||
|
{
|
||||||
|
log(Log::LOG_DEBUG, "Using fallback rar extraction");
|
||||||
|
@@ -459,3 +462,4 @@ void Installer::extractRarArchive(const sfs::path& source_path, const sfs::path&
|
||||||
|
throw CompressionError("Failed to extract RAR archive.");
|
||||||
|
RARCloseArchive(hArcData);
|
||||||
|
}
|
||||||
|
+*/
|
Loading…
Reference in New Issue
Block a user