From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4C83E1382C5 for ; Wed, 24 Feb 2021 10:29:59 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C7CF3E0857; Wed, 24 Feb 2021 10:29:54 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 55F39E0729 for ; Wed, 24 Feb 2021 10:29:54 +0000 (UTC) Subject: Re: [gentoo-dev] New project: binhost From: Zac Medico To: gentoo-dev@lists.gentoo.org, =?UTF-8?B?TWljaGHFgiBHw7Nybnk=?= , =?UTF-8?Q?Andreas_K=2e_H=c3=bcttel?= , Sam James Cc: binhost@gentoo.org References: <24819743.1r3eYUQgxm@farino> <20210210195128.192bbb13@abudhabi.paradoxon.rec> <3e4793a0-864d-9253-2309-55e969b8f290@gentoo.org> <860da025-1bde-8507-159c-1c94b96ab0ec@gentoo.org> <2bf5402f-41d1-34cd-ddf8-beb42efe472f@gentoo.org> <06162931-355c-1253-98fe-5e89ccd5619f@gentoo.org> <10f112f5-a287-cd57-d207-3be43d5109c8@gentoo.org> Autocrypt: addr=zmedico@gentoo.org; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Wed, 24 Feb 2021 02:29:50 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 In-Reply-To: <10f112f5-a287-cd57-d207-3be43d5109c8@gentoo.org> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="la4QK0CcePyCc0dCEckxOJ465z4ibDYtr" X-Archives-Salt: 2b415e84-5c0d-4842-8218-411d43d1208f X-Archives-Hash: f648bd29b10a32333fd0e32d904ef2d1 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --la4QK0CcePyCc0dCEckxOJ465z4ibDYtr Content-Type: multipart/mixed; boundary="ueLLNVcSc6lNfYkG9A0dWSESEzWjXQKVD" --ueLLNVcSc6lNfYkG9A0dWSESEzWjXQKVD Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 2/23/21 12:33 PM, Zac Medico wrote: > On 2/23/21 12:05 PM, Zac Medico wrote: >> On 2/23/21 11:46 AM, Zac Medico wrote: >>> On 2/20/21 8:17 PM, Zac Medico wrote: >>>> IUSE_RUNTIME will obviously introduce conditionals in binary package= >>>> dependencies, but we should welcome these conditionals because they = will >>>> provide useful flexibility. >>>> >>>> I think IUSE_RUNTIME will be a very nice feature to have for project= >>>> binhost, since it will allow binary package dependencies to behave w= ith >>>> flexibility that more closely resembles the flexibility of ebuild >>>> dependencies. >>> >>> We can borrow paludis's notion of pbins [1] to generate ebuilds which= >>> install pre-built content, and the generated ebuilds could have USE >>> flags that behave similarly to IUSE_RUNTIME in the sense that changes= to >>> USE flags will result in different builds of pre-built content being >>> installed. A content-hash distfiles layout [2] could serve as a >>> convenient way to store separate builds of pre-built content for >>> multiple combinations of USE flags, and a generated ebuild would inde= x >>> the build by USE flag combination. >>> >>> Also, for the generated ebuilds, we can generate USE flags to include= >>> separate SRC_URI downloads for pre-built content to support things li= ke >>> FEATURES=3Dsplit-debug and FEATURES=3Dinstall-sources. >> >> Note that all of this can use existing EAPI features, since everything= new >> would be implemented in an ebuild generator that generates a single >> ebuild to index pre-built content from multiple binary package builds.= >> >>> [1] https://paludis.exherbo.org/overview/pbins.html >>> [2] https://bugs.gentoo.org/756778 >> >=20 > For generated ebuilds, we'll have a choice to model things as USE flags= > or sub-packages. For example, content from FEATURES=3Dsplit-debug and > FEATURES=3Dinstall-sources content might make more sense to model as > sub-packages than USE flags. It makes more sense to generate a > sub-package when there is a need for the sub-package to have USE flags.= > For example, a split-debug sub-package can have USE flags which index > pre-built content from builds for multiple USE flag combinations. > Similar USE flags could be useful for an install-sources sub-package if= > the source code has patches which are conditional on USE flags. Since the generated ebuilds are inspired by pbins, we might call them "ebins". Once we have designed an ebin generation process that we're happy with, we should consider making it part of an EAPI, so that package managers can generate "ebins" on request. The EAPI should include ways to split out files and distribute them separately based on USE flags and/or sub-packages, so that binhost users can easily filter which files are installed based on USE configuration. We can automatically map user's splitdebug and installsources FEATURES settings into USE settings, in the same way that FEATURES=3Dtest automatically maps to USE=3Dtest. Each generated ebuild (ebin) will use its SRC_URI metadata to index builds for each USE flag combination for which a build exists. For example, for 3 USE flags, up to 8 combinations will be indexed: IUSE=3D"a b c installsources splitdebug" SRC_URI=3D" !a? !b? !c? ( mirror://binhost/24fe6bd377 ) !a? !b? c? ( mirror://binhost/fbe14cbb02 ) !a? b? !c? ( mirror://binhost/1dfff1f2ac ) !a? b? c? ( mirror://binhost/ae60f2940d ) a? !b? !c? ( mirror://binhost/2976e1acc0 ) a? !b? c? ( mirror://binhost/f4809db70c ) a? b? !c? ( mirror://binhost/ecd08466cf ) a? b? c? ( mirror://binhost/0c00f33b2e ) installsources? ( !a? !b? !c? ( mirror://binhost/063a14d6c7 ) !a? !b? c? ( mirror://binhost/f67c311625 ) !a? b? !c? ( mirror://binhost/1dfff1f2ac ) !a? b? c? ( mirror://binhost/17a673e16a ) a? !b? !c? ( mirror://binhost/914d1cecfe ) a? !b? c? ( mirror://binhost/ca18d86a2b ) a? b? !c? ( mirror://binhost/6bce13471a ) a? b? c? ( mirror://binhost/3a6bdcd228 ) ) splitdebug? ( !a? !b? !c? ( mirror://binhost/29b2f38c41 ) !a? !b? c? ( mirror://binhost/8adc9bef51 ) !a? b? !c? ( mirror://binhost/954d2ce484 ) !a? b? c? ( mirror://binhost/32a614aaca ) a? !b? !c? ( mirror://binhost/3548a2302d ) a? !b? c? ( mirror://binhost/e0c02cdc88 ) a? b? !c? ( mirror://binhost/f9cbd3c181 ) a? b? c? ( mirror://binhost/31d4c03474 ) ) " For installsources, we can automate deduplication, so that we can distribute the same file content for multiple USE combinations when appropriate. If all of the combinations have identical content, then it will look like this: installsources? ( !a? !b? !c? ( mirror://binhost/063a14d6c7 ) !a? !b? c? ( mirror://binhost/063a14d6c7 ) !a? b? !c? ( mirror://binhost/063a14d6c7 ) !a? b? c? ( mirror://binhost/063a14d6c7 ) a? !b? !c? ( mirror://binhost/063a14d6c7 ) a? !b? c? ( mirror://binhost/063a14d6c7 ) a? b? !c? ( mirror://binhost/063a14d6c7 ) a? b? c? ( mirror://binhost/063a14d6c7 ) ) In order to ensure that an ebin is not selected for a USE combination that has not been built yet, combinations for existing builds will be listed in REQUIRED_USE, like this: REQUIRED_USE=3D" || ( ( !a !b !c ) ( !a !b c ) ( !a b !c ) ( !a b c ) ( a !b !c ) ( a !b c ) ( a b !c ) ( a b c ) ) " --=20 Thanks, Zac --ueLLNVcSc6lNfYkG9A0dWSESEzWjXQKVD-- --la4QK0CcePyCc0dCEckxOJ465z4ibDYtr Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQKTBAEBCgB9FiEE8OgXaltWzqgSupCu0HX7jBBKPSAFAmA2Kp5fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEYw RTgxNzZBNUI1NkNFQTgxMkJBOTBBRUQwNzVGQjhDMTA0QTNEMjAACgkQ0HX7jBBK PSBZSg//bbM8oQdsqo/FqLiNQnK9+3KwtUIa5w/xhUnyCNN8mpQSmjYDeZAEi2Z7 AAG35uc0WEHXCEcVSfji8QsF3CjFWQR16BAOI2S1puh9uunQpLbC2rPzUEIDDrw6 YJ63eqlTIcbaYFvd6dHkJDg9gvBjwdy/y7v/w9AY+wKs8dpKtKsQ+UsoMTn/xyym ozpYllJWK5uWJXuMrnq2Nmc7GOvn0alFADMjuQNxaoYnbTD85zKYkuk2SfaCQqI0 2ILJ1n2tUy+fQsC6tNOFnNKJ5kny4PsrAw4fG9uHpPLn5lyH/3RB9Q8mPUVASNZ8 EDBofAgd0fDjzT+vGs31E0fbfE10MEtjWBgS1xjQNh2oJQhzkSkiZglmD7S/ID4/ CPuP17C/wOfFm42OSSPXyojIcETe/CBt1XgnRiprufz0exvAeK2Y9y2rJ4wVcT+1 SBYHdXbaHXGzMW5ZqGnWLeutyKYDqfe9nJ7zUvcbHseRMqN/QOA+0/sQtd9QIogx VHDtr6LcfagVCIILm/QdbbfOuSxuoGhFCrIHZsNMsnT3mtK79Og4HPjocLyN6Ta8 MG0wqCXQlyeY8I8klg0m8wi9kagA44iBHpoUZsLdYLFahuEYsYrUSZjAetkU1GPM jlnXUjYsQdqt8J1TZaCM0dAr+SAPydVQ9bSl7sw0Hqg6zLSZ/Cg= =u2dd -----END PGP SIGNATURE----- --la4QK0CcePyCc0dCEckxOJ465z4ibDYtr--