From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id E474C138293 for ; Sun, 29 May 2016 01:06:34 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C76EA141D5; Sun, 29 May 2016 01:06:25 +0000 (UTC) Received: from resqmta-ch2-12v.sys.comcast.net (resqmta-ch2-12v.sys.comcast.net [69.252.207.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C1BEBE0883 for ; Sun, 29 May 2016 01:06:24 +0000 (UTC) Received: from resomta-ch2-10v.sys.comcast.net ([69.252.207.106]) by comcast with SMTP id 6pB7bKCMlgEHv6pBQbpvjK; Sun, 29 May 2016 01:06:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1464483984; bh=BV+A2kgdofk8DiXZ/pGKBB78X96GU3jchv5joqi3HhU=; h=Received:Received:Subject:To:From:Message-ID:Date:MIME-Version: Content-Type; b=ZHedyCDhZV8UB9NmMxqlvVDTBiC10+/vH1/BdvmjK2LIJLTQVWMjrhoXyGvcp6u22 kXEQ/m7UzRZseAvKPCZkk72qUcZvM12nlGfXuy7X1r91MMGPvxsrVqkRxo8wE7ArpR FT5CBnkhej9RwALlQx9KX8Pdvp6fs2r0PwcL52FAdgkARwyKgaIHdHcYs0ZkA3bKfA 9mA6AnqqhwrvEYVymx3FfJ1IQNSgdGuQ1Z6HwquJ9QXRT1u0uhRrh/w6dZsa/6nBZX Z5UkXw7sPN7/dvARC5A5uPQaRGQCs3jV+1S86zYhCiZ3BDExdyqnXYMs4Hy+oE5TtX Zv9oJEVkuX4ng== Received: from [192.168.1.13] ([76.106.83.43]) by resomta-ch2-10v.sys.comcast.net with comcast id 016N1t00R0w5D380116PQW; Sun, 29 May 2016 01:06:24 +0000 Subject: Re: [gentoo-dev] What are eblits? To: gentoo-dev@lists.gentoo.org References: From: Joshua Kinard Message-ID: <8fd95dec-43e0-99c0-beaa-8105218e039e@gentoo.org> Date: Sat, 28 May 2016 21:05:57 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.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 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------85661E76F915F59D53C105BF" X-Archives-Salt: 17c0e057-224e-48f6-a164-b159e8aa2d00 X-Archives-Hash: 62206b01778fdf58edbe9ec55388b0da This is a multi-part message in MIME format. --------------85661E76F915F59D53C105BF Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 05/26/2016 18:28, rindeal wrote: > I've noticed that ebuilds for at least dev-lang/perl and > sys-libs/glibc are using some concept of "eblits", which seems like > parts of ebuilds scattered across $FILESDIR with ebuilds containing > some logic (involving eval) which includes and runs them. > > I haven't found any documentation related to them so I'm asking here: > > 1) what are they? > 2) why are they used? I'm the other user of eblits in sys-kernel/mips-sources. There's a lot of common code in that package that doesn't need to be duplicated between multiple ebuilds, so years ago, I converted to using versioned eblits. It's a touch manual, in that I have to manually check that all consumers of a specific eblit version are removed from the tree before I remove the deprecated version, but it avoids the nasty problem of changing an eblit for a newer ebuild that breaks an older ebuild. I started on an "eblits.eclass" a few months ago, but sidetracked and didn't get back to it. Attached, if anyone wants to play with it. It includes the core eblit loading functions used in mips-sources, which might be more updated/robust than the ones in glibc (last I checked the logic, but vapier can clarify if true or not). The last comment block is incomplete. I sidetracked in finishing item #2 when pondering how to define a global "check" variable in the eclass itself to control when the eblit core functions were loaded and all eblits parsed (see latest mips-sources ebuild, $MIPS_SOURCES_EBLITS_LOADED). Also handles the case of when installing from binary packages and $FILESDIR isn't available. The eblit source for the pkg_* phases are packed onto the end of the bzip2 tarball so they're available to Portage & friends. The core eblit loading functions are the only duplicated code in the mips-sources ebuilds, as well as glibc and other eblit users (perl?). I don't remember what the argument for or against eblits might have been back in the day, but for ebuilds whose only real changes are datestamps and/or version numbers, eblits are a nice way to encapsulate and share common code that is too specific for a global eclass. Centralizing the eblit code will allow mips-sources and glibc ebuilds to shrink their overall filesize a little-bit more (~1.5KB per mips-sources ebuild, so 3.4KB per ebuild instead of the current 4.9KB). And yes, for anyone wondering, I have new mips-sources ebuilds. Just took a month to partially rewrite the SGI Origin/IP27 kernel code and then hunt down a hardware bug on my SGI Octane, so, been distracted... -- Joshua Kinard Gentoo/MIPS kumba@gentoo.org 6144R/F5C6C943 2015-04-27 177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943 "The past tempts us, the present confuses us, the future frightens us. And our lives slip away, moment by moment, lost in that vast, terrible in-between." --Emperor Turhan, Centauri Republic --------------85661E76F915F59D53C105BF Content-Type: text/plain; charset=UTF-8; name="eblit.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="eblit.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDE2IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRJZCQKCiMgRGVzY3JpcHRpb246IGVibGl0LmVjbGFzcyBjb250YWlucyB0aGUgY29yZSBm dW5jdGlvbnMgZm9yIGNyZWF0aW5nICJlYmxpdHMiLgojICAgICAgICAgICAgICBlYmxpdHMg YXJlIGEgcGxhY2UgdG8gc3RvcmUgY29tbW9uIGNvZGUgc2hhcmVkIGFtb25nIG11bHRpcGxl CiMgICAgICAgICAgICAgIGVidWlsZHMgZm9yIGEgc3BlY2lmaWMgcGFja2FnZS4KIwojIE9y aWdpbmFsIEVibGl0IEF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3Jn PgojIE9yaWdpbmFsIEVjbGFzcyBBdXRob3I6IEpvc2h1YSBLaW5hcmQgPGt1bWJhQGdlbnRv by5vcmc+CiMgTWFpbnRhaW5lcjogYmFzZS1zeXN0ZW1AZ2VudG9vLm9yZwoKIyBJbXBsZW1l bnRhdGlvbiBOb3RlOiBTaW5jZSBjb2RlIGluIGFuIGVibGl0IGlzIHVzZWQgYnkgbXVsdGlw bGUgZWJ1aWxkcywKIyBQTEVBU0UgcmV2YnVtcCB0aGUgZWJsaXQgZmlsZXMgd2hlbiBjaGFu Z2VzIGFyZSBtYWRlLiAgVGhlbiB1cGRhdGUgZWFjaAojIGVidWlsZCB0byB1c2UgdGhlIG5l dyBlYmxpdCB2ZXJzaW9uLiAgUmVtb3ZlIG9sZCBlYmxpdCB2ZXJzaW9ucyB3aGVuIHRoZXJl CiMgYXJlIG5vIG1vcmUgY29uc3VtZXJzLiAgVGhpcyBtYWtlcyBpdCBhIGxvdCBlYXNpZXIg dG8gZGVidWcgcHJvYmxlbXMgd2l0aAojIHRoZSBzaGFyZWQgY29kZSB3aXRoaW4gYW4gZWJs aXQsIGFzIHdlbGwgYXMgdGhlIGFmZmVjdGVkIGVidWlsZHMuCgojIFRvIGNyZWF0ZSBhbiBl YmxpdDoKIyAgMS4gQ3JlYXRlIGFuICJlYmxpdHMiIHN1YmRpcmVjdG9yeSB1bmRlciAke0ZJ TEVTRElSfSwgaWYgb25lIGRvZXMgbm90CiMgICAgIGFscmVhZHkgZXhpc3QuCiMgIDIuIENy ZWF0ZSBhIG5ldyBmaWxlIG5hbWUgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgojICAg ICBbYS16MC05X10tdlswLTldKy5lYmxpdAojICAzLiBBZGQgdGhlIHNoYXJlZCBjb2RlLCBz YXZlLCBhbmQgY2xvc2UgdGhlIGZpbGUuCiMKIyBUcnkgdG8ga2VlcCBlYmxpdHMgc3BlY2lm aWMgdG8gdGhlIGZ1bmN0aW9ucyB0aGV5IGltcGxlbWVudC4gIEUuZy4sIGlmIGEKIyBudW1i ZXIgb2YgZWJ1aWxkcyBoYXZlIGEgbGFyZ2UsIGJ1dCBjb21tb24gc3JjX3VucGFjaygpIGZ1 bmN0aW9uLCBhbmQgaXQKIyBpcyBub3QgYWxyZWFkeSBwcm92aWRlZCBieSBhbiBlY2xhc3Ms IHRoZW4gYWRkIHRoYXQgY29kZSB0byBhbiBlYmxpdCBuYW1lZAojICJzcmNfdW5wYWNrLXZY LmVibGl0Ii4KCiMgVG8gbG9hZCBhbmQgdXNlIGVibGl0czoKIyAgMS4gSW5oZXJpdCB0aGUg ImVibGl0IiBlY2xhc3MgKHRoaXMgY2xhc3MpLgojICAyLiBEZWZpbmUgYSBuZXcgZnVuY3Rp b24gY2FsbGVkICJsb2FkX2VibGl0X2Z1bmNzIiBpbiB0aGUgZWJ1aWxkIGltbWVkaWF0ZWx5 CiMgICAgIGFmdGVyIHRoZSBnbG9iYWwgZWJ1aWxkIHZhcmlhYmxlcwoKCiMgZWJsaXQtY29y ZQojIFVzYWdlOiA8ZnVuY3Rpb24+IFt2ZXJzaW9uXQojIE1haW4gZWJsaXQgZW5naW5lCmVi bGl0LWNvcmUoKSB7Cglsb2NhbCBlIHYgZnVuYz0kMSB2ZXI9JDIKCWZvciB2IGluICR7dmVy OistfSR7dmVyfSAtJHtQVlJ9IC0ke1BWfSAiIiA7IGRvCgkJZT0iJHtGSUxFU0RJUn0vZWJs aXRzLyR7ZnVuY30ke3Z9LmVibGl0IgoJCWlmIFtbIC1lICR7ZX0gXV0gOyB0aGVuCgkJCS4g IiR7ZX0iCgkJCVtbICR7ZnVuY30gPT0gcGtnXyogXV0gJiYgZXZhbCAiJHtmdW5jfSgpIHsg ZWJsaXQtcnVuICR7ZnVuY30gJHt2ZXJ9IDsgfSIKCQkJcmV0dXJuIDAKCQlmaQoJZG9uZQoJ cmV0dXJuIDEKfQoKIyBlYmxpdC1pbmNsdWRlCiMgVXNhZ2U6IFstLXNraXBdIDxmdW5jdGlv bj4gW3ZlcnNpb25dCiMgSW5jbHVkZXMgYW4gImVibGl0IiAtLSBhIGNodW5rIG9mIGNvbW1v biBjb2RlIGFtb25nIGVidWlsZHMgaW4gYSBnaXZlbgojIHBhY2thZ2Ugc28gdGhhdCBpdHMg ZnVuY3Rpb25zIGNhbiBiZSBzb3VyY2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlCiMgZWJ1 aWxkLgplYmxpdC1pbmNsdWRlKCkgewoJbG9jYWwgc2tpcGFibGU9ZmFsc2Ugcj0wCglbWyAk MSA9PSAiLS1za2lwIiBdXSAmJiBza2lwYWJsZT10cnVlICYmIHNoaWZ0CglbWyAkMSA9PSBw a2dfKiBdXSAmJiBza2lwYWJsZT10cnVlCgoJW1sgLXogJDEgXV0gJiYgZGllICJVc2FnZTog ZWJsaXQtaW5jbHVkZSA8ZnVuY3Rpb24+IFt2ZXJzaW9uXSIKCWVibGl0LWNvcmUgJDEgJDIK CXI9IiQ/IgoJJHtza2lwYWJsZX0gJiYgcmV0dXJuIDAKCVtbICIkciIgLWd0ICIwIiBdXSAm JiBkaWUgIkNvdWxkIG5vdCBsb2NhdGUgcmVxdWVzdGVkIGVibGl0ICckMScgaW4gJHtGSUxF U0RJUn0vZWJsaXRzLyIKfQoKIyBlYmxpdC1ydW4tbWF5YmUKIyBVc2FnZTogPGZ1bmN0aW9u PgojIFJ1bnMgYSBmdW5jdGlvbiBpZiBpdCBpcyBkZWZpbmVkIGluIGFuIGVibGl0CmVibGl0 LXJ1bi1tYXliZSgpIHsKCVtbICQodHlwZSAtdCAiJEAiKSA9PSAiZnVuY3Rpb24iIF1dICYm ICIkQCIKfQoKIyBlYmxpdC1ydW4KIyBVc2FnZTogPGZ1bmN0aW9uPiBbdmVyc2lvbl0KIyBS dW5zIGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhbiBlYmxpdAplYmxpdC1ydW4oKSB7CgllYmxp dC1pbmNsdWRlIC0tc2tpcCBjb21tb24gIiR7KjoyfSIKCWVibGl0LWluY2x1ZGUgIiRAIgoJ ZWJsaXQtcnVuLW1heWJlIGVibGl0LSQxLXByZQoJZWJsaXQtJHtQTn0tJDEKCWVibGl0LXJ1 bi1tYXliZSBlYmxpdC0kMS1wb3N0Cn0KCiMgZWJsaXQtcGtnCiMgVXNhZ2U6IDxwaGFzZT4g W3ZlcnNpb25dCiMgUnVucyB0aGUgcGtnXyogZnVuY3Rpb25zIEFORCBldmFscyB0aGVtIHNv IHRoZXkncmUgaW5jbHVkZWQgaW4gdGhlIGJpbnBrZ3MKZWJsaXQtcGtnKCkgewoJW1sgLXog JDEgXV0gJiYgZGllICJVc2FnZTogZWJsaXQtcGtnIDxwaGFzZT4gW3ZlcnNpb25dIgoJZWJs aXQtY29yZSBwa2dfJDEgJDIKfQoK --------------85661E76F915F59D53C105BF--