Re: Exploded source tree

2017-06-15 Thread Neal Gompa
On Tue, Jun 6, 2017 at 4:47 AM, Michal Sekletar  wrote:
> On Tue, Jun 6, 2017 at 7:14 AM, Vít Ondruch  wrote:
>
>> So what would be your workflow here? You would start update of the
>> package by "fedpkg upload" to upload the new tarball and let dist-git to
>> explode it? And what would be next?
>
> My ideal workflow would be to use pagure (repo with exploded source)
> just like I use github/gitlab/bitbucket these days. Hence if I am
> owner I commit directly or perhaps I file pull-request against the
> package source. Then once commit is merged, package maintainer tells
> koji to build the package. Note that Koji *has* support to build
> directly from git repo referenced in your spec. We just don't use this
> feature in Fedora, because up until pagure came along there was no
> suitable code hosting/collaboration platform available to Fedora
> package maintainers.
>
>>
>> I thought that the exploded tree would be more passive, i.e. it would
>> mirror just the basic tarball, possibly each Koji build would result in
>> some release branch containing also the applied patches, but it seems
>> you want to use it more actively 
>
> Not only more actively, I would like to use it almost exclusively.
>
> In my opinion move into this direction would be hands down the best
> change for package maintainers in years. Also I personally think such
> possibility is also necessary if Fedora wants to attract new
> contributors in era of Github. Because let's be honest, plain dist-git
> (spec+patches) is just terrible experience compared to what people are
> used to upstream.
>

I'd really rather not see this become a thing. There are five big
reasons why I don't want this to become a thing with Fedora packages:

1. It encourages monkey patching and desynchronization from upstream.
Given our philosophy, I'd rather it be more explicit and obvious that
something is patched and altered, because the mere *burden* of
patching should encourage us to track upstreams in general and fix
things there. If you *are* the upstream, then you should not be making
downstream forks of your own project. That's just dumb and can create
all kinds of weird issues down the line. I have this problem with my
software packaged by Debian people and it's very aggravating. They do
fixes and don't bother to talk to me until they literally break
everything, and by that point I don't feel particularly charitable
anymore. They made their mess. I don't want us to become like that.

2. We actually have decent tooling for tracking more than one VCS repo
in parallel now. Tools like tito and rdopkg (which sadly isn't in
Fedora and doesn't support Python 3, boo!) can concurrently track and
enable better management of the code and packaging when they are in
separate repositories.

3. Pagure is already a huge disfavor for people who prefer non-Git
VCSes (I personally prefer Mercurial whenever I can use it, and I've
heard of people jumping onto VCSes like pijul, which has an
interesting and different model of source control that doesn't map to
Git at all).

4. I don't particularly want to have the same kind of terrible
squawking that goes on in Debian about "how to structure code +
packaging" for a package that often leads to nothing getting done for
months. The fact we use Git for packaging is irrelevant and immaterial
to upstreams, and they can use whatever they want. If we want the
"user experience" to look like an exploded tree (like what
"dpkg-source -x " does), we could make tooling to support
that, but I would not want us to go down the road of actually
maintaining that merged tree ourselves in Pagure.

5. It makes things worse when we have to scrub code. Debian has the
lovely option of fancifully ignoring software patents because they
make no money and there's no point suing them. We don't have that. Red
Hat essentially owns Fedora for all legal purposes and they inherit
the packages we have for Red Hat Enterprise Linux. That means we scrub
code *before* uploading (freetype, chromium/qtwebengine, gst plugins,
etc.). With the current model, this is easy to do and maintain. Merged
trees make this much harder.



-- 
真実はいつも一つ!/ Always, there's only one truth!
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-07 Thread Ken Dreyer
On Tue, Jun 6, 2017 at 6:25 AM, Miroslav Suchý  wrote:
> Dne 5.6.2017 v 18:59 Richard W.M. Jones napsal(a):
>> It would be nice if this was more automated.
>
> Tito [1] can do it.

Also a shout out to https://github.com/softwarefactory-project/rdopkg
. This tool can between a "upstream" repo, a downstream fork
("patches") repo, and a dist-git repo. We use this in the Ceph and
OpenStack projects to manage many downstream patches in dist-git.

- Ken
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-06 Thread Miroslav Suchý
Dne 5.6.2017 v 18:59 Richard W.M. Jones napsal(a):
> It would be nice if this was more automated.

Tito [1] can do it. You can create branch (or fork from upstream) change in 
.tito/tito.props tagger to ReleaseTagger
and builder to tito.builder.UpstreamBuilder which will change every commit 
since last tag to PatchX in spec or you can
use tito.distributionbuilder.DistributionBuilder which will merge all commits 
since last tag to one huge Patch1.
And there is KojiReleaser which can push the result directly into dist-git.

However Tito assume few things (like having spec file in git-root). It needs 
to. Otherwise the automation is hard.
Because otherwise every single project is using very unique work flow. And you 
cannot automate unique things.

[1] https://github.com/dgoodwin/tito/

-- 
Miroslav Suchy, RHCA
Red Hat, Senior Software Engineer, #brno, #devexp, #fedora-buildsys
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-06 Thread Richard W.M. Jones
On Tue, Jun 06, 2017 at 07:14:09AM +0200, Vít Ondruch wrote:
> So what would be your workflow here? You would start update of the
> package by "fedpkg upload" to upload the new tarball and let dist-git to
> explode it? And what would be next?

First off, I don't think that the tarball should be stored in git.
Debian does that (with pristine-tar etc) and it's very complex.

So let's concentrate on projects where upstream already uses git
and where their tarball URLs can be derived from git release tags.

We fork the upstream git project to pagure.  We push our downstream
patches on top.

The automation could then simply add Patch lines in the dist-git
spec file with a list of the patches and do a build.  I'm not sure how
that would be triggered - perhaps just by the act of pushing to
Pagure?

We'd also need branches in Pagure corresponding to branches of Fedora.

Getting the upstream tarball is trickier.  Assuming upstream have a
sensible naming scheme and stable location for tarballs, then
‘something something release tag something download the tarball’.

This is not a fully formed idea, but I think we should keep it simple,
unlike Debian's horribly complex
https://wiki.debian.org/PackagingWithGit

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-06 Thread Michal Sekletar
On Tue, Jun 6, 2017 at 7:14 AM, Vít Ondruch  wrote:

> So what would be your workflow here? You would start update of the
> package by "fedpkg upload" to upload the new tarball and let dist-git to
> explode it? And what would be next?

My ideal workflow would be to use pagure (repo with exploded source)
just like I use github/gitlab/bitbucket these days. Hence if I am
owner I commit directly or perhaps I file pull-request against the
package source. Then once commit is merged, package maintainer tells
koji to build the package. Note that Koji *has* support to build
directly from git repo referenced in your spec. We just don't use this
feature in Fedora, because up until pagure came along there was no
suitable code hosting/collaboration platform available to Fedora
package maintainers.

>
> I thought that the exploded tree would be more passive, i.e. it would
> mirror just the basic tarball, possibly each Koji build would result in
> some release branch containing also the applied patches, but it seems
> you want to use it more actively 

Not only more actively, I would like to use it almost exclusively.

In my opinion move into this direction would be hands down the best
change for package maintainers in years. Also I personally think such
possibility is also necessary if Fedora wants to attract new
contributors in era of Github. Because let's be honest, plain dist-git
(spec+patches) is just terrible experience compared to what people are
used to upstream.

Just my 0.02...

Michal
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-05 Thread Vít Ondruch


Dne 5.6.2017 v 18:59 Richard W.M. Jones napsal(a):
> On Mon, Jun 05, 2017 at 01:33:56PM +0200, Vít Ondruch wrote:
>>
>> Dne 4.6.2017 v 15:22 Richard W.M. Jones napsal(a):
>>> Will the second Pagure instance store exploded trees of the upstream
>>> software?  Will the dist-git RPM source + patches form be generated
>>> from that?
>>>
>>> Rich.
>>>
>> Hi Rich,
>>
>> Could you elaborate about your use case?
> For example:
>
>   https://pagure.io/fedora-ocaml/commits/fedora-27-4.04.1
>
> This is the exploded tree of OCaml which eventually gets built into
> the Fedora OCaml package.  It's upstream OCaml at some upstream
> release + some downstream patches (and patches from other forks in the
> case of this particular package).
>
> Currently I manually synchronize the Fedora dist-git package
> (ie. using ‘git format-patch’ to generate the patches, add them to
> dist-git, list the patches in the spec file, commit and rebuild).
>
> The Fedora package ends up looking like this:
>
>   http://pkgs.fedoraproject.org/cgit/rpms/ocaml.git/tree/ocaml.spec#n44
>
> It would be nice if this was more automated.
>
>> Just today, I discussed this with other people and approached Copr guys
>> (since they are currently formalizing the dist-git [1]) and discussed
>> the possibility of having this implemented in Copr (for the start), but
>> I was not able to convince them (because "you can expand the tarballs
>> and compare them" etc). So may be you have more convincing arguments for
>> this feature 
> The upstream tarball is still involved here, and the patches are still
> visible in the spec file and applied to the tarball, same as always.
>
> We essentially trust that the upstream tarball is identical (or close
> enough) to the upstream git release that the downstream patches will
> apply properly.  Which if upstream are doing it right shouldn't be a
> problem.
>
> Rich.
>

So what would be your workflow here? You would start update of the
package by "fedpkg upload" to upload the new tarball and let dist-git to
explode it? And what would be next?

I thought that the exploded tree would be more passive, i.e. it would
mirror just the basic tarball, possibly each Koji build would result in
some release branch containing also the applied patches, but it seems
you want to use it more actively 


Vít
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org


Re: Exploded source tree

2017-06-05 Thread Richard W.M. Jones
On Mon, Jun 05, 2017 at 01:33:56PM +0200, Vít Ondruch wrote:
> 
> 
> Dne 4.6.2017 v 15:22 Richard W.M. Jones napsal(a):
> >
> > Will the second Pagure instance store exploded trees of the upstream
> > software?  Will the dist-git RPM source + patches form be generated
> > from that?
> >
> > Rich.
> >
> 
> Hi Rich,
> 
> Could you elaborate about your use case?

For example:

  https://pagure.io/fedora-ocaml/commits/fedora-27-4.04.1

This is the exploded tree of OCaml which eventually gets built into
the Fedora OCaml package.  It's upstream OCaml at some upstream
release + some downstream patches (and patches from other forks in the
case of this particular package).

Currently I manually synchronize the Fedora dist-git package
(ie. using ‘git format-patch’ to generate the patches, add them to
dist-git, list the patches in the spec file, commit and rebuild).

The Fedora package ends up looking like this:

  http://pkgs.fedoraproject.org/cgit/rpms/ocaml.git/tree/ocaml.spec#n44

It would be nice if this was more automated.

> Just today, I discussed this with other people and approached Copr guys
> (since they are currently formalizing the dist-git [1]) and discussed
> the possibility of having this implemented in Copr (for the start), but
> I was not able to convince them (because "you can expand the tarballs
> and compare them" etc). So may be you have more convincing arguments for
> this feature 

The upstream tarball is still involved here, and the patches are still
visible in the spec file and applied to the tarball, same as always.

We essentially trust that the upstream tarball is identical (or close
enough) to the upstream git release that the downstream patches will
apply properly.  Which if upstream are doing it right shouldn't be a
problem.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org