Bug 1636184

Summary: Default module streams appeared post-Beta for Fedora 29, this seems reckless
Product: [Fedora] Fedora Reporter: Tomas Toth <ttomasz>
Component: distributionAssignee: Josh Boyer <jwboyer>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 29CC: awilliam, dmach, fzatlouk, igor.raits, jmracek, kevin, mblaha, mboddu, mhatina, packaging-team-maint, robatino, rpm-software-management, sgallagh, vmukhame
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-10-09 00:06:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1517013, 1517014    
Attachments:
Description Flags
Tar-GZiped Output of dnf update --debugsolver none

Description Tomas Toth 2018-10-04 16:31:31 UTC
Description of problem:
dnf update erroneously enables module stream for libgit2, see below.

# dnf update
Last metadata expiration check: 0:01:32 ago on Thu 04 Oct 2018 05:40:12 PM CEST.
Dependencies resolved.

 Problem 1: cannot install the best update candidate for package libnghttp2-1.33.0-1.fc29.x86_64
  - package libnghttp2-1.33.0-1.module_2177+2526c218.x86_64 is excluded
 Problem 2: cannot install the best update candidate for package libuv-1:1.23.0-1.fc29.x86_64
  - package libuv-1:1.23.0-1.module_2177+2526c218.x86_64 is excluded
 Problem 3: cannot install the best update candidate for package nodejs-1:10.11.0-1.fc29.x86_64
  - package nodejs-1:10.11.0-1.module_2200+adbac02b.x86_64 is excluded
 Problem 4: cannot install the best update candidate for package npm-1:6.4.1-1.10.11.0.1.fc29.x86_64
  - package npm-1:6.4.1-1.10.11.0.1.module_2200+adbac02b.x86_64 is excluded
 Problem 5: cannot install the best update candidate for package perl-HTTP-Tiny-0.076-1.fc29.noarch
  - package perl-HTTP-Tiny-0.076-1.module_2073+eebc5b71.noarch is excluded
================================================================================
 Package    Arch      Version                           Repository         Size
================================================================================
Upgrading:
 libgit2    x86_64    0.27.4-1.module_2222+9bfbc8d7     fedora-modular    412 k
Enabling module streams:
 libgit2              0.27

Transaction Summary
================================================================================
Upgrade  1 Package

Total download size: 412 k
Is this ok [y/N]:


I did not use any modules/streams on F28. Also checked that none is used in F29.
# dnf list installed |& grep -i modular
<none>


# dnf list installed |& grep -i libgit2
libgit2.x86_64    0.27.4-1.fc29    @fedora


# dnf check-update
Last metadata expiration check: 0:32:32 ago on Thu 04 Oct 2018 05:40:12 PM CEST.

libgit2.x86_64    0.27.4-1.module_2222+9bfbc8d7    fedora-modular
libgit2.x86_64    0.27.4-1.module_2222+9bfbc8d7    updates-testing-modular


Note, that the Installed version is the same as the version offered from the module stream as an update.

I am going to attach the debugdata output of dnf update --debugsolver.


Version-Release number of selected component (if applicable):
dnf.noarch                 3.6.1-1.fc29      @updates-testing
dnf-data.noarch            3.6.1-1.fc29      @updates-testing
dnf-plugins-core.noarch    3.0.4-1.fc29      @updates-testing

libsolv.x86_64             0.6.35-3.fc29     @updates-testing

rpm.x86_64                 4.14.2-1.fc29     @fedora
rpm-libs.x86_64            4.14.2-1.fc29     @fedora


How reproducible:
Always.


Steps to Reproduce:
1. dnf update


Actual results:
Enabling module streams:  libgit2  0.27

Expected results:
The installed version is kept untouched (unless there is an actual update).
No stream gets enabled without the user's explicit request.


Additional info:
This is an F29 VM upgraded from F28 using
# dnf -y system-upgrade download --releasever=29 --refresh --enablerepo=updates-testing && dnf -y system-upgrade reboot

Similar bugs, but they appear to describe just the false messages at the beginning of dnf update,
not the functional problem described here.
https://bugzilla.redhat.com/show_bug.cgi?id=1629551
https://bugzilla.redhat.com/show_bug.cgi?id=1635910

Comment 1 Tomas Toth 2018-10-04 16:33:56 UTC
Created attachment 1490675 [details]
Tar-GZiped Output of dnf update --debugsolver

Comment 2 Tomas Toth 2018-10-05 07:17:57 UTC
Proposing as Blocker/FreezeException based on the following criteria:
"The installed system must be able appropriately to install, remove, and update software with the default console tool for the relevant software type."
I assume, that Enabling module stream during an update, without the user's explicit request, violates the 'must be able to *appropriately* update'.

Comment 3 Igor Raits 2018-10-05 11:19:11 UTC
This is entirely fine, because it is default stream. So end behaves as expected.

Comment 4 Jaroslav Mracek 2018-10-05 12:37:29 UTC
I agree with Igor. It work like expected.

Comment 5 Petr Šabata 2018-10-05 14:36:27 UTC
It is technically fine but I'm not sure we should be adding new defaults to stable releases.  It's not forbidden currently but it's confused a number of people.

Comment 6 Adam Williamson 2018-10-05 16:14:29 UTC
Yeah, I am not comfortable with introducing this default stream feature suddenly in post-Beta Fedora 29, if that's what happened. I was working on the assumption we would only get default module streams in F30+.

This seems against at least the spirit of the Changes policy. That states that by the '100% code complete deadline' - which came before Beta - "New accepted changes must be code complete, meaning all the code required to enable to the new change is finished." This may technically have complied with that in that the *dnf-side code necessary for default module streams to exist* was "finished", I guess, but that seems like a tricksy way of looking at things. The clear intent of the requirement is that we get to test all the elements of the Change in the Beta, and since no default module streams (AFAIK) existed for F29 at Beta time, that was not the case.

Comment 7 Igor Raits 2018-10-07 06:41:40 UTC
Just to clarify from my side (libgit2 maintainer): making module default didn't change libgit2/pygit2 versions, it was just about changing from traditional to modular. So ABI/API is fully compatible.

Comment 8 Adam Williamson 2018-10-07 16:31:12 UTC
For me it's not the contents that are of concern, but the mechanism itself and the policies / expectations around it.

Comment 9 František Zatloukal 2018-10-08 16:46:43 UTC
Discussed during the 2018-10-08 blocker review meeting: [1]

The decision to punt (postpone decision) was made:

"Punt to FESCo - this doesn't really violate the release criteria, but we are concerned about it as it relates to the Change process, so we will file a ticket asking FESCo to consider it"

[1] https://meetbot-raw.fedoraproject.org/fedora-blocker-review/2018-10-08/f29-blocker-review.2018-10-08-16.00.log.txt

Comment 10 Stephen Gallagher 2018-10-08 17:04:12 UTC
Just to make it clear, the libgit2 maintainer ignored the following requirement written on the module packaging guidelines page: "Setting or changing the default stream or the default installation profile requires a Fedora Change request, and it is only allowed in between Fedora releases."[1]

We do have a policy around this which this change violates. It looks like it was merged by Mohan without proper review of the policy, so we need to figure out why that communication broke down. I'll look into that.

I'm not sure how we want to proceed in this specific case, but based on other conversations I've had with Igor, I am not convinced this stream should be the default for libgit2 anyway.

[1] https://docs.fedoraproject.org/en-US/modularity/making-modules/managing-defaults/

Comment 11 Stephen Gallagher 2018-10-08 17:51:12 UTC
I've submitted a PR[1] to remove this as a default stream. It needs to go through the Change process for Fedora 30.

I'm requesting a Freeze Exception on this BZ to allow Igor to pull in a non-modular RPM of the same version as was previously in the default module stream so we don't regress anything.

[1] https://pagure.io/releng/fedora-module-defaults/pull-request/33

Comment 12 Fedora Update System 2018-10-08 18:19:16 UTC
libgit2-0.27.5-1.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2018-abfd4c6ac3

Comment 13 Stephen Gallagher 2018-10-08 18:35:50 UTC
https://pagure.io/releng/fedora-module-defaults/pull-request/33 has also been merged, so after tonight's compose, there will no longer be a default module stream for libgit2.

Comment 14 Fedora Update System 2018-10-08 20:53:36 UTC
libgit2-0.27.5-1.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-abfd4c6ac3

Comment 15 Fedora Update System 2018-10-09 00:06:51 UTC
libgit2-0.27.5-1.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.