Comments (2)
Right now, if you have one member (i.e. not a workspace), it'll cargo install
that. If you have multiple members, it'll cargo install
all of them. I agree that's not ideal and there's a manual workaround, which is to set BP_CARGO_WORKSPACE_MEMBERS
to the list that it should build.
A comma delimited list of the workspace package names (this is the package name in the member's Cargo.toml, not what is in the workspace's Cargo.toml's member list) to install. If the project is not using workspaces, this is not used. By default, for projects with a workspace, the buildpack will build all members in a workspace. See more details below.
pack build testing -b paketo-community/rust -e BP_CARGO_WORKSPACE_MEMBERS='other'
We could fix this, like you said by looking at the targets, but I don't think using cargo install
is the right way to be building user applications. I think cargo build
is a better methodology, it's what you see a lot more often, especially when doing Dockerfiles. I think that will also avoid some issues like this because then it's up to Cargo to decide what to build. Really, the only draw back is that using cargo build
makes it harder to pick out and install the files, but I think I know how to make that work.
At any rate, we have #162 to do that so I'd rather focus efforts there and for now just recommend using the manual workaround of setting your workspace members through the env variables.
from cargo.
The issue seems to be here https://sourcegraph.com/github.com/paketo-community/cargo@9a30f3c5983f7e3b03bde63f1cae4b5d88c376cc/-/blob/runner/runners.go?L422-442
It's actually cargo that says it's a workspace member, if you run ❯ cargo metadata --format-version=1 --no-deps | jq
on this example you'll see
"workspace_members": [
"other 0.1.0 (path+file:///Users/edude03/code/pack-repo/other)",
"testing 0.1.0 (path+file:///Users/edude03/code/pack-repo/testing)"
],
I wonder if this logic should actually look at packages to see if the member contains a bin
crate type?
from cargo.
Related Issues (20)
- Condense build and detect into one executable
- Investigate if caching actually helps & how much HOT 2
- Cache CARGO_HOME HOT 3
- Document buildpack configuration in buildpack.toml
- Validate env used to run Cargo HOT 1
- Explore automatically detecting a command to execute
- Do not allow the `target/` directory to end up in the launch image
- Detect fails with an error if no Cargo.lock or Cargo.toml HOT 4
- Add BOM Support HOT 5
- Add `/workspace/bin` to `$PATH` HOT 1
- Add default target for Tiny stack
- Cross compilation HOT 3
- Missing label io.buildpacks.builder.metadata HOT 1
- Should `--locked` be a default argument for the cargo build pack? HOT 3
- Support `cargo build` HOT 4
- kn func 1.9.0 fails to build a Rust Service HOT 3
- Support for Jammy Tiny Stack HOT 1
- Add support for `upx`
- Build fails with Rust 1.77.0+
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cargo.