From 8852657baec91e6f1a6164d371bf6cfe3084738b Mon Sep 17 00:00:00 2001 From: Ryan Omasta Date: Tue, 1 Jul 2025 01:17:37 -0600 Subject: [PATCH] comaps: init at 2025.08.13-8 --- pkgs/by-name/co/comaps/package.nix | 106 ++++++++++++++++++ pkgs/by-name/co/comaps/remove-lto.patch | 33 ++++++ .../co/comaps/use-vendored-protobuf.patch | 24 ++++ 3 files changed, 163 insertions(+) create mode 100644 pkgs/by-name/co/comaps/package.nix create mode 100644 pkgs/by-name/co/comaps/remove-lto.patch create mode 100644 pkgs/by-name/co/comaps/use-vendored-protobuf.patch diff --git a/pkgs/by-name/co/comaps/package.nix b/pkgs/by-name/co/comaps/package.nix new file mode 100644 index 000000000000..73d71e7bd8ea --- /dev/null +++ b/pkgs/by-name/co/comaps/package.nix @@ -0,0 +1,106 @@ +{ + lib, + organicmaps, + fetchurl, + fetchFromGitea, + boost, + gtest, + glm, + gflags, + imgui, + jansson, + python3, + optipng, + utf8cpp, + nix-update-script, +}: +let + mapRev = 250804; + + worldMap = fetchurl { + url = "https://cdn-fi-1.comaps.app/maps/${toString mapRev}/World.mwm"; + hash = "sha256-xYMH3y0Y6sSXYUTpy+A5YCyb+n5YChOXhyDvUFqXxZ0="; + }; + + worldCoasts = fetchurl { + url = "https://cdn-fi-1.comaps.app/maps/${toString mapRev}/WorldCoasts.mwm"; + hash = "sha256-2vc4kkNX9bRTqXYlALfwVwOlvr122kvUk7pUyM91vjc="; + }; +in +organicmaps.overrideAttrs (oldAttrs: rec { + pname = "comaps"; + version = "2025.08.13-8"; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "comaps"; + repo = "comaps"; + tag = "v${version}"; + hash = "sha256-kvE3H+siV/8v4WgsG1Ifd4gMMwGLqz28oXf1hB9gQ2Q="; + fetchSubmodules = true; + }; + + patches = [ + ./remove-lto.patch + ./use-vendored-protobuf.patch + ]; + + postPatch = (oldAttrs.postPatch or "") + '' + rm -f 3party/boost/b2 + ''; + + nativeBuildInputs = (builtins.filter (x: x != python3) oldAttrs.nativeBuildInputs or [ ]) ++ [ + (python3.withPackages ( + ps: with ps; [ + protobuf + ] + )) + optipng + ]; + + buildInputs = (oldAttrs.buildInputs or [ ]) ++ [ + boost + gtest + gflags + glm + imgui + jansson + utf8cpp + ]; + + preConfigure = '' + bash ./configure.sh --skip-map-download + ''; + + cmakeFlags = [ + (lib.cmakeBool "WITH_SYSTEM_PROVIDED_3PARTY" true) + ]; + + env = { + NIX_CFLAGS_COMPILE = toString [ + "-I/build/source/3party/fast_double_parser/include" + ]; + PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION = "python"; + }; + + postInstall = '' + install -Dm644 ${worldMap} $out/share/comaps/data/World.mwm + install -Dm644 ${worldCoasts} $out/share/comaps/data/WorldCoasts.mwm + ln -s $out/bin/CoMaps $out/bin/comaps + ''; + + passthru.updateScript = nix-update-script { + extraArgs = [ + "-vr" + "v(.*)" + ]; + }; + + meta = oldAttrs.meta // { + description = "Community-led fork of Organic Maps"; + homepage = "https://comaps.app"; + changelog = "https://codeberg.org/comaps/comaps/releases/tag/v${version}"; + maintainers = [ lib.maintainers.ryand56 ]; + mainProgram = "comaps"; + }; +}) diff --git a/pkgs/by-name/co/comaps/remove-lto.patch b/pkgs/by-name/co/comaps/remove-lto.patch new file mode 100644 index 000000000000..8959eed2af12 --- /dev/null +++ b/pkgs/by-name/co/comaps/remove-lto.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c559bf5..42ed617 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -106,7 +106,7 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug") + elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel") + add_definitions(-DRELEASE) + if (NOT MSVC) +- add_compile_options(-O3 $<$:-flto=auto>) ++ add_compile_options(-O3) + endif() + else() + message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE}) +@@ -116,19 +116,6 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo") + add_compile_options(-fno-omit-frame-pointer) + endif() + +-# Linux GCC LTO plugin fix. +-if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_TYPE MATCHES "^Rel")) +- # To force errors if LTO was not enabled. +- add_compile_options(-fno-fat-lto-objects) +- # To fix ar and ranlib "plugin needed to handle lto object". +- string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION}) +- file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}/liblto_plugin.so) +- set(CMAKE_C_ARCHIVE_CREATE " --plugin ${plugin} qcs ") +- set(CMAKE_C_ARCHIVE_FINISH " --plugin ${plugin} ") +- set(CMAKE_CXX_ARCHIVE_CREATE " --plugin ${plugin} qcs ") +- set(CMAKE_CXX_ARCHIVE_FINISH " --plugin ${plugin} ") +-endif() +- + message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) + + if (PLATFORM_LINUX OR PLATFORM_ANDROID) diff --git a/pkgs/by-name/co/comaps/use-vendored-protobuf.patch b/pkgs/by-name/co/comaps/use-vendored-protobuf.patch new file mode 100644 index 000000000000..01527c53b2a8 --- /dev/null +++ b/pkgs/by-name/co/comaps/use-vendored-protobuf.patch @@ -0,0 +1,24 @@ +diff --git a/3party/CMakeLists.txt b/3party/CMakeLists.txt +index 5178ae0..abe103f 100644 +--- a/3party/CMakeLists.txt ++++ b/3party/CMakeLists.txt +@@ -41,9 +41,6 @@ if (NOT WITH_SYSTEM_PROVIDED_3PARTY) + # Add pugixml library. + add_subdirectory(pugixml) + +- # Add protobuf library. +- add_subdirectory(protobuf) +- + if (NOT PLATFORM_LINUX) + add_subdirectory(freetype) + add_subdirectory(icu) +@@ -55,6 +52,9 @@ if (NOT WITH_SYSTEM_PROVIDED_3PARTY) + target_include_directories(utf8cpp INTERFACE "${OMIM_ROOT}/3party/utfcpp/source") + endif() + ++# Add protobuf library. ++add_subdirectory(protobuf) ++ + add_subdirectory(agg) + add_subdirectory(bsdiff-courgette) + add_subdirectory(minizip)