blocknetdx / dockerimages

Official Blocknet Docker Images
Apache License 2.0
10 stars 14 forks source link

Custom build sys v4.3.0 #43

Closed walkjivefly closed 2 years ago

walkjivefly commented 2 years ago

Contains the changes needed to generate a custom Docker build image which can create a SYS v4.3.0 image.

After this PR is merged the correct way to generate a SYS v4.3.0 image is to run the custom build workflow.

walkjivefly commented 2 years ago
  1. The SYS 4.3 image seems to be working fine for everyone now. Previously it was rescanning the chain on every startup but there was no indication of why in the debug.log and it reported the previous shutdown as clean. I think maybe it had something to do with the EVM activation but that's pure speculation. The reason for the custom build is SYS 4.3 requires GCC >= 8.1 and the normal build process uses only GCC 7.
  2. There's a new Dockerfile in images/syscoin4 and that's the one that should be used to create SYS images in future, using the BUILD IMAGE FROM CUSTOM workflow. This workflow omits the generate step which creates the images/coin/Dockerfile. If anyone uses the CREATE IMAGE FROM TEMPLATE for SYS they will overwrite the Dockerfile with something which won't work, at least until we switch to GCC 8+ as default for builds.
  3. I built this weeks ago. I was trying to get to the end of the workflow before PR-ing all the changes. This one ended up "on the back burner", like the Raven one (which needed even more hoops to be jumped through and is waiting for the chain to sync for some confirmation trades before I PR it).
ConanMishler commented 2 years ago
  • The SYS 4.3 image seems to be working fine for everyone now. Previously it was rescanning the chain on every startup but there was no indication of why in the debug.log and it reported the previous shutdown as clean. I think maybe it had something to do with the EVM activation but that's pure speculation. The reason for the custom build is SYS 4.3 requires GCC >= 8.1 and the normal build process uses only GCC 7.
  • There's a new Dockerfile in images/syscoin4 and that's the one that should be used to create SYS images in future, using the BUILD IMAGE FROM CUSTOM workflow. This workflow omits the generate step which creates the images/coin/Dockerfile. If anyone uses the CREATE IMAGE FROM TEMPLATE for SYS they will overwrite the Dockerfile with something which won't work, at least until we switch to GCC 8+ as default for builds.
  • I built this weeks ago. I was trying to get to the end of the workflow before PR-ing all the changes. This one ended up "on the back burner", like the Raven one (which needed even more hoops to be jumped through and is waiting for the chain to sync for some confirmation trades before I PR it).

Thanks for the detailed answers.

If anyone uses the CREATE IMAGE FROM TEMPLATE for SYS they will overwrite the Dockerfile with something which won't work, at least until we switch to GCC 8+ as default for builds.

This situation seems less than optimal. Is there any reason we can't immediately switch to using GCC 8.1+ as the default compiler for image builds? Maybe @atcsecure has an opinion on that.

walkjivefly commented 2 years ago
  • The SYS 4.3 image seems to be working fine for everyone now. Previously it was rescanning the chain on every startup but there was no indication of why in the debug.log and it reported the previous shutdown as clean. I think maybe it had something to do with the EVM activation but that's pure speculation. The reason for the custom build is SYS 4.3 requires GCC >= 8.1 and the normal build process uses only GCC 7.
  • There's a new Dockerfile in images/syscoin4 and that's the one that should be used to create SYS images in future, using the BUILD IMAGE FROM CUSTOM workflow. This workflow omits the generate step which creates the images/coin/Dockerfile. If anyone uses the CREATE IMAGE FROM TEMPLATE for SYS they will overwrite the Dockerfile with something which won't work, at least until we switch to GCC 8+ as default for builds.
  • I built this weeks ago. I was trying to get to the end of the workflow before PR-ing all the changes. This one ended up "on the back burner", like the Raven one (which needed even more hoops to be jumped through and is waiting for the chain to sync for some confirmation trades before I PR it).

Thanks for the detailed answers.

If anyone uses the CREATE IMAGE FROM TEMPLATE for SYS they will overwrite the Dockerfile with something which won't work, at least until we switch to GCC 8+ as default for builds.

This situation seems less than optimal. Is there any reason we can't immediately switch to using GCC 8.1+ as the default compiler for image builds? Maybe @atcsecure has an opinion on that.

Changing toolchain is not to be undertaken lightly. It's possible (but probably unlikely) that some coins may not build with GCC 8+ without modifications. We could switch to GCC 8 and keep our fingers crossed ;-)

I'll do a few tests and see if any of the coins near the top of my todo list fail to build with GCC 8.

ConanMishler commented 2 years ago

I'll do a few tests and see if any of the coins near the top of my todo list fail to build with GCC 8.

Yes, I feel it will still be good to upgrade to GCC 8 if it doesn't impact image building for any of our most important coins. I think the more we can use the CREATE IMAGE FROM TEMPLATE workflow and avoid the BUILD IMAGE FROM CUSTOM workflow, the better off we'll be.