From acb077f5084d7c8ba72e1415a19c062ab6873b7c Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Fri, 11 Apr 2025 10:57:02 +0800 Subject: [PATCH] gnu: libchewing: Switch to cmake-build-system. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/language.scm (libchewing) [build-system]: Switch to cmake-build-system. [native-inputs]: Add rust, rust:cargo. Add rust-sysroot when cross-compiling. Remove cmake-minimal. Move corrosion to... [inputs]: ...here. Use ‘cargo-inputs’. [arguments]: Remove #:install-source?, #:vendor-dir, #:cargo-inputs, #:cargo-development-inputs. <#:out-of-source?>: Disable, added from the 'cmake-configure phase. <#:phases>: Add 'prepare-cargo-build-system after 'unpack. Remove added phases that are part of cmake-build-system's %standard-phases. * gnu/packages/rust-crates.scm (lookup-cargo-inputs)[libchewing]: New entry. Change-Id: I9af2b5d4efd88bdc2440a16edca683cf1bcb8f72 --- gnu/packages/language.scm | 57 ++++++++++------------- gnu/packages/rust-crates.scm | 90 ++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 32 deletions(-) diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm index 45e3e2ed811..2fc073ce432 100644 --- a/gnu/packages/language.scm +++ b/gnu/packages/language.scm @@ -63,6 +63,7 @@ #:use-module (gnu packages perl-check) #:use-module (gnu packages qt) #:use-module (gnu packages ruby) + #:use-module (gnu packages rust) #:use-module (gnu packages scheme) #:use-module (gnu packages sqlite) #:use-module (gnu packages serialization) @@ -289,51 +290,43 @@ Random Cage Fighting Birds, Cool Music etc.") (file-name (git-file-name name version)) (sha256 (base32 "0gh64wvrk5pn0fhmpvj1j99d5g7f7697rk96zbkc8l72yjr819z5")))) - (build-system cargo-build-system) + (build-system cmake-build-system) (arguments - `(#:modules ((guix build cargo-build-system) + `(#:modules (((guix build cargo-build-system) #:prefix cargo:) (guix build utils) - ((guix build cmake-build-system) #:prefix cmake:)) + (guix build cmake-build-system)) #:imported-modules ((guix build cmake-build-system) ,@%cargo-build-system-modules) - #:install-source? #f - ;; Keep the vendor-dir outside of cmake's directories. - #:vendor-dir "../guix-vendor" - #:cargo-inputs - (("rust-anyhow" ,rust-anyhow-1) - ("rust-clap" ,rust-clap-4) - ("rust-clap-mangen" ,rust-clap-mangen-0.2) - ("rust-der" ,rust-der-0.7) - ("rust-directories" ,rust-directories-5) - ("rust-env-logger" ,rust-env-logger-0.10) - ("rust-log" ,rust-log-0.4) - ("rust-rusqlite" ,rust-rusqlite-0.29)) - #:cargo-development-inputs - (("rust-tempfile" ,rust-tempfile-3)) + #:out-of-source? #f ;For the tests. #:phases (modify-phases %standard-phases - (add-after 'configure 'cmake-configure + (add-after 'unpack 'prepare-cargo-build-system (lambda args - (apply (assoc-ref cmake:%standard-phases 'configure) - ;; For the tests. - (append args (list #:out-of-source? #f))))) + (for-each + (lambda (phase) + (format #t "Running cargo phase: ~a~%" phase) + (apply (assoc-ref cargo:%standard-phases phase) + ;; Keep the vendor-dir outside of cmake's directories. + #:vendor-dir "../guix-vendor" + #:cargo-target ,(cargo-triplet) + args)) + '(unpack-rust-crates + configure + check-for-pregenerated-files + patch-cargo-checksums)))) (add-after 'unpack 'work-around-genkeystroke (lambda _ ;; Remove this phase when we can find ncurses with cmake. (substitute* "tests/CMakeLists.txt" - (("CURSES_FOUND") "FALSE")))) - (replace 'build - (assoc-ref cmake:%standard-phases 'build)) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys #:rest args) - (when tests? - ((assoc-ref cmake:%standard-phases 'check))))) - (replace 'install - (assoc-ref cmake:%standard-phases 'install))))) + (("CURSES_FOUND") "FALSE"))))))) (native-inputs - (list corrosion cmake-minimal)) + (append + (list rust `(,rust "cargo") ) + (or (and=> (%current-target-system) + (compose list make-rust-sysroot)) + '()))) (inputs - (list ncurses sqlite)) + (cons* corrosion ncurses sqlite (cargo-inputs 'libchewing))) (synopsis "Chinese phonetic input method") (description "Chewing is an intelligent phonetic (Zhuyin/Bopomofo) input method, one of the most popular choices for Traditional Chinese users.") diff --git a/gnu/packages/rust-crates.scm b/gnu/packages/rust-crates.scm index ddaf549c16a..6f222405154 100644 --- a/gnu/packages/rust-crates.scm +++ b/gnu/packages/rust-crates.scm @@ -1309,6 +1309,10 @@ (crate-source "directories" "4.0.1" "045jbj5y2f1fmjs9rfcw95y0vjydb2rqqhz1sdnqhdmxv96ms77m")) +(define rust-directories-5.0.1 + (crate-source "directories" "5.0.1" + "0dba6xzk79s1clqzxh2qlgzk3lmvvks1lzzjhhi3hd70hhxifjcs")) + (define rust-directories-6.0.0 (crate-source "directories" "6.0.0" "0zgy2w088v8w865c11dmc3dih899fgrhvrfp7g83h6v6ai60kx8n")) @@ -2580,6 +2584,10 @@ (crate-source "hashbrown" "0.15.2" "12dj0yfn59p3kh3679ac0w1fagvzf4z2zp87a13gbbqbzw0185dz")) +(define rust-hashlink-0.10.0 + (crate-source "hashlink" "0.10.0" + "1h8lzvnl9qxi3zyagivzz2p1hp6shgddfmccyf6jv7s1cdicz0kk")) + (define rust-hashlink-0.9.1 (crate-source "hashlink" "0.9.1" "1byq4nyrflm5s6wdx5qwp96l1qbp2d0nljvrr5yqrsfy51qzz93b")) @@ -4896,6 +4904,10 @@ (crate-source "rusqlite" "0.32.1" "0vlx040bppl414pbjgbp7qr4jdxwszi9krx0m63zzf2f2whvflvp")) +(define rust-rusqlite-0.34.0 + (crate-source "rusqlite" "0.34.0" + "0hy15qj9fzi4xhpslq32ajl6x07x2lzkrqn0qx8y1n48va349qrp")) + (define rust-rust-argon2-2.1.0 (crate-source "rust-argon2" "2.1.0" "1s66kgbvnv5vaq4vlglx587bq93c662whrniz6ycpjb03m9li64x")) @@ -8916,6 +8928,84 @@ rust-wyz-0.5.1 rust-x11rb-0.13.1 rust-x11rb-protocol-0.13.1)) + (libchewing => + (list rust-anstream-0.6.18 + rust-anstyle-1.0.10 + rust-anstyle-parse-0.2.6 + rust-anstyle-query-1.1.2 + rust-anstyle-wincon-3.0.7 + rust-anyhow-1.0.97 + rust-bitflags-2.9.0 + rust-cfg-if-1.0.0 + rust-clap-4.5.35 + rust-clap-builder-4.5.35 + rust-clap-derive-4.5.32 + rust-clap-lex-0.7.4 + rust-clap-mangen-0.2.26 + rust-colorchoice-1.0.3 + rust-der-0.7.9 + rust-directories-5.0.1 + rust-dirs-sys-0.4.1 + rust-env-filter-0.1.3 + rust-env-logger-0.11.8 + rust-errno-0.3.11 + rust-fallible-iterator-0.3.0 + rust-fallible-streaming-iterator-0.1.9 + rust-fastrand-2.3.0 + rust-foldhash-0.1.5 + rust-getrandom-0.2.15 + rust-getrandom-0.3.2 + rust-hashbrown-0.15.2 + rust-hashlink-0.10.0 + rust-heck-0.5.0 + rust-is-terminal-polyfill-1.70.1 + rust-libc-0.2.171 + rust-libredox-0.1.3 + rust-libsqlite3-sys-0.32.0 + rust-linux-raw-sys-0.9.4 + rust-log-0.4.27 + rust-once-cell-1.21.3 + rust-option-ext-0.2.0 + rust-pkg-config-0.3.32 + rust-proc-macro2-1.0.94 + rust-quote-1.0.40 + rust-r-efi-5.2.0 + rust-redox-users-0.4.6 + rust-roff-0.2.2 + rust-rusqlite-0.34.0 + rust-rustix-1.0.5 + rust-smallvec-1.15.0 + rust-strsim-0.11.1 + rust-syn-2.0.100 + rust-tempfile-3.19.1 + rust-thiserror-1.0.69 + rust-thiserror-impl-1.0.69 + rust-unicode-ident-1.0.18 + rust-utf8parse-0.2.2 + rust-vcpkg-0.2.15 + rust-wasi-0.11.0+wasi-snapshot-preview1 + rust-wasi-0.14.2+wasi-0.2.4 + rust-windows-sys-0.48.0 + rust-windows-sys-0.59.0 + rust-windows-targets-0.48.5 + rust-windows-targets-0.52.6 + rust-windows-aarch64-gnullvm-0.48.5 + rust-windows-aarch64-gnullvm-0.52.6 + rust-windows-aarch64-msvc-0.48.5 + rust-windows-aarch64-msvc-0.52.6 + rust-windows-i686-gnu-0.48.5 + rust-windows-i686-gnu-0.52.6 + rust-windows-i686-gnullvm-0.52.6 + rust-windows-i686-msvc-0.48.5 + rust-windows-i686-msvc-0.52.6 + rust-windows-x86-64-gnu-0.48.5 + rust-windows-x86-64-gnu-0.52.6 + rust-windows-x86-64-gnullvm-0.48.5 + rust-windows-x86-64-gnullvm-0.52.6 + rust-windows-x86-64-msvc-0.48.5 + rust-windows-x86-64-msvc-0.52.6 + rust-wit-bindgen-rt-0.39.0 + rust-zeroize-1.8.1)) (librsvg => (list rust-adler2-2.0.0 rust-aho-corasick-1.1.3