Bug 1030232

Summary: rust >= 1.24.0 and cargo >= 0.25 required for Firefox 60 ESR
Product: [openSUSE] openSUSE Distribution Reporter: Luke Jones <luke>
Component: FirefoxAssignee: Luke Jones <luke>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None CC: astieger, fkrueger, lnussel, luc14n0, maintenance, meissner, mmanu84, wolfgang
Version: Leap 42.3   
Target Milestone: ---   
Hardware: Other   
OS: openSUSE 42.3   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Luke Jones 2017-03-21 08:32:09 UTC
Firefox 53 and above will require Rust language compiler to be available in
all releases that contain Firefox and will be supported past FF53.

A version of Rust is available in Leap:42.2 but this is very outdated.
There is often an issue with getting Rust in to releases due to it needing
a bootstrap build - in the past we have simply aggregated the successful
builds from the devel project.

It is not possible to use a version of rust older than n-1 to build the nth
version due to breaking changes in each version. Only the nth compiling with
n-1 version is guaranteed. Thus for Leap:42.2 and less, a bootstrap or aggregate
is required.

Two solutions:

1: Aggregate the successful builds from the devel project (devel:languages:rust)
or
2: I change the packaging to include the bootstraps (whcih are currently
   separate) - this will increase the rpm source by approx 120mb per
   architecture we support.

Note: Rust compilation also requires cargo, which also must be bootstrapped.

Advice on how to proceed would be greatly appreciated.
Comment 1 Andreas Stieger 2017-03-21 08:42:31 UTC
openSUSE Leap 42.2 has 1.10.0, which release of rust will you be needing? In other words, how many steps?

Bootstrapping via aggregation is a bit out of the ordinary, but would work for us. E.g. for maintenance could just release a series of maintenance updates, increasing the rust release in each of them and using it to build the next version.

(Just mentioning the general alternative of staying in 52 ESR, not desired I think.)

Next steps would be that you make this work in a devel project or wherever you need. As we probably need some lead time on this, this may very well be separate form the FF 53 maintenance.
Comment 2 Luke Jones 2017-03-21 08:56:15 UTC
(In reply to Andreas Stieger from comment #1)
> openSUSE Leap 42.2 has 1.10.0, which release of rust will you be needing? In
> other words, how many steps?
> 
> Bootstrapping via aggregation is a bit out of the ordinary, but would work
> for us. E.g. for maintenance could just release a series of maintenance
> updates, increasing the rust release in each of them and using it to build
> the next version.
> 

We would only need to bootstrap once, directly to 1.15.1 which is the previous
release, and then have the current 1.16.0 release use that for building.

> (Just mentioning the general alternative of staying in 52 ESR, not desired I
> think.)
> 
> Next steps would be that you make this work in a devel project or wherever
> you need. As we probably need some lead time on this, this may very well be
> separate form the FF 53 maintenance.

It would be very easy for me to checkout the previous release from
devel:languages:rust/rust and build that with the previous bootstrap,
then we can aggregate that build, and proceed from there.
This would be the preferred solution rather than stepping through each
release until current.
Comment 3 Andreas Stieger 2017-03-21 08:59:04 UTC
Note that for maintenance the packages will always be re-built in incident projects below openSUSE:Maintenance, so this would be an operation for the maintenance team. The content of the devel repository would be informative only.
Comment 4 Wolfgang Rosenauer 2017-03-21 19:29:50 UTC
Currently (as of Firefox 52) rustc 1.10 would be fine. What is missing in 42.2 is cargo though.

Firefox 53 will require rustc 1.13 (as known today).
Firefox 54 will require rustc 1.15.1 (as known today).

Firefox 53 still can be built w/o rust but this possibility is removed with FF 54.

52ESR is indeed an option. Personally it would not be my preferred option but it certainly is one.

rust in general has a similar release cycle as Firefox and therefore we might end up having to patch rust nearly as often as Firefox.

I'm not sure where to discuss how to go forward from here.
Comment 5 Ludwig Nussel 2017-03-22 08:36:45 UTC
What's the disadvantage of FF52ESR?

I guess the rust requirement is inevitable in the long run so going for ESR just postpones the problem. However, it would give us more time to find solution, plus rust time to mature... :-)
Comment 6 Andreas Stieger 2017-03-22 09:00:07 UTC
Thanks for the version info.

Leap 42.1 (the one without rust or cargo) goes EOL on 2017-05-16. This puts us before the FF 54 release schedule (2017-06-13). So we do not need to bolt a new rust/cargo into it.

For Leap 42.2 I think we can supply new rust and releases going forward. We would not do it just so, but if there is a reasonable requirement it would fly.

ESR may make the whole thing a bit more enterprisey and somewhat easier to maintain, but it would be a deviation from the current openSUSE pattern of following the non-ESR releases.

Personally I would prefer the non-ESR releases as we have a healthy packager situation.

What is the plan for 42.3 in this area?

(In reply to Wolfgang Rosenauer from comment #4)
> I'm not sure where to discuss how to go forward from here.

We could talk it through on one of mailing lists...
https://lists.opensuse.org/opensuse-factory-mozilla/
https://lists.opensuse.org/opensuse-factory/
Comment 7 Wolfgang Rosenauer 2017-03-22 09:10:42 UTC
oh, there still is factory-mozilla. I'll try there ;-)

BTW, I just learned that Firefox 53 will finally drop Gtk2 support as well.
So my proposal will be around the lines to switch to 52ESR now for Leap w/o further rust and Gtk3 requirements. There will be a slight difference going from 52.0.1 non-esr to 52.1 ESR:

- switch package to use ESR52 branch
  * enables plugin support by default
  * service workers are disabled by default
  * push notifications are disabled by default
  * WebAssembly (wasm) is disabled
  * Less use of multiprocess architecture Electrolysis (e10s)

For 42.3 we still need to see.

In any case I want to provide non-ESR from OBS which also means that I need to do some magic wrt rust to make it available for build on older distributions.

I will summarize and raise a discussion on the mailing list(s) as well.
Comment 8 Luke Jones 2017-03-27 07:08:32 UTC
I have now got all previous versions of Rust from 1.10 onwards building successfully for all Leap versions.

It won't be a problem at all to get Rust in Leap 42.2 updated to latest, and this would be preferable for many people besides myself - it would also make things consistent across Leap once 42.1 reaches EOL.

Updating rust would also prevent the need for;
> In any case I want to provide non-ESR from OBS which also means that I need to > do some magic wrt rust to make it available for build on older distributions.

For 42.3 I routinely push updates so this won't be a problem at all, not now nor after release.

Either way I would like to get 42.2 Rust up to date now. Whether Firefox is built with Rust or not will be up to Wolfgang :)
Comment 9 Luke Jones 2017-09-04 21:09:33 UTC
Leap 42.2 and previous have reached end-of-life. This issue is now a non-issue.
Comment 10 Marcus Meissner 2017-09-05 06:10:42 UTC
42.1 is EOL, yes.

42.2 is EOL only next year.
Comment 11 Luke Jones 2017-09-05 06:17:32 UTC
Ah my mistake, sorry about that.

The other thing here, I was under the impression that Firefox ESR was being used for Leap? This does not require Rust yet does it?
Comment 12 Marcus Meissner 2017-09-05 06:30:37 UTC
even the ESR branch will move to a rust based version :/
Comment 13 Luke Jones 2017-09-05 06:40:18 UTC
Okay. I've got a plan - means I need to include the bootstrap for building Rust in the package since compilation is only guaranteed with n-1 versions.
Comment 14 Wolfgang Rosenauer 2017-09-05 06:48:23 UTC
I think 42.2 will be out of maintenance once ESR52 will be unsupported.
So we should have a plan if the timing does not work out but for now I would consider 42.2 to not need any special handling.
Comment 15 Tomáš Chvátal 2018-04-17 14:06:17 UTC
This is automated batch bugzilla cleanup.

The openSUSE 42.2 changed to end-of-life (EOL [1]) status. As such
it is no longer maintained, which means that it will not receive any
further security or bug fix updates.
As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
openSUSE, or you can still observe it under openSUSE Leap 15.0, please
feel free to reopen this bug against that version (see the "Version"
component in the bug fields), or alternatively open
a new ticket.

Thank you for reporting this bug and we are sorry it could not be fixed
during the lifetime of the release.

[1] https://en.opensuse.org/Lifetime
Comment 16 Andreas Stieger 2018-04-17 14:28:24 UTC
For Leap 42.3 and Firefox 60 ESR, we appear to need rust >= 1.22.1 (based on 59.0.2), have 1.17.0.

I see that we have the following now:
SUSE:SLE-12-SP2:Update/rust 1.23.0
SUSE:SLE-12-SP2:Update/cargo 0.24.0
Comment 17 Andreas Stieger 2018-04-19 18:07:57 UTC
I built all rust version from Leap 42.3 all the way up to 1.23.0:
https://build.opensuse.org/request/show/598773
https://build.opensuse.org/project/show/openSUSE:Maintenance:8011
Does not allow building of 59.0.2 alone but by itself provides the required version. I was wondering if we should provide intermediate versions? Not sure.
Comment 18 Andreas Stieger 2018-04-23 21:44:29 UTC
rust is in
Comment 19 Swamp Workflow Management 2018-04-24 01:18:59 UTC
openSUSE-RU-2018:1055-1: An update that has two recommended fixes can now be installed.

Category: recommended (moderate)
Bug References: 1030232,1075883
CVE References: 
Sources used:
openSUSE Leap 42.3 (src):    cargo-0.24.0-2.3.1, rust-1.23.0-2.3.1
Comment 20 Wolfgang Rosenauer 2018-04-26 18:47:38 UTC
FWIW,
Firefox 60esr actually requires rustc 1.24.0 and cargo 0.25.0 as a minimum AFAICS.
Even Tumbleweed has a too old cargo version as of now.
Comment 21 Andreas Stieger 2018-04-26 19:13:01 UTC
(In reply to Wolfgang Rosenauer from comment #20)
> Firefox 60esr actually requires rustc 1.24.0 and cargo 0.25.0 as a minimum

Maintainer, could you please bump cargo in TW?
Comment 22 Swamp Workflow Management 2018-04-26 19:40:06 UTC
This is an autogenerated message for OBS integration:
This bug (1030232) was mentioned in
https://build.opensuse.org/request/show/601679 42.3 / rust
Comment 23 Frank Krüger 2018-04-29 08:16:46 UTC
(In reply to Andreas Stieger from comment #21)
> (In reply to Wolfgang Rosenauer from comment #20)
> > Firefox 60esr actually requires rustc 1.24.0 and cargo 0.25.0 as a minimum
> 
> Maintainer, could you please bump cargo in TW?

What about Leap 15.0? Isn't it too late for updating cargo to version 0.25.0?
Comment 24 Andreas Stieger 2018-04-29 11:30:17 UTC
(In reply to Frank Kruger from comment #23)
> What about Leap 15.0? Isn't it too late for updating cargo to version 0.25.0?

No. It is even too early because there is package for cargo 0.25.0 yet.
Comment 25 Wolfgang Rosenauer 2018-05-01 10:10:51 UTC
Who can help to update cargo finally? Firefox 60 is to be released next week. I cannot build betas and therefore cannot prepare anything. Firefox 60 will be delayed for TW and therefore as well for Leap 15
Comment 26 Frank Krüger 2018-05-01 10:40:14 UTC
(In reply to Wolfgang Rosenauer from comment #25)
> Who can help to update cargo finally? Firefox 60 is to be released next
> week. I cannot build betas and therefore cannot prepare anything. Firefox 60
> will be delayed for TW and therefore as well for Leap 15

There seems to be an unofficial version 0.26 at least for TW: https://build.opensuse.org/package/show/home:luc14n0:branches:devel:languages:rust/cargo. Maybe he can help.
Comment 27 Swamp Workflow Management 2018-05-01 14:10:06 UTC
This is an autogenerated message for OBS integration:
This bug (1030232) was mentioned in
https://build.opensuse.org/request/show/602817 42.3 / cargo
Comment 28 Swamp Workflow Management 2018-05-04 22:08:51 UTC
openSUSE-RU-2018:1151-1: An update that has one recommended fix can now be installed.

Category: recommended (low)
Bug References: 1030232
CVE References: 
Sources used:
openSUSE Leap 42.3 (src):    cargo-0.25.0-2.6.1, rust-1.24.0-2.6.3
Comment 29 Andreas Stieger 2018-05-05 10:10:49 UTC
Released into 42.3, closing