From owner-freebsd-ports@freebsd.org Thu Apr 20 19:57:11 2017 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A517D47741 for ; Thu, 20 Apr 2017 19:57:11 +0000 (UTC) (envelope-from lists@opsec.eu) Received: from home.opsec.eu (home.opsec.eu [IPv6:2001:14f8:200::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 34A9E2AA for ; Thu, 20 Apr 2017 19:57:11 +0000 (UTC) (envelope-from lists@opsec.eu) Received: from pi by home.opsec.eu with local (Exim 4.87 (FreeBSD)) (envelope-from ) id 1d1ICW-000N1p-UT for freebsd-ports@freebsd.org; Thu, 20 Apr 2017 21:57:12 +0200 Date: Thu, 20 Apr 2017 21:57:12 +0200 From: Kurt Jaeger To: freebsd-ports@freebsd.org Subject: Re: Is pkg quarterly really needed? Message-ID: <20170420195712.GK74780@home.opsec.eu> References: <58F61A8D.1030309@a1poweruser.com> <29e44642-e301-f07c-afe3-bad735d8ee5e@freebsd.org> <20170420053722.GD31559@lonesome.com> <20170420084452.GH74780@home.opsec.eu> <99a57878-ae39-d2a4-fe35-023dae8b320b@gjunka.com> <20170420171119.GJ74780@home.opsec.eu> <127a5f89-93ba-aee4-14d3-41e2f2d71892@gjunka.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <127a5f89-93ba-aee4-14d3-41e2f2d71892@gjunka.com> X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 19:57:11 -0000 Hi! > I understand that the main problem with quarterly branches is that they > start from an unstable edge and mature with time, then after three > months at the most mature point they are being deleted and replaced with > a new unstable edge. So, there is no good point of reference to use as a > source of packages. First, let me say that for my use cases, the pkg tree is in consistent state most of the time. We have a set of approx. 2500 pkg's build etc, so roughly 10% of the full repo. We update the ports tree and build the repo every week, just to see if all is fine, and we update and build, if we need a package we do not yet have in our repo. For the thrills, look at our repo at https://repo.nepustil.net Hmm, let's try this thought experiment. For each package, keep the whole repo when it was last build sucessfully (Note: we're not yet discussing whether it runs!) Worst case: We have n ports and n repos. The question is: what would be the average case ? Would that be a sustainable model ? Now, the next question: Even if we have all the repos, would we find *one* repo where *two* packagew we'd like to have are in a consistent (build-!)state ? What about the 250+ that are normally needed for a small server ? Or the 1200+ for a multi-role server (some will say: "nah, don't do it, use container/jails/ whatever virtualisiation"). > What I described is taking the good points (maturing the code through > progressing version upgrades from CURRENT, through STABLE to RELEASE) Now, if we have ports-HEAD, and changes to that (especially fixes and features to the ports infrastructure), it's getting more and more difficult to backport fixes from ports-HEAD to the ports-STABLE versions, because those do not contain dependencies and infrastructure changes. If we backport those, we have to roll forward some other changes. This gets out of hand very quickly. Do we need frequent infrastructure changes ? Yes, because right now we would not be able to build the tree, if we did not change some knobs to cope with the newest craziness that upstreams throw at us. We repeatedly needed relevant infrastructure changes just to keep up with that outside world. I'm still speechless that tz@ got php71 into the tree without so few defects. Or the parallel mysql-variants. We still fail to provide a working maven-mechanism. Or go-dependencies. Think of it, go apps more and more bring their own dependencies, because that is somehow unsolved in the go world. Some folks worked wonders with the multi-arch and cross-build things. I can build ARM pkg repos on my amd64, that is unheard of in most parts of the IT universe 8-} We are almost tracking firefox, even after they added a new language (rust) to their infrastructure. So: If we take the sum of the brain time our maintainers and committers deliver to keep HEAD in a moving (different from a stagnating) state, and try to estimate how much *more* time would be needed to keep additional trees in working conditions, only updating what is needed, under the assumption that infrastructure changes *need* to happen ? What would that additional brain time be ? My inituition tells me that it would probably break the model. Now, if someone wants to *experiment* with that, we already have quite a few people doing that: By setting up our own repo boxes, where we build the trees to our liking. The FreeBSD svn commits are public. So, if someone wants to use it, and select and pick to provide a stable repo, we would all welcome the effort. If it's a sustained effort over some time, clusteradm etc would probably add that repo to the infrastructure. We can even call it the 'caveat'-repo. It's just that asking the team that's barely keeping up to do that *on top*, that will probably not work. [...] > From that short description it should be more or less > obvious if that approach is better/doable when opposed to quarterly > branches? There's a way to find out: Try it. -- pi@opsec.eu +49 171 3101372 3 years to go !