-
Notifications
You must be signed in to change notification settings - Fork 128
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
Publish Nimbus packages #470
Comments
not sure we want to go here too early - this will be a maintenance cost that isn't necessarily covered by user demand given that our main target group for now is developers that should work with source code |
I think we can treat this as a lower-priority bounty. My concern is that with such nice-to-have, but not mandatory features, the most likely outcome is that we'll be forced to cut them off as the release date becomes closer and we still have more important items to address. If somebody steps in and builds the skeleton of these recipes, I think this can save us quite a bit of time, because researching these systems is 90% of the work. The required maintenance will be mostly about changing URLs and revision hashes and tweaking the build steps. |
how do I find out what are the artifacts that need to go into the package layout? I built with |
|
In practice I think you do need ongoing maintenance of these build process and scripts, rather than "throw it over the wall" one-off development. The target OSes change often, different versions of the target OS also have quirks, testing is fairly important on each target, and what's built in Nimbus source also changes from time to time. I agree that the research and knowledge is 90% of the effort, but then they break easily if not maintained. I would say the 90% should include creating a suitable reproducible build, deploy and test environment for each target. For example we already have a Nix build script: https://github.com/status-im/nimbus-eth1/blob/master/nix/nim.nix And yet, just from looking it looks like the version in the 2021 repo is only going to work on 2019 Nimbus. Multiply this by the number of target OSes and target OS versions and it looks like something that should be going through a regular Devops/CI process, rather than bit-rotting untested scripts. |
To directly answer your question, in the master branch right now I believe Getting more philosophical, at the moment there isn't a correct forward-looking answer, because the source repo is not written with binary installation in mind. We never actually run In one of my branches locally, The other executables (for testing/support tooling) read files from hard-coded paths in the source tree, expecting those files to be present. I see we have some Dockerfiles (two) which install libraries that Nimbus isn't using any more ( I would rather we don't end up with a collection of bit-rotting packaging scripts that contain a lot of hard-coded information. See the existing Nix files for lots of great examples of what to avoid: Hard-coded commit hashes, installs under a hard-coded version number (which needn't match elsewhere in the tree), refers to parts of the tree that don't exist any more. I'd rather we end up with the |
Note: I should make it clear that the PR is active on
I'd be happy to provide ongoing maintenance on whatever approach this feature could end up being.
Not sure I agree. The proposed package layout is quite simple and follows LSB FHS. And as long as the release executable has no dependencies on hard-coded paths in the source tree (which shouldn't happen IMO), there shouldn't be major issues.
Indeed, I'm really aiming for something that will be processed by the CI workflow right before release, and provide packages ready to be installed under Debian, RHEL and SUSE derivatives. Perhaps even packages to be sent to upstream Distro Package
Maybe something like this written into the release workflow?
Indeed these are issues worth paying attention to. I believe it really comes down to how the CI server will be running the build and what runtime dependencies end up listed as a result. The solution can be quite straightforward though, since FPM does have a mechanism for declaring runtime dependencies, which prevent the package from being installed unless they're all met. However I must admit this is not 100% covered in my proposed solution yet, I'll make sure I work something out.
Although I did include some tooling executables on my initial solution, I'm removing them as a suggestion from @stefantalpalaru. Only
I'm making sure that does not happen. I'm not introducing any extra steps into the build process. The packaging script assumes building is already finished.
My end goal is to provide pre-built and pre-packaged binaries. Something the end-user can just do
I'm proposing that the used-every-day script would be the release workflow. In case |
Our build steps are already simple enough and unlikely to change significantly, so we can publish build recipes in package managers that build from source such as:
Other operating systems and package managers may be targeted with build scripts stored in this repo.
The text was updated successfully, but these errors were encountered: