Hi guys,
Anybody has any solution? For now I face with this error in package
installation:
```
...
Compiling etebase-python v0.30.0
(/tmp/guix-build-python-etebase-py-0.30.0.drv-0/etebase-0.30.0)
error: unterminated double quote string
--> src/lib.rs:63:44
|
63 | include!(concat!(env!("OUT_DIR"), "/glue.rs"));
|^
error: aborting due to previous error
error: could not compile `etebase-python`.
```
This error is related to this line:
https://github.com/etesync/etebase-py/blob/master/src/lib.rs#L62
Quick review:
1. I want to package `etebase-py`.
2. the build system for etebase-py tries to also build etebase-rs.
3. It's using the `setuptools-rust` for installing the rust dependencies.
4. So I packaged `etebase-py` with `cargo` build system, then I can patch the
build system to installing the python files. In this step I faced with the
above errors.
This is my package definition:
```
(define-public python-etebase-py
(package
(name "python-etebase-py")
(version "0.30.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "etebase" version))
(sha256
(base32
"1py635aqnxx3jy4x6zffriqi0l9gc2gk06h0ms91k4rs68h0gb0i"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "Cargo.toml"
(("etebase = " all) "etebase = \"^0.1.0\" #"))
(substitute* "Cargo.toml"
(("flapigen = " all) "flapigen = \"^0.6.0-pre7\" #"))
(substitute* "Cargo.toml"
(("0.10.30.*") "0.10.30\" }\n"))
(substitute* "src/lib.rs"
(("mod fixes*") "#![feature(inner_deref)]\" \nmod fixes {"))
#t
(build-system cargo-build-system)
(arguments
`(#:tests? #f
#:cargo-inputs
(("rust-openssl" ,rust-openssl-0.10.30)
("rust-cpython" ,rust-cpython-0.3)
("rust-log" ,rust-log-0.4)
("rust-etebase-rs" ,rust-etebase-rs)
("rust-flapigen" ,rust-flapigen-0.6)
("rust-env-logger" ,rust-env-logger-0.7))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-rust-installation
(lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl"))
(source (assoc-ref %build-inputs "source"))
(libsodium (assoc-ref inputs "libsodium")))
(setenv "RUST_BACKTRACE" "full")
(setenv "RUSTC_BOOTSTRAP" "1")
;(setenv "OPENSSL_DIR" openssl)
(setenv "SODIUM_LIB_DIR" (string-append libsodium "/lib")))
#t))
)))
(native-inputs
`(("libsodium" ,libsodium)
("python-msgpack" ,python-msgpack)
("openssl" ,openssl)
("perl" ,perl)
("pkg-config" ,pkg-config)
("python-setuptools-rust" ,python-setuptools-rust)))
(inputs
`(("python" ,python)))
(home-page "https://github.com/etesync/etebase-py";)
(synopsis "A python client library for EteSync.")
(description
"This module provides a python API to interact with an EteSync
server.
It currently implements AddressBook and Calendar access, and supports two-way
sync (both push and pull) to the server.")
(license license:gpl3)))
```
Any idea?