summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Paśnikowski <marek@marekpasnikowski.pl>2024-03-13 18:40:17 +0100
committerMarek Paśnikowski <marek@marekpasnikowski.pl>2024-03-17 12:59:53 +0100
commitfb730854e6607a769012c931c70aa24217673475 (patch)
tree09641b02db58e9e93f98b8015aaa313733219c32
parentc5eab10e73052cc35d0aa67a03995929fe208312 (diff)
After thinking up a new git workflow, commit current work on Komodo
-rw-r--r--private/komodo/cmake.scm434
-rw-r--r--private/komodo/komodo.scm132
-rw-r--r--private/komodo/vcpkg.scm168
3 files changed, 734 insertions, 0 deletions
diff --git a/private/komodo/cmake.scm b/private/komodo/cmake.scm
new file mode 100644
index 0000000000..74b3a02e41
--- /dev/null
+++ b/private/komodo/cmake.scm
@@ -0,0 +1,434 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (cmake)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix gexp)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix utils)
+ #:use-module (guix deprecation)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system emacs)
+ #:use-module ((guix search-paths) #:select ($SSL_CERT_DIR $SSL_CERT_FILE))
+ #:use-module (gnu packages)
+ #:use-module (gnu packages backup)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages file)
+ #:use-module (gnu packages kde-frameworks)
+ #:use-module (gnu packages libevent)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages serialization)
+ #:use-module (gnu packages sphinx)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages xml)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1))
+
+(define-public cmake-shared
+ (let ((commit "8122f2b96c8da38ea41b653cf69958e75fe2129d")
+ (revision "32"))
+ (package
+ (name "cmake-shared")
+ (version
+ (git-version "1.1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/lirios/cmake-shared.git")
+ (commit commit)))
+ (file-name
+ (git-file-name name version))
+ (sha256
+ (base32 "05avwzqcnliwx9h7qi1kl0iz4smqmxc4vkavyjbmlc6h2b97i58g"))
+ (modules '((guix build utils)
+ (ice-9 ftw)
+ (srfi srfi-1)))
+ (snippet
+ `(begin
+ (delete-file-recursively "3rdparty")))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f)) ; No target
+ (native-inputs
+ (list extra-cmake-modules))
+ (synopsis "Shared CMake functions and macros")
+ (description "CMake-Shared are shared functions and macros for projects
+using the CMake build system.")
+ (home-page "https://github.com/lirios/cmake-shared/")
+ (license license:bsd-3))))
+
+;;; Build phases shared between 'cmake-bootstrap' and the later variants
+;;; that use cmake-build-system.
+(define (%common-build-phases)
+ `((add-after 'unpack 'split-package
+ ;; Remove files that have been packaged in other package recipes.
+ (lambda _
+ (delete-file "Auxiliary/cmake-mode.el")
+ (substitute* "Auxiliary/CMakeLists.txt"
+ ((".*cmake-mode.el.*") ""))))
+ ,@(if (target-x86-32?)
+ '((add-after 'unpack 'skip-cpack-txz-test
+ (lambda _
+ ;; In 'RunCMake.CPack_TXZ', the 'TXZ/THREADED_ALL' test
+ ;; would occasionally fail on i686 with "Internal error
+ ;; initializing compression library: Cannot allocate
+ ;; memory": <https://issues.guix.gnu.org/50617>. Skip it.
+ (substitute* "Tests/RunCMake/CPack/RunCMakeTest.cmake"
+ (("THREADED_ALL \"TXZ;DEB\"")
+ "THREADED_ALL \"DEB\"")))))
+ '())
+ (add-before 'configure 'patch-bin-sh
+ (lambda _
+ ;; Replace "/bin/sh" by the right path in... a lot of
+ ;; files.
+ (substitute*
+ '("Modules/CompilerId/Xcode-3.pbxproj.in"
+ "Modules/Internal/CPack/CPack.RuntimeScript.in"
+ "Source/cmGlobalXCodeGenerator.cxx"
+ "Source/cmLocalUnixMakefileGenerator3.cxx"
+ "Source/cmExecProgramCommand.cxx"
+ "Tests/CMakeLists.txt"
+ "Tests/RunCMake/File_Generate/RunCMakeTest.cmake")
+ (("/bin/sh") (which "sh")))))))
+
+(define %common-disabled-tests
+ '(;; This test copies libgcc_s.so.1 from GCC and tries to modify its RPATH,
+ ;; but does not cope with the file being read-only.
+ "BundleUtilities"
+ ;; These tests require network access.
+ "CTestTestUpload" "CMake.FileDownload"
+ ;; This test requires 'ldconfig' which is not available in Guix.
+ "RunCMake.install"
+ ;; This test fails for unknown reason.
+ "RunCMake.file-GET_RUNTIME_DEPENDENCIES"))
+
+(define %common-disabled-tests/hurd
+ '("CTestTestTimeout"
+ "CTestTestRerunFailed"
+ "RunCMake.CompilerChange"
+ "RunCMake.ctest_test"
+ "RunCMake.file"
+ "RunCMake.BundleUtilities"
+ "RunCMake.configure_file"
+ "RunCMake.CTestTimeout"
+ "RunCMake.CTestTimeoutAfterMatch"
+ "RunCMake.CommandLine"
+ "RunCMake.CTestCommandLine"))
+
+(define %preserved-third-party-files
+ '(;; 'Source/cm_getdate.c' includes archive_getdate.c wholesale, so it must
+ ;; be available along with the required headers.
+ "Utilities/cmlibarchive/libarchive/archive_getdate.c"
+ "Utilities/cmlibarchive/libarchive/archive_getdate.h"
+ ;; ELF headers.
+ "Utilities/cmelf"
+ ;; CMake header wrappers.
+ "Utilities/cm3p"))
+
+;;; The "bootstrap" CMake. It is used to build 'cmake-minimal' below, as well
+;;; as any dependencies that need cmake-build-system.
+(define-public cmake-bootstrap
+ (package
+ (name "cmake-bootstrap")
+ (version "3.27.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://cmake.org/files/v"
+ (version-major+minor version)
+ "/cmake-" version ".tar.gz"))
+ (sha256
+ (base32
+ "01102g2j5klqxl6jvwhwz45libcg9hnb7xchdr3r86x1bw9v19mi"))
+ (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:test-target "test"
+ #:configure-flags
+ #~(let ((parallel-job-count (number->string (parallel-job-count))))
+ (list "--verbose"
+ (string-append "--parallel=" parallel-job-count)
+ (string-append "--prefix=" #$output)
+ "--system-libs"
+ ;; By default, the man pages and other docs land
+ ;; in PREFIX/man and PREFIX/doc, but we want them
+ ;; in share/{man,doc}. Note that unlike
+ ;; autoconf-generated configure scripts, cmake's
+ ;; configure prepends "PREFIX/" to what we pass
+ ;; to --mandir and --docdir.
+ "--mandir=share/man"
+ (string-append "--docdir=share/doc/cmake-"
+ #$(version-major+minor version))
+
+ ;; By default CMake is built without any optimizations. Use
+ ;; the recommended Release target for a ~2.5x speedup.
+ "--" "-DCMAKE_BUILD_TYPE=Release"))
+ #:make-flags
+ #~(let ((skipped-tests
+ (list #$@%common-disabled-tests
+ "CTestTestSubdir" ; This test fails to build 2 of the 3 tests.
+ ;; This test fails when ARGS (below) is in use, see
+ ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>.
+ "CTestCoverageCollectGCOV"
+ #$@(if (target-hurd?)
+ %common-disabled-tests/hurd
+ #~()))))
+ (list
+ (string-append
+ ;; These arguments apply for the tests only.
+ "ARGS=-j " (number->string (parallel-job-count))
+ " --output-on-failure"
+ " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$")))
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(%common-build-phases)
+ (add-before 'configure 'set-paths
+ (lambda _
+ ;; Help cmake's bootstrap process to find system libraries
+ (begin
+ (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+ (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH")
+ (getenv "C_INCLUDE_PATH"))))))
+ ;; CMake uses its own configure script.
+ (replace 'configure
+ (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+ (apply invoke "./configure" configure-flags)))
+ #$@(if (target-hurd?)
+ #~((add-after 'unpack 'patch-hurd
+ (lambda _
+ ;; Version 3.25.0 has a similar fix.
+ (substitute* "Utilities/cmlibuv/src/unix/udp.c"
+ (("!defined\\(__QNX__\\)")
+ "!defined(__GNU__)")))))
+ #~()))))
+ (inputs
+ (list libuv bzip2 curl expat file jsoncpp libarchive rhash zlib))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "CMAKE_PREFIX_PATH")
+ (files '("")))
+ ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR'
+ ;; and 'SSL_CERT_FILE', hence these search path entries.
+ $SSL_CERT_DIR
+ $SSL_CERT_FILE))
+ (home-page "https://cmake.org/")
+ (synopsis "Cross-platform build system")
+ (description
+ "CMake is a family of tools designed to build, test and package software.
+CMake is used to control the software compilation process using simple platform
+and compiler independent configuration files. CMake generates native makefiles
+and workspaces that can be used in the compiler environment of your choice.")
+ (properties '((hidden? . #t)))
+ (license (list license:bsd-3 ; cmake
+ license:expat ; cmjsoncpp is dual MIT/public domain
+ license:public-domain)))) ; cmlibarchive/archive_getdate.c
+
+;;; This minimal variant of CMake does not include the documentation. It is
+;;; used by the cmake-build-system.
+(define-public cmake-minimal
+ (package
+ (inherit cmake-bootstrap)
+ (name "cmake-minimal")
+ (properties (alist-delete 'hidden? (package-properties cmake-bootstrap)))
+ (source (origin
+ (inherit (package-source cmake-bootstrap))
+ ;; Purge CMakes bundled dependencies as they are no longer needed.
+ (modules '((ice-9 ftw)))
+ (snippet
+ `(begin
+ (define preserved-files ',%preserved-third-party-files)
+
+ (file-system-fold (lambda (dir stat result) ;enter?
+ (or (string=? "Utilities" dir) ;init
+ ;; The bundled dependencies are
+ ;; distinguished by having a "cm"
+ ;; prefix to their upstream names.
+ (and (string-prefix? "Utilities/cm" dir)
+ (not (member dir preserved-files)))))
+ (lambda (file stat result) ;leaf
+ (unless (or (member file preserved-files)
+ ;; Preserve top-level files.
+ (string=? "Utilities"
+ (dirname file)))
+ (delete-file file)))
+ (const #t) ;down
+ (lambda (dir stat result) ;up
+ (when (equal? (scandir dir) '("." ".."))
+ (rmdir dir)))
+ (const #t) ;skip
+ (lambda (file stat errno result)
+ (format (current-error-port)
+ "warning: failed to delete ~a: ~a~%"
+ file (strerror errno)))
+ #t
+ "Utilities"
+ lstat)
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON"
+ (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
+ #$(version-major+minor (package-version
+ cmake-bootstrap))))
+
+ ;; This is the CMake used in cmake-build-system. Ensure compiler
+ ;; optimizations are enabled to save size and CPU cycles.
+ #:build-type "Release"
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(%common-build-phases)
+ (add-after 'install 'delete-help-documentation
+ (lambda _
+ (delete-file-recursively
+ (string-append #$output
+ "/share/cmake-"
+ #$(version-major+minor
+ (package-version cmake-bootstrap))
+ "/Help"))))
+ (replace 'check
+ (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+ (let ((skipped-tests (list #$@%common-disabled-tests
+ ;; This test requires the bundled libuv.
+ "BootstrapTest"
+ #$@(if (system-hurd?)
+ %common-disabled-tests/hurd
+ #~()))))
+ (if tests?
+ (begin
+ (invoke "ctest" "-j" (if parallel-tests?
+ (number->string (parallel-job-count))
+ "1")
+ "--exclude-regex"
+ (string-append "^(" (string-join skipped-tests "|") ")$")))
+ (format #t "test suite not run~%"))))))
+ #:cmake (if (%current-target-system)
+ cmake-minimal-cross
+ cmake-bootstrap)))))
+
+;;; The "user-facing" CMake, now with manuals and HTML documentation.
+(define-public cmake
+ (package
+ (inherit cmake-minimal)
+ (name "cmake")
+ (version "3.27.1")
+ (source (origin
+ (inherit (package-source cmake-minimal))
+ (method url-fetch)
+ (uri (string-append "https://cmake.org/files/v"
+ (version-major+minor version)
+ "/cmake-" version ".tar.gz"))
+ (snippet (match (origin-snippet (package-source cmake-minimal))
+ (('begin ('define 'preserved-files ('quote x))
+ rest ...)
+ `(begin (define preserved-files
+ ',(cons "Utilities/cmelf" x))
+ ,@rest))))
+ (sha256
+ (base32
+ "01102g2j5klqxl6jvwhwz45libcg9hnb7xchdr3r86x1bw9v19mi"))
+ (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
+ (outputs '("out" "doc"))
+ (arguments
+ (substitute-keyword-arguments (package-arguments cmake-minimal)
+ ;; Use cmake-minimal this time.
+ ((#:cmake _ #f)
+ (if (%current-target-system)
+ cmake-minimal-cross
+ cmake-minimal))
+
+ ;; Enable debugging information for convenience.
+ ((#:build-type _ #f) "RelWithDebInfo")
+
+ ((#:configure-flags flags ''())
+ #~(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON"
+ (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
+ #$(version-major+minor (package-version
+ cmake-minimal)))
+ "-DCMAKE_INFO_DIR=share/info"
+ "-DCMAKE_MAN_DIR=share/man")
+ #$flags))
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (delete 'delete-help-documentation)
+ (add-after 'install 'move-html-doc
+ (lambda _
+ (let ((html (string-append "/share/doc/cmake-"
+ #$(version-major+minor
+ (package-version cmake-minimal))
+ "/html")))
+ (copy-recursively (string-append #$output html)
+ (string-append #$output:doc html))
+ (delete-file-recursively (string-append #$output html)))))))))
+ (inputs
+ (modify-inputs (package-inputs cmake-minimal)
+ (prepend ncurses))) ;required for ccmake
+ ;; Extra inputs required to build the documentation.
+ (native-inputs
+ (modify-inputs (package-native-inputs cmake-minimal)
+ (append python-sphinx
+ texinfo)))
+ (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
+
+(define-public cmake-minimal-cross
+ (package
+ (inherit cmake-minimal)
+ (name "cmake-minimal-cross")
+ (native-search-paths '())
+ (search-paths
+ (package-native-search-paths cmake-minimal))))
+
+(define-public emacs-cmake-mode
+ (package
+ (inherit cmake)
+ (name "emacs-cmake-mode")
+ (native-inputs '())
+ (inputs '())
+ (outputs '("out"))
+ (build-system emacs-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'chdir-elisp
+ ;; Elisp directory is not in root of the source.
+ (lambda _
+ (chdir "Auxiliary"))))))
+ (synopsis "Emacs major mode for editing Cmake expressions")
+ (description "@code{cmakeos-mode} provides an Emacs major mode for editing
+Cmake files. It supports syntax highlighting, indenting and refilling of
+comments.")))
diff --git a/private/komodo/komodo.scm b/private/komodo/komodo.scm
new file mode 100644
index 0000000000..bc155edc30
--- /dev/null
+++ b/private/komodo/komodo.scm
@@ -0,0 +1,132 @@
+(define-module (komodo)
+ #:use-module (cmake)
+ ;; #:use-module (gnu packages commencement)
+ #:use-module (gnu packages compression)
+ ;; #:use-module (gnu packages cpp)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages ninja)
+ ;; #:use-module (guix build utils)
+ ;; #:use-module (guix build-system copy)
+ #:use-module (guix build-system cmake)
+ ;; #:use-module (guix build-system qt)
+ ;; #:use-module (guix download)
+ ;; #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages)
+ ;; #:use-module (nonguix build-system binary)
+ #:use-module (vcpkg)
+ )
+
+(define-public komodo-wallet
+ (let ((version "0.7.0-beta"))
+ (package
+ (name "komodo-wallet")
+ (version version)
+ (source
+ (origin
+ (uri
+ (git-reference
+ (url
+ "https://github.com/KomodoPlatform/komodo-wallet-desktop")
+ (commit version)
+ (recursive? #t)))
+ (method git-fetch)
+ (hash
+ (content-hash
+ "148fxnhsvqpgfc6jmj7qzz5504k3yqvn1jxqkqdxqmk0ch0abpd7"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DCMAKE_USE_SYSTEM_CPPDAP=OFF")
+ #:phases
+ #~ (modify-phases
+ %standard-phases
+ (add-after
+ 'unpack
+ 'unpack-vcpkg-tool
+ (lambda _
+ (invoke "mkdir" "ci_tools_atomic_dex/vcpkg-repo/downloads")
+ (copy-recursively
+ #+ (origin
+ (uri
+ (string-append
+ "https://github.com/microsoft/vcpkg-tool/archive/"
+ "2023-11-16"
+ ".tar.gz"))
+ (method url-fetch)
+ (hash
+ (content-hash
+ "0gy04mlc8s2560zm9ngjx7p3rbrckk9zxb2g1z0hidkbhgv49lcy")))
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar.gz")))
+ (add-after
+ 'unpack-vcpkg-tool
+ 'patch-vcpkg-tool
+ (lambda _
+ (invoke
+ "chmod" "+w"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar.gz")
+ (invoke
+ "gunzip"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar.gz")
+ (invoke
+ "tar" "-xf"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar"
+ "-C" "ci_tools_atomic_dex/vcpkg-repo/downloads"
+ "vcpkg-tool-2023-11-16/cmake/Findfmt.cmake"
+ "vcpkg-tool-2023-11-16/cmake/FindCMakeRC.cmake")
+ (invoke
+ "tar" "--delete" "-f"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar"
+ "vcpkg-tool-2023-11-16/cmake/Findfmt.cmake"
+ "vcpkg-tool-2023-11-16/cmake/FindCMakeRC.cmake")
+ (substitute*
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/vcpkg-tool-2023-11-16/cmake/Findfmt.cmake"
+ (("the fmt library\" OFF")
+ "the fmt library\" ON"))
+ (substitute*
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/vcpkg-tool-2023-11-16/cmake/FindCMakeRC.cmake"
+ (("resource compiler\" OFF")
+ "resource compiler\" ON"))
+ (invoke
+ "tar" "-rf"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/vcpkg-tool-2023-11-16/cmake/Findfmt.cmake"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/vcpkg-tool-2023-11-16/cmake/FindCMakeRC.cmake")
+ (invoke
+ "gzip"
+ "ci_tools_atomic_dex/vcpkg-repo/downloads/2023-11-16.tar")))
+ (add-after
+ 'unpack
+ 'prepare-vcpkg-bootstrap
+ (lambda _
+ (invoke
+ "chmod" "+x"
+ "ci_tools_atomic_dex/vcpkg-repo/scripts/bootstrap.sh")
+ (substitute*
+ "ci_tools_atomic_dex/vcpkg-repo/scripts/bootstrap.sh"
+ (("vcpkgDownloadTool=\"ON\"")
+ "vcpkgDownloadTool=\"OFF\"")
+ (("\\$actualHash")
+ "$expectedHash"))))
+ (add-before
+ 'configure
+ 'bootstrap-vcpkg
+ (lambda _
+ (invoke
+ "ci_tools_atomic_dex/vcpkg-repo/bootstrap-vcpkg.sh"
+ "--disableMetrics"))))))
+ (native-inputs
+ (list
+ cmake curl ncurses ninja unzip vcpkg-tool-cmrc
+ vcpkg-tool-fmt zip))
+ (synopsis "Komodo Wallet Desktop GUI")
+ (description
+ (string-append
+ "Komodo Wallet is a secure wallet and non-custodial "
+ "decentralized exchange rolled into one application. Store "
+ "your coind, trade peer-to-peer with minimal fees and never "
+ "give up control over your digital assets."))
+ (license license:gpl2)
+ (home-page "https://atomicdex.io/"))))
diff --git a/private/komodo/vcpkg.scm b/private/komodo/vcpkg.scm
new file mode 100644
index 0000000000..260ce197c7
--- /dev/null
+++ b/private/komodo/vcpkg.scm
@@ -0,0 +1,168 @@
+(define-module (vcpkg)
+ ;; #:use-module (cmake)
+ ;; #:use-module (gnu packages commencement)
+ ;; #:use-module (gnu packages compression)
+ ;; #:use-module (gnu packages cpp)
+ ;; #:use-module (gnu packages curl)
+ ;; #:use-module (gnu packages ncurses)
+ ;; #:use-module (gnu packages ninja)
+ ;; #:use-module (guix build utils)
+ #:use-module (guix build-system copy)
+ #:use-module (guix build-system cmake)
+ ;; #:use-module (guix build-system qt)
+ #:use-module (guix download)
+ ;; #:use-module (guix gexp)
+ ;; #:use-module (guix git-download)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages)
+ ;; #:use-module (nonguix build-system binary)
+ )
+
+
+;;; ABSTRACTION -2
+
+(define-public vcpkg-tool-cmrc
+ (let ((version "2.0.1"))
+ (package
+ (name "vcpkg-cmrc")
+ (version version)
+ (source
+ (origin
+ (uri
+ (string-append
+ "https://github.com/vector-of-bool/cmrc/archive/refs/tags/"
+ version
+ ".tar.gz"))
+ (method url-fetch)
+ (hash
+ (content-hash
+ "06xpnnwbqv3r8v0vblzcrjp2zgddy05v132y9c9dz8dyl2m5zbgd"))))
+ (build-system copy-build-system)
+ (arguments
+ '(#:install-plan '(("CMakeRC.cmake" "CMakeRCConfig.cmake"))))
+ (synopsis "A Resource Compiler in a Single CMake Script")
+ (description
+ (string-append
+ "CMakeRC is a resource compiler provided in a single CMake "
+ "script that can easily be included in another project."))
+ (license license:expat)
+ (home-page "https://github.com/vector-of-bool/cmrc/"))))
+
+(define-public vcpkg-tool-fmt
+ (let ((version "10.1.0"))
+ (package
+ (name "vcpkg-fmt")
+ (version version)
+ (source
+ (origin
+ (uri
+ (string-append
+ "https://github.com/fmtlib/fmt/archive/refs/tags/"
+ version ".tar.gz"))
+ (method url-fetch)
+ (hash
+ (content-hash
+ "02na80r7yrkda89s7mz35llqh904dbsppb7g5s7na9ji5yns7c6y"))))
+ (build-system cmake-build-system)
+ (synopsis "A modern formatting library")
+ (description
+ (string-append
+ "{fmt} is an open-source formatting library providing a fast "
+ "and safe alternative to C stdio and C++ iostreams."))
+ (license license:expat)
+ (home-page "https://fmt.dev/"))))
+
+;;; ABSTRACTION -1
+
+(define vcpkg
+ (let ((version "2024.02.14"))
+ (package
+ (name "vcpkg")
+ (version version)
+ (source
+ (origin
+ (uri
+ (string-append
+ "https://github.com/microsoft/vcpkg/archive/refs/tags/"
+ version
+ ".tar.gz"))
+ (method url-fetch)
+ (hash
+ (content-hash
+ "1wbhxfbi964bc93f69rsr1h6z82ypc9lyz2rb0kp3sfwp0m9jhhf"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan '(list (list "vcpkg" "vcpkg"))
+ #:phases
+ #~ (modify-phases
+ %standard-phases
+ (add-after
+ 'unpack
+ 'unpack-vcpkg-tool
+ (lambda _
+ (invoke "mkdir" "downloads")
+ (copy-recursively
+ #+ (origin
+ (uri
+ (string-append
+ "https://github.com/microsoft/vcpkg-tool/archive/"
+ "2024-02-07"
+ ".tar.gz"))
+ (method url-fetch)
+ (hash
+ (content-hash
+ "1j08vw8l8zf6pv6n1kvyjwvj0h7y667shs72sf69hg7p8zj5k9p4")))
+ "downloads/2024-02-07.tar.gz")))
+ (add-after
+ 'unpack-vcpkg-tool
+ 'patch-vcpkg-tool
+ (lambda* _
+ (invoke "chmod" "+w" "downloads/2024-02-07.tar.gz")
+ (invoke "gunzip" "downloads/2024-02-07.tar.gz")
+ (invoke
+ "tar" "-xf" "downloads/2024-02-07.tar" "-C" "downloads"
+ "vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
+ "vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
+ (invoke
+ "tar" "--delete" "-f" "downloads/2024-02-07.tar"
+ "vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
+ "vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
+ (substitute*
+ "downloads/vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
+ (("the fmt library\" OFF")
+ "the fmt library\" ON"))
+ (substitute*
+ "downloads/vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake"
+ (("resource compiler\" OFF")
+ "resource compiler\" ON"))
+ (invoke
+ "tar" "-rf" "downloads/2024-02-07.tar"
+ "downloads/vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
+ "downloads/vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
+ (invoke "gzip" "downloads/2024-02-07.tar")))
+ (add-after
+ 'patch-generated-file-shebangs
+ 'bootstrap-vcpkg
+ (lambda* _
+ (substitute*
+ "scripts/bootstrap.sh"
+ (("vcpkgDownloadTool=\"ON\"")
+ "vcpkgDownloadTool=\"OFF\"")
+ (("\\$actualHash")
+ "$expectedHash"))
+ (invoke "./bootstrap-vcpkg.sh" "--disableMetrics")))
+ (delete 'configure)
+ (delete 'build)
+ (delete 'check))))
+ (native-inputs
+ (list cmake curl ninja unzip vcpkg-tool-cmrc vcpkg-tool-fmt zip))
+ (synopsis "C++ Library Manager for Windows, Linux, and MacOS")
+ (description
+ (string-append
+ "Vcpkg helps you manage C and C++ libraries on Windows, Linux "
+ "and MacOS. This tool and ecosystem are constantly evolving, "
+ "and we always appreciate contributions!"))
+ (license license:expat)
+ (home-page "https://vcpkg.io"))))