F31 System-Wide Change proposal: BuildRequires Generators

2019-02-18 Thread Ben Cotton
https://fedoraproject.org/wiki/Changes/BuildRequires_Generators

= BuildRequires Generators =

== Summary ==
Add possibility to generate build-time dependencies within RPM spec
file and teach RPM and mock how to handle this.

== Owner ==
* Name: [[User:ignatenkobrain|Igor Gnatenko]], [[User:ffesti|Florian
Festi]], [[User:msuchy|Miroslav SuchĂ˝]]
* Email: ignatenkobr...@fedoraproject.org, ffe...@redhat.com, miros...@suchy.cz

== Detailed Description ==
For many languages (Rust, Golang, Node.Js, Ruby, Python),
BuildRequires can be automatically generated. All it takes, run some
special tool which will output dependencies in RPM format.

Q: How will it work under the hood?
A: When you build RPM, something like this will happen under the hood…
# rpm would perform %prep (which is supposed to abort if some
dependencies missing and print them)
# mock would install those dependencies and resume build

Q: Will src.rpm contain all generated dependencies?
A: This is not known yet, we'll update page once it is known.

Q: Does this mean that package builds won't be reproducible anymore?
A: No, as long as you have same buildroot and tool which is generating
BuildRequires is doing so in reproducible manner, it should not affect
reproducibility.

== Benefit to Fedora ==

Packagers won't have to pre-generate BuildRequires in the spec file
which means it will be always updated (and correct) :

* Packagers can focus of making their packages better instead of
spending all their packaging time copying BuildRequires from
documentation and third party tools.
* BuildRequires are dropped as soon as they're no longer necessary
* Packages can be easily bumped without requiring a manual BuildRequires refresh
* BuildRequires and Requires generation can use similar utilities,
making sure that the deps packages declare can also be used for
second-level building. Packages no longer need to declare the deps of
their second and n-th dependencies because someone forgot to declare
them in the correct package.

== Scope ==
* Proposal owners: Implement support for a feature in RPM and mock (if
implemented properly, Koji should just work). Make use of it in Rust
ecosystem.
* Other developers: Maintainers of language stacks are advised to use
this feature.
* Release engineering: [https://pagure.io/releng/issue/8129 #8129]
* Policies and guidelines: Packaging Guidelines need to be updated
with instructions how to use this feature.
* Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact ==
Packagers and users who use repoquery might be affected (src.rpm might
not contain generated dependencies).

== How To Test ==
TBD.

== User Experience ==
Users won't notice differences.

== Dependencies ==
Required feature needs to be implemented in RPM and mock.

== Contingency Plan ==
* Contingency mechanism: (What to do?  Who will do it?) Proposal
Owners might still ship feature disabled for Fedora buildsystem but
have it available for end-users, and move full completion to the next
release.
* Contingency deadline: Beta Freeze
* Blocks release? No.
* Blocks product? No.

== Documentation ==
TBD.

== Release Notes ==
TBD.

-- 
Ben Cotton
Fedora Program Manager
TZ=America/Indiana/Indianapolis
___
devel-announce mailing list -- devel-announce@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org


F31 System-Wide Change proposal: Automatic strict inter-package dependencies

2019-02-18 Thread Ben Cotton
https://fedoraproject.org/wiki/Changes/Automatic_strict_inter-package_dependencies

= Automatic strict inter-package dependencies =

== Summary ==
Implement feature in RPM which will enforce strict dependencies
between subpackages automatically (right now packagers have to do it
themselves).

== Owner ==
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
* Email: ignatenkobr...@fedoraproject.org

== Detailed Description ==
Let's take graphene as an example.

Spec file contains:

%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
%package tests
Requires: %{name}%{?_isa} = %{version}-%{release}


What we see when we build RPMs is:
* graphene-devel requires graphene(x86-64) =
1.8.2-3.fc30 AND libgraphene-1.0.so.0()(64bit) AND
pkgconfig(graphene-1.0)
* graphene-tests requires graphene(x86-64) =
1.8.2-3.fc30 AND libgraphene-1.0.so.0()(64bit)

What can we do?
* Requires: libgraphene-1.0.so.0()(64bit) is actually
provided by graphene (coming from same package), so it
can be dropped in favor of Requires: graphene(x86-64) =
1.8.2-3.fc30
* Requires: pkgconfig(graphene-1.0) is provided by
graphene-devel (coming from the same subpackage), so it
can be dropped entirely

== Benefit to Fedora ==
Package dependencies (between subpackages) will be more strict, more
automated 
([https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package
this section from guidelines] can be dropped entirely). Metadata size
will decrease as well.

== Scope ==
* Proposal owners: Implement required feature in RPM, backport it to Fedora.
* Other developers: Drop unneeded dependencies to keep spec file simpler.
* Release engineering: [https://pagure.io/releng/issue/8128 #8128]
* Policies and guidelines: Drop yet another Packaging Guidelines
section because it will be automated.
* Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact ==
Everything will keep working.

== How To Test ==
TBD.

== User Experience ==
User's won't see packaging errors (wrt. inter-package dependencies) anymore.

== Dependencies ==
RPM changes are needed. Will be handled by Proposal Owners.

== Contingency Plan ==
* Contingency mechanism: (What to do?  Who will do it?) Proposal
Owners will try to fix problems ASAP or move Change to the next
release (and revert changes).
* Contingency deadline: Beta Freeze.
* Blocks release? No.
* Blocks product? No.

== Documentation ==
TBD.



-- 
Ben Cotton
Fedora Program Manager
TZ=America/Indiana/Indianapolis
___
devel-announce mailing list -- devel-announce@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org


[HEADS UP] Bash 5.0

2019-02-18 Thread Igor Gnatenko
Bash 5.0 is now in Rawhide/F30. Enjoy :)

P.S. Don't hesitate to report bugs if you find one (or two).
___
devel-announce mailing list -- devel-announce@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org