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

Open
ebkalderon opened this Issue Jan 27, 2016 · 3 comments

Comments

@ebkalderon
Member

ebkalderon commented Jan 27, 2016

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 ebkalderon self-assigned this Jan 27, 2016

@ebkalderon ebkalderon added this to the 1.0 milestone Jan 27, 2016

@ebkalderon ebkalderon referenced this issue in amethyst/amethyst Jan 27, 2016

Closed

Reorganize project infrastructure #13

5 of 5 tasks complete
@ebkalderon

This comment has been minimized.

Show comment
Hide comment
@ebkalderon

ebkalderon Jan 27, 2016

Member

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.
Member

ebkalderon commented Jan 27, 2016

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

This comment has been minimized.

Show comment
Hide comment
@ebkalderon

ebkalderon Jan 27, 2016

Member

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 rust-lang/cargo#2080 which links to rust-lang/cargo#1570. A pull request implementing this exists, but appears to have gone stale.

Neither idea is very appealing. Suggestions are welcome!

Member

ebkalderon commented Jan 27, 2016

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 rust-lang/cargo#2080 which links to 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 ebkalderon added diff: hard and removed diff: medium labels Jan 27, 2016

@ebkalderon

This comment has been minimized.

Show comment
Hide comment
@ebkalderon

ebkalderon Jan 27, 2016

Member

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.

Member

ebkalderon commented Jan 27, 2016

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.

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