Packaging a python library that is implemented with rust

  • Done
  • quality assurance status badge
Details
3 participants
  • Hamzeh Nasajpour
  • Leo Prikler
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Hamzeh Nasajpour
Severity
normal

Debbugs page

Hamzeh Nasajpour wrote 4 years ago
(address . bug-guix@gnu.org)
ccc953ad-6bc9-4ccf-8bc0-6c8d6d977105@www.fastmail.com
Hi,

I'm not expert in rust and python but I need to package a python library, and this python library is a wrapper over the rust library. This library is using the `setuptools_rust` for build/install.

Anyway I need to package this python library. Since guix has two different build system for `python` and `rust` I don't know how can I package it. It's a python library but it should install some rust library inside the python system build.

* This is package definition of `python-setuptools-rust`:
```
(define-public python-setuptools-rust
(package
(name "python-setuptools-rust")
(version "0.11.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "setuptools-rust" version))
(sha256
(base32
"1p21sw77197m7pciy8g25bwwaakq1675h0x1lis9sypzr46p2s11"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
("python-setuptools-scm" ,python-setuptools-scm)
("python-wheel" ,python-wheel)))
(propagated-inputs
`(("python-semantic-version"
,python-semantic-version)
("python-toml" ,python-toml)))
(home-page
(synopsis "Setuptools rust extension plugin")
(description "Setuptools rust extension plugin")
(license license:expat)))
```


* And this is package definition of `python-etebase`.
```
(define-public python-etebase
(package
(name "python-etebase")
(version "0.30.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "etebase" version))
(sha256
(base32
"1py635aqnxx3jy4x6zffriqi0l9gc2gk06h0ms91k4rs68h0gb0i"))))
(build-system python-build-system)
(native-inputs
`(("python-msgpack" ,python-msgpack)
("python-setuptools-rust" ,python-setuptools-rust)))
(inputs
`(("rust-etebase-rs" ,rust-etebase-rs)))
(home-page
(synopsis "Python client library for Etebase")
(description "Python client library for Etebase")
(license #f)))
```


This is the error in package building:
```
etebase-0.30.0/src/
etebase-0.30.0/src/lib.rs
etebase-0.30.0/src/glue.rs.in
phase `unpack' succeeded after 0.0 seconds
starting phase `ensure-no-mtimes-pre-1980'
phase `ensure-no-mtimes-pre-1980' succeeded after 0.0 seconds
starting phase `enable-bytecode-determinism'
phase `enable-bytecode-determinism' succeeded after 0.0 seconds
starting phase `patch-usr-bin-file'
phase `patch-usr-bin-file' succeeded after 0.0 seconds
starting phase `patch-source-shebangs'
phase `patch-source-shebangs' succeeded after 0.0 seconds
starting phase `patch-generated-file-shebangs'
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `build'
running "python setup.py" with command "build" and parameters ()
running build
running build_py
creating build
creating build/lib
creating build/lib/etebase
copying etebase/__init__.py -> build/lib/etebase
running build_ext
running build_rust
error: Can not find Rust compiler
command "python" "-c" "import setuptools, tokenize;__file__='setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "build" failed with status 1
builder for `/gnu/store/45b049cf1k8czxmvwqi3yw6gyk5s7hx5-python-etebase-0.30.0.drv' failed with exit code 1
build of /gnu/store/45b049cf1k8czxmvwqi3yw6gyk5s7hx5-python-etebase-0.30.0.drv failed
View build log at '/var/log/guix/drvs/45/b049cf1k8czxmvwqi3yw6gyk5s7hx5-python-etebase-0.30.0.drv.bz2'.
guix build: error: build of `/gnu/store/45b049cf1k8czxmvwqi3yw6gyk5s7hx5-python-etebase-0.30.0.drv' failed

```



Sorry for duplication, I sent this email here too: https://lists.gnu.org/archive/html/help-guix/2020-10/msg00092.html
then I thought this mailing list is better for asking this type questions.



Regards,
Hamzeh
Leo Prikler wrote 4 years ago
(address . h.nasajpour@pantherx.org)(address . bug-guix@gnu.org)
bcf9adafd96dd14ee7d34b2819b0dd498ed00678.camel@student.tugraz.at
Hello Hamzeh,

I think part of the issue here, is that the build system for etebase-py
tries to also build etebase-rs, which you have already packaged. There
are two ways you could continue here:

1. Patch the build system of etebase-py, so that it works with your
already built etebase-rs.

2. Pull in the etebase-rs source as input to etebase-py and build
everything as one package.

I am not sure, which option makes more sense here. I do lean a bit
more towards #1, but others may weigh in on this as well. I'm pretty
sure you can disregard setuptools-rust if you choose #1. If you do #2,
you might have to mix some of the rust-build-system phases into python-
etebase.

Regards, Leo
Maxim Cournoyer wrote 4 years ago
(name . Hamzeh Nasajpour)(address . h.nasajpour@pantherx.org)(address . 44090-done@debbugs.gnu.org)
87zh0nr4qk.fsf@gmail.com
Hello Hamzeh,

"Hamzeh Nasajpour" <h.nasajpour@pantherx.org> writes:

Toggle quote (9 lines)
> Hi,
>
> I'm not expert in rust and python but I need to package a python library, and this python library is a wrapper over the rust library. This library is using the `setuptools_rust` for build/install.
> * python library: https://github.com/etesync/etebase-py
> * rust library: https://github.com/etesync/etebase-rs
> * `setup.py`: https://github.com/etesync/etebase-py/blob/master/setup.py
>
> Anyway I need to package this python library. Since guix has two different build system for `python` and `rust` I don't know how can I package it. It's a python library but it should install some rust library inside the python system build.

[...]

Toggle quote (3 lines)
> Sorry for duplication, I sent this email here too: https://lists.gnu.org/archive/html/help-guix/2020-10/msg00092.html
> then I thought this mailing list is better for asking this type questions.

The original list was better suited for this kind of question. This
list is about actual *bugs*, rather than general question. I see you've
had a reply from Leo; hopefully that answered your question.

Closing.

Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 44090@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 44090
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help