Removing 32-bit architectures from juju-core source package

Nicholas Skaggs nicholas.skaggs at canonical.com
Tue Sep 20 14:35:51 UTC 2016


On 09/19/2016 10:37 PM, Steve Langasek wrote:
> Hi Nicholas,
>
> On Mon, Sep 12, 2016 at 06:47:31PM -0400, Nicholas Skaggs wrote:
>> On 09/07/2016 04:57 PM, Nicholas Skaggs wrote:
>>> Hello all. I'd like to discuss the removal of 32-bit architectures from
>>> the juju-core source package. The current packaging in the xenial and
>>> yakkety archive for juju-core specifies it's architecture as 'All'. This
>>> was an oversight as we officially support only the following
>>> architectures:
>>> amd64 ppc64el arm64 s390x
>>> We don't test or support 32-bit builds of juju. This is in-line with the
>>> clouds upon which juju runs which don't support 32-bit servers, as well as
>>> our own support of xenial server and mitaka -- 64-bit only.
>>> With this in mind, I'd like to update the archive packaging in both xenial
>>> and yakkety to remove these unsupported builds. I realize removing
>>> previously published binaries from the xenial archive isn't ideal, however
>>> we cannot update the current packages in order to deal with changes in
>>> cloud providers.
>>> I am looking for feedback and help to accomplish this. I would propose the
>>> following, but am open to other ideas to best accomplish this task.
>>> 1) Upload a new conjure-up package to xenial and yakkety that changes the
>>> architecture to 'Any'
>  From my POV this is not required.  Anyway, changing its architecture to
> 'any' would probably not be what you want since that would still build the
> package on all architectures; if you were going to change it at all,
> presumably you would want to restrict the architecture list, or add the same
> kind of warning-message-on-upgrade dummy package.  But provided that we are
> handling the architectures appropriately in juju-core itself, I don't think
> you need to change anything in conjure-up.
>
>>> 2) Upload a new juju-source package to xenial and yakkety that:
>>>         -- specifies the architecture as 'amd64 ppc64el arm64 s390x'
>>>         -- provides a second binary package for 32-bit users that ensures
>>> they upgrade to a message informing them the package isn't supported.
> This seems like the best available option.  Ideally we would not get
> ourselves in the situation in the first place that a package we can't
> support has made it into a release.  But seeing that we're here, I think
> it's better to bite the bullet now rather than let it drag on further.
>
>>> I want to ensure a smooth experience for anyone who installed a 32-bit
>>> version of juju on xenial. It is not found on any images, and juju itself
>>> is not yet final. Production deployments should still be utilizing juju-1.
>>> I would like to remove this package before wider adoption as juju2 enters
>>> RC and final release stages. I would especially appreciate ideas about
>>> ensuring a good upgrade story for current users. I don't suspect there are
>>> many at all, but I don't want to leave unsupported and abandoned packages
>>> in the archive.
>> I'd like to update this mailing to reflect a series of discussions today on
>> #ubuntu-devel surrounding this topic. It has been proposed that a solution
>> be found to provide as much support for the existing 32-bit packages as
>> possible. I've requested the juju-core team to provide compile-time support
>> for disabling providers as a means to mitigate issues where upstream code
>> stops support for 32-bit builds. For 32-bit users, they will retain support
>> to the extent possible for providers on a best effort basis.
>> Most importantly, I trust this relieves my concerns about the inability to
>> landed needed SRU's and regular updates in the development version of ubuntu
>> due to a failing build in an unsupported architecture. I'd like to thank
>> everyone involved for there feedback and discussions. For now, consider this
>> request canceled.
> This implies that the package will be available on 32-bit now, but that you
> are not committing to keep that package free of functional regressions in
> SRU on 32-bit architectures.  That seems much worse, to me, than disabling
> the package altogether on 32-bit now, or immediately disabling all the
> providers that upstream has not committed to providing 32-bit support for.
I agree it's better to cut this off now rather than later. That was the 
initial point of my mail, and my continuing concern with shipping 
packages that don't have upstream support. The counter-arguments given 
in response to my initial mail pointed out that juju is not unique in 
this regard and that efforts should be made to support 32-bit. My 
concerns haven't gone away; I think removing the package and being clear 
to users about what is supported is a "better" user experience, but I am 
open to feedback that would seek alternative solutions. My concern 
either way is that we're blocked on fixing issues because of 32-bit 
failures later on, which I consider a big risk. The proposal of making 
it so we could simply disable the broken bits on 32-bit and retain as 
much as we can was a reasonable request, and one I wanted to try and 
fulfill.
> One of the arguments made for why it's ok to drop the 32-bit package right
> now in xenial is that juju 2 is not yet at its final release and isn't yet
> used in production.  Tabling this request "for now" just means that the next
> time it comes up, it will have much worse impact on the end user.  Let's
> please sort out now what the juju team can commit to support on 32-bit for
> the lifetime of the LTS and do that, rather than pulling the rug out from
> under the users later.
I also agree that now is the time to decide, hence my mails. I felt the 
risk of "dropping" a 32-bit package, while never an ideal thing, was 
best done now early in the cycle and before adoption. If we think there 
is any chance the package would have to be removed during the course of 
the cycle, I would be firmly in the camp of removing it now. I'm also 
concerned about the value and overhead that will be placed on keeping 
the 32-bit package useful over 5 years. Speaking as a user personally, I 
really don't like neutered packages. They are like landmines sometimes; 
I've personally been bitten by this on armhf. I laid out a worst case 
scenario of having a juju package that works only with the local 
provider. Others felt would this would retain value even if that came to 
pass (which I agreed wasn't the most likely outcome at the time). I 
think if there is value even in the worst case scenario, it makes sense 
to try and support it. So I sent my follow-up mail to do just that.

Fast-forwarding to today, I made an effort to get a sustainable 32-bit 
package. I also wanted to gain reassurance I could easily deal with 
further issues should they crop up to truly alleviate my concerns about 
being blocked, hence "sustainable". This was not the first 32-bit build 
issue, and xenial is quite young. Thus I requested the juju core team 
provide a way of compiling without various provider support or other 
things that may trip up builds in the future. In addition, I worked 
again on trying to get a working 32-bit build myself with the idea of 
breaking providers, tests, or anything else as needed. With the caveat 
in mind that I am not a go developer, I discovered that as I tore parts 
away, more things started breaking. The build failures were not unique 
to a specific provider as we had thought, and making things work was not 
an easy task. I also began to seriously wonder how well juju would 
function with the amount of edits I was doing. I was ultimately not 
successful in getting a build, nor was I confident that the build would 
work reasonably. At the same time, the core team investigated breaking 
out provider by provider support and found it was going to be onerous, 
and represent a continual burden due to the intrinsic nature of go. 
Armed with the knowledge that this was not going to be easily solved by 
disabling providers, I don't think this failure changes the outcome.

Given the lack of results, I'm not confident about the 32-bit builds 
going forward. After my investigation and attempts to produce a current 
working build, I think the safest option remains the package removal. 
I'm even less convinced now that 32-bit builds can be supported in the 
future. Sadly, the window for discussion and exploring alternatives on 
this is closing. Juju 2 is releasing an RC today, and adoption will 
begin. I would like to resolve this matter asap. I want to get the RC 
into the archive for our LTS users especially, as well as yakkety for 
our QA and stabilization efforts there.

Nicholas



More information about the Ubuntu-release mailing list