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

Distribution, packaging #3

Open
1 of 6 tasks
friendlyanon opened this issue Nov 14, 2024 · 8 comments
Open
1 of 6 tasks

Distribution, packaging #3

friendlyanon opened this issue Nov 14, 2024 · 8 comments

Comments

@friendlyanon
Copy link

friendlyanon commented Nov 14, 2024

This is more of a TODO list to make the project distributable:

@jart
Copy link
Owner

jart commented Nov 15, 2024

Originally the intent was to just provide something simple that people can copy into their codebases and change to taste. We could however do this too. In that case you're right we probably want a better name. How about jart::Json for that? Then use jart-json as the package name? We could potentially avoid a namespace by calling the class JtJson and then using jtjson as the vcpkg name. I think I'm leaning towards jtjson.

I have vcpkg installed on my computer, but I've never used it before. Once we pick a name and add the necessary configs, if you tell me what commands I need to run to register the package, I'll do it.

Both shared and static are fine.

If you send a PR with a cmake config and write a github action that runs it, I'll merge it and maintain it.

@friendlyanon
Copy link
Author

Sounds good to me. I can start with creating a package for jtckdint.

Are you sure about providing/enabling a shared library? That will require the aforementioned export macros, SO version management to denote ABI changes and the usual shared library stuff.
With the size of the code, I don't think only a static library would be much of a waste in terms of space.

@jart
Copy link
Owner

jart commented Nov 15, 2024

Let me do the registration. You don't want to own the maintenance burden for my projects.

Good point. How about we start with only static? I assume we can always do shared later on. It's better to give contributors more freedom in the beginning to change things, wouldn't you agree?

@valgur
Copy link

valgur commented Nov 17, 2024

+1. I would love to add it as a package on ConanCenter as well.

Regarding adding shared library support - you can start out simple and only support non-Windows platforms initially, which don't require export macros, and soname versioning can be tackled later as well (although adding it in CMake is as simple as setting a SOVERSION property on the library).

@friendlyanon
Copy link
Author

only support non-Windows platforms initially, which don't require export macros

Yes, you very much do if you follow platform guidelines: https://gcc.gnu.org/wiki/Visibility
But before any of that, jtckdint needs attention first: jart/jtckdint@6764e17#commitcomment-149115155

@jart
Copy link
Owner

jart commented Nov 20, 2024

@friendlyanon Thanks for discovering __SIZEOF_INT128__. That works back to at least GCC 4.8. We'll get that merged today.

@valgur I'm happy to support that package manager too. Would it be possible for me to automate this work GitHub Actions? If you could get me setup with a PR that automates publishing there, then I'll commit myself to maintaining it going forward.

@friendlyanon
Copy link
Author

Conan and vcpkg are both centralized by default. Conan uses Conan Center Index and vcpkg uses the git repo it comes with by default. Packaging something for either requires submitting a recipe (Conan) or a port (vcpkg). This requires a PR with someone reviewing and merging that. There is no automatic package creation you can script with GitHub Actions.

@jart
Copy link
Owner

jart commented Nov 20, 2024

OK we now have:

  • A cmake build config
  • CI runners for
    • Ubuntu x86
    • Ubuntu aarch64
    • Ubuntu ppc64le
    • Ubuntu s390x
    • MacOS
    • MSVC
    • MSYS2

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

No branches or pull requests

3 participants