Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorganize project infrastructure #4

Closed
2 tasks done
ebkalderon opened this issue Jan 27, 2016 · 4 comments
Closed
2 tasks done

Reorganize project infrastructure #4

ebkalderon opened this issue Jan 27, 2016 · 4 comments

Comments

@ebkalderon
Copy link
Member

There are some major changes coming to our core infrastructure. Currently, the overall Amethyst project consists of three repositories: amethyst, amethyst_cli, and amethyst_opengl.

Amethyst is set for future expansion, and the current approach to organizing our code is not maintainable. I propose the following:

  • Consolidate all of the tools into an "amethyst_tools" repository. All future tools will reside only in this repository.
    • Move the "amethyst_cli" crate into this repository.

This might cause some breakage, but this must be minimized as much as possible. Let's use Piston's approach for managing multiple crates under one repository as prior art.

Progress has begun on the reorg branch.

This is the tools-side counterpart of Amethyst issue #13.

Edit: See the caveats below.

@ebkalderon
Copy link
Member Author

Unfortunately, this doesn't seem to be going smoothly.

  1. Cargo generates an unnecessary libamethyst_tools.rlib library when I compile.
  2. I cannot find the binaries inside the target/ folder and launch them without installing them onto the host system.

@ebkalderon
Copy link
Member Author

Here are some possible alternatives for better hosting multiple optional binaries in a single repository:

  1. Somehow allowing binary crate dependencies in a similar manner to library crates, which would be the ideal route, but is unlikely to ever happen in Cargo.
  2. Conditional compilation of binaries using Cargo [features]. This doesn't exist, but there is Allow conditionally compiling binaries based on "features" rust-lang/cargo#2080 which links to Add dependency of examples towards features rust-lang/cargo#1570. A pull request implementing this exists, but appears to have gone stale.

Neither idea is very appealing. Suggestions are welcome!

@ebkalderon
Copy link
Member Author

Honestly, I think the best route for now is to make each binary a [[bin]] target and move on. Currently, there is only one tool (the amethyst CLI client), so we don't actually have to worry about dependencies and conditional compilation.

It's a hard decision, but to keep Amethyst moving, I'm going to mark this improvement as stalled. Discussion is still welcome, and resolving this ASAP is still a priority, but it shouldn't have to block the 0.2.0 release if we don't have any reason to do so yet.

@torkleyy
Copy link
Member

Closing due to inactivity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants