Five Months in the making, multi-architecture builder

Featured image

Five months in the making, multi-architecture builder

If you have been following along, you are probably asking “What took so long?” and I totally understand. I had no idea what was wrong before today. My scripts had been working for over a year, then just stopped. I had removed a bunch of the debug info from the logs, which didn’t help the situation at all.

Upstream progress

The Paketo team continues to put a high priority on ARM64 and multi-architecture tools/buildpacks. I had created several ARM64 workarounds over the years. The Paketo team continued improving their tools to support ARM64 as well. I was not doing a good job of pulling the tooling changes from upstream. So my workarounds were breaking the build.

Several failed attempts

I had made several solid attempts at resolving the issues. I just kept getting distracted with other priorities. I have had this process working on multiple environments. Every version of my pipeline seemed to be broken in a slightly different way. They were, because of my workarounds. I had different workarounds for different environments.


This year, I’ve been traveling more than ever. In fact, I’m on my way to Oracle Cloud World 2023, right now. The laptop that I was using for work, wasn’t keeping up with what I was needing to deliver, to the community. My conference sessions were having issues, my customer sessions were also having issues. Watching for over 4-minutes, for a native compile, isn’t great for anyone. So I requested a new M1 laptop. When I got home on Friday, my new laptop had arrived. Since I’m going to be working on an M1 from now on, I needed to have all the fast builds. I needed to make sure all of my demos work on the new hardware. I also needed to be ready to use Java 21 when it comes out in 2 days. In addition to my new laptop from work, my Ampere Dev Kit server also arrived. The server had been stuck in US Customs for a couple of months, after arriving from China. It was my first time working with US Customs.

  • M1
  • Ampere Dev Kit
  • Java 21

The work

On my new M1, I simply started adding in debug info to the scripts. It felt good to get back into the process and remind myself how it all worked. When things work, you don’t need to keep the details in your mental cache. The upstream builder added a few buildpacks. Packaging the newer buildpacks is where the problems were. Moments ago, I was getting ready to board when my tests passed. The KC Chiefs were playing Jacksonville at the same time. When I shouted with excitement, the people around me assumed that I was watching the game. I love my job. I love what I do. I could hear the Chiefs game, but getting this build to work was even more exciting that watching the Chiefs win the Super Bowl, twice.

A huge surprise

I don’t remember what the number was, from the last time I looked at the stats on Docker Hub. When I went to look today, I was hoping for it to be over 2000. Maybe 3000? Is 5000 possible? My goosebumps hit when I saw that it was over 8500! I am so excited that people are using it.

Next steps

I am going to try to move away from my scripts, towards what the Paketo team is doing. I want to get my version moved over to the paketo-community repository. Hopefully, from there, it will be even closer to being merged upstream.

Stay tuned!

Feedback welcome

Please let me know how it is working for you, all of my socials/contact info can be found here.