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

v0.14+ requires all dependencies (pg, mysql, sqlite3 + dev package) #87

Open
ysbaddaden opened this issue May 9, 2023 · 2 comments · May be fixed by #91
Open

v0.14+ requires all dependencies (pg, mysql, sqlite3 + dev package) #87

ysbaddaden opened this issue May 9, 2023 · 2 comments · May be fixed by #91

Comments

@ysbaddaden
Copy link
Contributor

ysbaddaden commented May 9, 2023

The development dependencies were moved back as hard dependencies in v0.14.0

To merely install the micrate shard to our projects, the development packages of sqlite3 MUST be installed, regardless of the actual need for sqlite3. If the external C library isn't installed, adding the micrate shard won't even install, since the postinstall script forces the creation of the bin/micrate binary.

This is #77 again.

@hugopl
Copy link
Contributor

hugopl commented Oct 31, 2023

I just hit this issue, my use case is a amber project that works on data created by a rails project, so the migrations are handled by rails and I don't even use micrate... so to avoid need to install a lot of libraries I don't need my workaround is to simply --skip-postinstall and --skip-executables.

@Blacksmoke16
Copy link
Contributor

For posterity I looked into this a bit and there is no real good/simple solutions at the moment. My proposed solution would be:

  1. Remove the explicit deps
  2. Remove the postinstall script
  3. Update docs to instruct users to create a src/micrate.cr file and require related DB shards and call entrypoint method. (could have this part be automated by the postinstall script), then add a target for it in shard.yml

This means it won't be auto installed where you can just do ./bin/micrate anymore, but you only have to define that file/setup once so it isn't the end of the world. There is the argument that tools like this should be installed globally which would make things easier as well but 🤷.

hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a crystal script in bin/micrate, the script just
compiles the micrate CLI to bin/micrate-bin if it doesn't exists.

On micrate-bin side, it only require the database libraries found in
lib dir, so the user of micrate now need to add the database backend.

Another change included in this patch was to let the crystal-db version
free, so micrate doesn't hold the entire application of using new
versions of crystal-db.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
hugopl added a commit to hugopl/micrate that referenced this issue Jan 3, 2025
This works by having a wrapper that compiles the CLI on first use, when
the database backend libraries were already downloaded by shards.

Changes:
- Rename src/micrate-bin.cr to src/micrate-cli.cr
- Add src/micrate-wrapper.cr that compiles in a post install to
  bin/micrate.
- bin/micrate compiles src/micrate-cli to bin/micrate-cli-<VERSION>
- src/micrate-cli.cr only require database backends found in lib/
- Do not pin crystal-db version to avoid having to release new micrate versions on every crystal-db release.

Fix amberframework#87
@hugopl hugopl linked a pull request Jan 3, 2025 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants