tailhook / vagga

Vagga is a containerization tool without daemons
http://vagga.readthedocs.org
MIT License
1.86k stars 96 forks source link

Use Cargo as build tool and split it to library and bin project #40

Closed hauleth closed 9 years ago

hauleth commented 9 years ago

It would help others on creating containers in Rust and to create electron projects that would share codebase.

tailhook commented 9 years ago

Yes, I'm working on version of vagga wich will work with Rust 1.0, and of course will be built with Cargo. The problem is that it must be built as a static binary, which isn't supported by cargo as far as I know.

Anyway, can you share some thoughts on what library do you want? Doesn't need to be simple wrapper around syscalls, or having all the build tools that vagga has?

hauleth commented 9 years ago

Using Cargo you has possibility to build library and binary independently (only 1 library but as many binaries as you want). So it would be nice to have low level access to Vagga insides and adding CLI wrapper by default.

About static builds it is possible via cargo build --release --target x86_64-unknown-linux-musl. It will build against musl library.

PS there is currently Rust 1.1 stable, but it would be nice to develop Vagga in beta which add a lot of new features (and is mostly compatible with stable).

tailhook commented 9 years ago

Using Cargo you has possibility to build library and binary independently (only 1 library but as many binaries as you want). So it would be nice to have low level access to Vagga insides and adding CLI wrapper by default.

Ok, so that's just a generic recommendation. Not something you looking for specifically in vagga?

About static builds it is possible via cargo build --release --target x86_64-unknown-linux-musl. It will build against musl library.

Well, I have trouble building rust/cargo with musl. Have you tried to build it yourself?

PS there is currently Rust 1.1 stable, but it would be nice to develop Vagga in beta which add a lot of new features (and is mostly compatible with stable).

Sure. But current problem is that vagga is still pre-1.0 code, with a lot of work to port it to to post 1.0.

hauleth commented 9 years ago

For now it is generic, but I'm thinking about possible integration with tool that I'm working at.

I've tried but you need to recompile std to use it with musl.

I can help you with migration to Rust 1.0 and beyond.

Łukasz Jan Niemier

Dnia 9 lip 2015 o godz. 14:48 Paul Colomiets notifications@github.com napisał(a):

Using Cargo you has possibility to build library and binary independently (only 1 library but as many binaries as you want). So it would be nice to have low level access to Vagga insides and adding CLI wrapper by default.

Ok, so that's just a generic recommendation. Not something you looking for specifically in vagga?

About static builds it is possible via cargo build --release --target x86_64-unknown-linux-musl. It will build against musl library.

Well, I have trouble building rust/cargo with musl. Have you tried to build it yourself?

PS there is currently Rust 1.1 stable, but it would be nice to develop Vagga in beta which add a lot of new features (and is mostly compatible with stable).

Sure. But current problem is that vagga is still pre-1.0 code, with a lot of work to port it to to post 1.0.

— Reply to this email directly or view it on GitHub.

tailhook commented 9 years ago

I can help you with migration to Rust 1.0 and beyond.

It's super cool. Just I'm not sure how we coordinate the work. I have currently unpublished branch with some tweaks, I'm still trying to get it compiled. It's mostly mechanical work for path, io and fs things. I can try to publish branch and we split work by modules, but we can't test until everything compiles. Or may be you just wait until I do all the mechanical work and help me with testing and fixing some bugs?

joehillen commented 9 years ago

@tailhook I'm interested in helping too. I don't see any problem with overlapping effort on this.

I'd suggest creating a rust1.0 branch and add WIP commits for every change and then just push and merge frequently. Once you have that branch up we can send you our WIP commits and you can merge them as they come in.

Once the branch is working you can just rebase and squash all the WIP commits into one commit and push it to master.

This kind of workflow works well for these kinds of mechanical changes.

tailhook commented 9 years ago

Ok, I've just put rust-stable branch. If someone want to help go ahead.

joehillen commented 9 years ago

error: aborting due to 669 previous errors

:fearful:

tailhook commented 9 years ago

Okay, we've reached the point where it builds on stable rust (1.2). While we will do more testing, it's probably time to factor out some crates.

I've started work on low-level library https://github.com/tailhook/unshare, it deals with starting processes, chroots, namespaces, etc.

Separate crates should be for:

Any help on these libraries, including the API design is appreciated.

tailhook commented 9 years ago

Okay, we have "unshare" crate that does low-level stuff (in master/testing not in released version yet). And just released vagga stable that is built by cargo.

@hauleth, should this be closed now?

hauleth commented 9 years ago

If you think so, then yes.

Łukasz Jan Niemier

Dnia 30 sie 2015 o godz. 15:18 Paul Colomiets notifications@github.com napisał(a):

Okay, we have "unshare" crate that does low-level stuff (in master/testing not in released version yet). And just released vagga stable that is built by cargo.

@hauleth, should this be closed now?

— Reply to this email directly or view it on GitHub.