diff --git a/pkgs/by-name/ma/mangayomi/cargokit.patch b/pkgs/by-name/ma/mangayomi/cargokit.patch deleted file mode 100644 index 9a0aa35c0ddf..000000000000 --- a/pkgs/by-name/ma/mangayomi/cargokit.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- old/rust_builder/cargokit/cmake/cargokit.cmake 2024-11-08 13:36:13.345889693 +0000 -+++ new/rust_builder/cargokit/cmake/cargokit.cmake 2024-11-08 13:45:26.019632176 +0000 -@@ -17,83 +17,22 @@ - function(apply_cargokit target manifest_dir lib_name any_symbol_name) - - set(CARGOKIT_LIB_NAME "${lib_name}") -- set(CARGOKIT_LIB_FULL_NAME "${CMAKE_SHARED_MODULE_PREFIX}${CARGOKIT_LIB_NAME}${CMAKE_SHARED_MODULE_SUFFIX}") -- if (CMAKE_CONFIGURATION_TYPES) -- set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/$") -- set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/$/${CARGOKIT_LIB_FULL_NAME}") -- else() -- set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") -- set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/${CARGOKIT_LIB_FULL_NAME}") -- endif() -- set(CARGOKIT_TEMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/cargokit_build") -- -- if (FLUTTER_TARGET_PLATFORM) -- set(CARGOKIT_TARGET_PLATFORM "${FLUTTER_TARGET_PLATFORM}") -- else() -- set(CARGOKIT_TARGET_PLATFORM "windows-x64") -- endif() -- -- set(CARGOKIT_ENV -- "CARGOKIT_CMAKE=${CMAKE_COMMAND}" -- "CARGOKIT_CONFIGURATION=$" -- "CARGOKIT_MANIFEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${manifest_dir}" -- "CARGOKIT_TARGET_TEMP_DIR=${CARGOKIT_TEMP_DIR}" -- "CARGOKIT_OUTPUT_DIR=${CARGOKIT_OUTPUT_DIR}" -- "CARGOKIT_TARGET_PLATFORM=${CARGOKIT_TARGET_PLATFORM}" -- "CARGOKIT_TOOL_TEMP_DIR=${CARGOKIT_TEMP_DIR}/tool" -- "CARGOKIT_ROOT_PROJECT_DIR=${CMAKE_SOURCE_DIR}" -- ) -- -- if (WIN32) -- set(SCRIPT_EXTENSION ".cmd") -- set(IMPORT_LIB_EXTENSION ".lib") -- else() -- set(SCRIPT_EXTENSION ".sh") -- set(IMPORT_LIB_EXTENSION "") -- execute_process(COMMAND chmod +x "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}") -- endif() -- -- # Using generators in custom command is only supported in CMake 3.20+ -- if (CMAKE_CONFIGURATION_TYPES AND ${CMAKE_VERSION} VERSION_LESS "3.20.0") -- foreach(CONFIG IN LISTS CMAKE_CONFIGURATION_TYPES) -- add_custom_command( -- OUTPUT -- "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG}/${CARGOKIT_LIB_FULL_NAME}" -- "${CMAKE_CURRENT_BINARY_DIR}/_phony_" -- COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV} -- "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake -- VERBATIM -- ) -- endforeach() -- else() -- add_custom_command( -- OUTPUT -- ${OUTPUT_LIB} -- "${CMAKE_CURRENT_BINARY_DIR}/_phony_" -- COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV} -- "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake -- VERBATIM -- ) -- endif() -- -- -- set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/_phony_" PROPERTIES SYMBOLIC TRUE) - - if (TARGET ${target}) - # If we have actual cmake target provided create target and make existing - # target depend on it -- add_custom_target("${target}_cargokit" DEPENDS ${OUTPUT_LIB}) -+ add_custom_target("${target}_cargokit" DEPENDS @output_lib@) - add_dependencies("${target}" "${target}_cargokit") -- target_link_libraries("${target}" PRIVATE "${OUTPUT_LIB}${IMPORT_LIB_EXTENSION}") -+ target_link_libraries("${target}" PRIVATE @output_lib@) - if(WIN32) - target_link_options(${target} PRIVATE "/INCLUDE:${any_symbol_name}") - endif() - else() - # Otherwise (FFI) just use ALL to force building always -- add_custom_target("${target}_cargokit" ALL DEPENDS ${OUTPUT_LIB}) -+ add_custom_target("${target}_cargokit" ALL DEPENDS @output_lib@) - endif() - - # Allow adding the output library to plugin bundled libraries -- set("${target}_cargokit_lib" ${OUTPUT_LIB} PARENT_SCOPE) -+ set("${target}_cargokit_lib" @output_lib@ PARENT_SCOPE) - - endfunction() diff --git a/pkgs/by-name/ma/mangayomi/gitHashes.json b/pkgs/by-name/ma/mangayomi/gitHashes.json new file mode 100644 index 000000000000..c5c136bc8723 --- /dev/null +++ b/pkgs/by-name/ma/mangayomi/gitHashes.json @@ -0,0 +1,8 @@ +{ + "desktop_webview_window": "sha256-wRxQPlJZZe4t2C6+G5dMx3+w8scxWENLwII08dlZ4IA=", + "epubx": "sha256-Rf9zaabPvP7D4NgyJ+LpSB8zHjBvhq2wE0p9Sy7uOXM=", + "flutter_qjs": "sha256-uF3+lQyc6oXWjg9xm8PVXRNZ3AXrw7+FH/lPIQPzaJY=", + "flutter_web_auth_2": "sha256-3aci73SP8eXg6++IQTQoyS+erUUuSiuXymvR32sxHFw=", + "media_kit_video": "sha256-t8lqS44lylLhMyvlY5G1k7EXfpDq8WshBVg8D/z0Hbc=", + "re_editor": "sha256-alfzTs9lUHTsaZgXADb1X3T4ZB6KrhIEeGY0wuvZJtU=" +} diff --git a/pkgs/by-name/ma/mangayomi/package.nix b/pkgs/by-name/ma/mangayomi/package.nix index ff6d2b98f6f4..c562439b2399 100644 --- a/pkgs/by-name/ma/mangayomi/package.nix +++ b/pkgs/by-name/ma/mangayomi/package.nix @@ -1,25 +1,25 @@ { lib, - fetchFromGitHub, - flutter332, - webkitgtk_4_1, - mpv, - rustPlatform, stdenv, + flutter332, + rustPlatform, + fetchFromGitHub, copyDesktopItems, + mpv-unwrapped, + webkitgtk_4_1, makeDesktopItem, - replaceVars, + writeText, }: let pname = "mangayomi"; - version = "0.6.25"; + version = "0.6.3"; src = fetchFromGitHub { owner = "kodjodevf"; repo = "mangayomi"; tag = "v${version}"; - hash = "sha256-vuikoTyvUESz9ZESo4gy76syLYVO1WZdvoJf6NsyW4Y="; + hash = "sha256-nlA5DLYSj9VVpDo7o5Umccoz8RAF+ac3LWV7108t2Ds="; }; metaCommon = { @@ -36,8 +36,6 @@ let sourceRoot = "${src.name}/rust"; - useFetchCargoVendor = true; - cargoHash = "sha256-DDHBLQWscORg4+0CX5c2wmrhm2t7wOpotZFB+85w+EA="; passthru.libraryPath = "lib/librust_lib_mangayomi.so"; @@ -58,36 +56,35 @@ flutter332.buildFlutterApplication { inherit version src; inherit (src) passthru; - patches = [ - (replaceVars ./cargokit.patch { - output_lib = "${rustDep}/${rustDep.passthru.libraryPath}"; - }) - ]; + postPatch = + let + fakeCargokitCmake = writeText "FakeCargokit.cmake" '' + function(apply_cargokit target manifest_dir lib_name any_symbol_name) + set("''${target}_cargokit_lib" ${rustDep}/${rustDep.passthru.libraryPath} PARENT_SCOPE) + endfunction() + ''; + in + '' + cp ${fakeCargokitCmake} rust_builder/cargokit/cmake/cargokit.cmake + ''; installPhase = '' runHook preInstall - cp -r . $out + cp -r . "$out" runHook postInstall ''; }; }; - gitHashes = { - desktop_webview_window = "sha256-wRxQPlJZZe4t2C6+G5dMx3+w8scxWENLwII08dlZ4IA="; - flutter_qjs = "sha256-uF3+lQyc6oXWjg9xm8PVXRNZ3AXrw7+FH/lPIQPzaJY="; - flutter_web_auth_2 = "sha256-3aci73SP8eXg6++IQTQoyS+erUUuSiuXymvR32sxHFw="; - epubx = "sha256-Rf9zaabPvP7D4NgyJ+LpSB8zHjBvhq2wE0p9Sy7uOXM="; - media_kit_video = "sha256-t8lqS44lylLhMyvlY5G1k7EXfpDq8WshBVg8D/z0Hbc="; - re_editor = "sha256-alfzTs9lUHTsaZgXADb1X3T4ZB6KrhIEeGY0wuvZJtU="; - }; + gitHashes = lib.importJSON ./gitHashes.json; nativeBuildInputs = [ copyDesktopItems ]; buildInputs = [ + mpv-unwrapped webkitgtk_4_1 - mpv ]; desktopItems = [ diff --git a/pkgs/by-name/ma/mangayomi/pubspec.lock.json b/pkgs/by-name/ma/mangayomi/pubspec.lock.json index 71d7cc1b1498..60e325e5018b 100644 --- a/pkgs/by-name/ma/mangayomi/pubspec.lock.json +++ b/pkgs/by-name/ma/mangayomi/pubspec.lock.json @@ -440,11 +440,11 @@ "dependency": "direct main", "description": { "name": "d4rt", - "sha256": "d38cde299f9e434b3c2bd0c07a7f3743e2853dfed60a3ed1f97685c34d922062", + "sha256": "40ecf0b73603a8268050e890eb4d037b5bdf4184f439cc18d593e83b100a19e7", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.0.7" + "version": "0.0.9" }, "dart_style": { "dependency": "transitive", @@ -1054,6 +1054,36 @@ "source": "hosted", "version": "2.1.0" }, + "hive": { + "dependency": "direct main", + "description": { + "name": "hive", + "sha256": "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.3" + }, + "hive_flutter": { + "dependency": "direct main", + "description": { + "name": "hive_flutter", + "sha256": "dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "hive_generator": { + "dependency": "direct dev", + "description": { + "name": "hive_generator", + "sha256": "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, "html": { "dependency": "direct main", "description": { @@ -2141,6 +2171,16 @@ "source": "hosted", "version": "1.5.0" }, + "source_helper": { + "dependency": "transitive", + "description": { + "name": "source_helper", + "sha256": "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.5" + }, "source_span": { "dependency": "transitive", "description": { @@ -2763,7 +2803,7 @@ } }, "sdks": { - "dart": ">=3.8.0 <4.0.0", + "dart": ">=3.8.1 <4.0.0", "flutter": ">=3.29.0" } } diff --git a/pkgs/by-name/ma/mangayomi/update-gitHashes.py b/pkgs/by-name/ma/mangayomi/update-gitHashes.py new file mode 100755 index 000000000000..ffa6feb66653 --- /dev/null +++ b/pkgs/by-name/ma/mangayomi/update-gitHashes.py @@ -0,0 +1,51 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i python3 -p python3 nix-prefetch-git + +import json +import subprocess +import sys +from pathlib import Path + +THIS_FOLDER = Path(__file__).parent.resolve() +PUBSPEC_LOCK = THIS_FOLDER / "pubspec.lock.json" +GIT_HASHES = THIS_FOLDER / "gitHashes.json" + + +def fetch_git_hash(url: str, rev: str) -> str: + result = subprocess.run( + ["nix-prefetch-git", "--url", url, "--rev", rev], + capture_output=True, + text=True, + check=True, + ) + return json.loads(result.stdout)["hash"] + + +def main() -> None: + if not PUBSPEC_LOCK.exists(): + sys.exit(1) + try: + data = json.loads(PUBSPEC_LOCK.read_text()) + except json.JSONDecodeError: + sys.exit(1) + output: dict[str, str] = {} + for name, info in data.get("packages", {}).items(): + if info.get("source") != "git": + continue + desc = info.get("description") + if not isinstance(desc, dict): + continue + url = desc.get("url") + rev = desc.get("resolved-ref") + if not (isinstance(url, str) and isinstance(rev, str)): + continue + try: + package_hash = fetch_git_hash(url, rev) + except subprocess.CalledProcessError: + continue + output[name] = package_hash + GIT_HASHES.write_text(json.dumps(output, indent=2) + "\n") + + +if __name__ == "__main__": + main() diff --git a/pkgs/by-name/ma/mangayomi/update.sh b/pkgs/by-name/ma/mangayomi/update.sh index 6fb5e4d57c93..517dc161240a 100755 --- a/pkgs/by-name/ma/mangayomi/update.sh +++ b/pkgs/by-name/ma/mangayomi/update.sh @@ -1,14 +1,14 @@ #!/usr/bin/env nix-shell -#!nix-shell -I nixpkgs=./. -i bash -p curl gnused jq yq nix bash coreutils nix-update +#!nix-shell -i bash -p curl gnused jq yq nix bash nix-update set -eou pipefail -ROOT="$(dirname "$(readlink -f "$0")")" +PACKAGE_DIR=$(realpath "$(dirname "$0")") latestTag=$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} -sL https://api.github.com/repos/kodjodevf/mangayomi/releases/latest | jq --raw-output .tag_name) latestVersion=$(echo "$latestTag" | sed 's/^v//') -currentVersion=$(nix-instantiate --eval -E "with import ./. {}; mangayomi.version or (lib.getVersion mangayomi)" | tr -d '"') +currentVersion=$(nix eval --raw --file . mangayomi.version) if [[ "$currentVersion" == "$latestVersion" ]]; then echo "package is up-to-date: $currentVersion" @@ -17,4 +17,6 @@ fi nix-update --subpackage rustDep mangayomi -curl https://raw.githubusercontent.com/kodjodevf/mangayomi/${latestTag}/pubspec.lock | yq . >$ROOT/pubspec.lock.json +curl -sL https://raw.githubusercontent.com/kodjodevf/mangayomi/${latestTag}/pubspec.lock | yq . >$PACKAGE_DIR/pubspec.lock.json + +$PACKAGE_DIR/update-gitHashes.py