[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    Re: [gentoo-dev] [RFC] git.eclass, git-2.eclass... git-r1.eclass?
From:       "Rick \"Zero_Chaos\" Farina" <zerochaos () gentoo ! org>
Date:       2013-08-31 5:37:22
Message-ID: 52218112.2000606 () gentoo ! org
[Download RAW message or body]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> The new eclass is supposedly used by 732 in-tree packages [1],
> and possibly a few dozens out-of-the-tree. Some parts of the eclass API
> are barely used. I would really prefer to avoid yet another eclass
> migration.

that's a shame, I don't think it is avoidable with the changes you are
suggesting

> However, I would like to do a few breaking changes to simplify
> the eclass and its maintenance:
> 
> 1. Make EGIT_SOURCEDIR default to ${WORKDIR}/${P} rather than ${S}
>    (to support setting S to subdirectory of git repo),
> 
> 2. Kill EGIT_HAS_SUBMODULES and autodetect submodules,
> 
> 3. Kill EGIT_OPTIONS since it limits the possibility of changing eclass
>    code,
> 
> 4. Kill EGIT_MASTER (it's more trouble than benefit),
> 
> 5. Possibly kill EGIT_PROJECT -- it won't be good enough anymore,
> 
> 6. Kill EGIT_NONBARE and support bare checkouts only. Supporting two
>    different layouts introduces a lot redundant code.
> 
> 7. Kill EGIT_NOUNPACK -- possibly replace it with proper fetching
>    function, or just src_fetch(),
> 
> 8. Kill EGIT_DIR -- it supposedly should not even be overriden.
> 
These changes will cause significant breakage.  That is fine for
migration, but not for in place eclass changes.
> 
> But it's not all removing. There are also a few things I would like to
> change/add:
> 
> 1. Replace 'git clone' with 'git init' + 'git fetch' that would be
>    a bit simpler,
> 
> 2. Add complete & working support for shallow clones, and make it the
>    default. This means a lot of space-saving for people who only use
>    the repos for ebuilds.
> 
> 3. Add complete & proper support for submodules. Currently, submodules
>    enforce non-bare clones and are fetched during unpack. After
>    the change, they will be fetched and unpacked like normal repos.
> 
> 
> The use of API features in *.ebuild maps like the following;
> 
> EGIT_REPO_URI	521
> EGIT_BRANCH	66
> EGIT_SOURCEDIR	21
> EGIT_PROJECT	17
> EGIT_HAS_SUBMODULES	15
> EGIT_COMMIT	12
> EGIT_BOOTSTRAP	12
> EGIT_MASTER	7
> EGIT_NOUNPACK	2
> EGIT_STORE_DIR	1
> EGIT_NONBARE	1
> EGIT_DIR	1
> EVCS_OFFLINE	0 // these are for make.conf
> EGIT_REPACK	0
> EGIT_PRUNE	0
> EGIT_OPTIONS	0
> 
> I will need to take a look which of those cases can be replaced easily.
> 
> 
> How should I proceed? Assuming that git-2.eclass is used by live
> ebuilds only, and those ebuilds can be subject to random breakage,
> I could supposedly just start changing API of the eclass.
> 
negative, breaking ebuilds is different than upstream breaking things
and needing ebuild fixes.  Randomly breaking 700+ ebuilds isn't cool.

> On the other hand, I could also go for beautiful git-r1.eclass,
> and cleanly switch the packages.
> 
> Then, I could go for something involving the two -- create a new
> git-r1.eclass that has API fully stripped, and start deprecating
> features from git-2.eclass. We would be able to switch to git-r1 to
> test offending packages safely, then do a big switch of remaining
> packages and make the two eclasses temporarily equivalent.
> 
> What are your thoughts?
> 
I have a VCS ebuild for nearly everything I officially maintain and
almost everything in the pentoo overlay.  If you change the eclass in
place that will break dozens of ebuilds just for me.  Please don't.

- -Zero
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSIYESAAoJEKXdFCfdEflKdXUQAI3Rwqyku4FCgO/3uivB/ltN
+pDlw0DCHt9IlBK1Jh3t+ohXVdXhi6iZyQ7ly+t+5phA3zhR79yTJWkxmXq8E7br
TM99Fsfd3Cqmdc54F4uA6MHI9MQj7efCkE3mas9bks8SPBnNTVwWmjVYUxBXZXfm
J94+tcCEdesVqz2/iivm0iQ6W7EraCTG+umz/wz1urqIfDQBO8mDLHoM+jiovnUb
tArOZ3GIhS/Rj+S/ZtH4VpvarFrH5ZzfO1GpNAvaFS8kGLRdEoUnMYk6K+WNdbkZ
SYldaL8M/gNKWfmRU+j8OGK7bsNJx43Bqei7oUyMqkUVsTBpjmkPvw59aFKVlb7J
kdfeoobpFsuAcxaQfWU1J8map82N8McdVOYMkEkC3HJP33TeymZKSUcU2/iMxr1W
+kU0C2L7A9oXzWwkmiQ9WxAQ5KTYzyh5AzaaN45pju+QlFc2T4P4AZ4oqy+Zzzi2
CH2JZBPdv9+jMQLcwhpVoDsOPbbLGrx/aJEARwKvgs2fF+WYllraOu7uMPnaoYWw
wNK9JYyhncx2pfG23PG7Uo3RtN8Aks0tptsHosOmB9ZArtnhYL2SxlotAoef+9X7
2qxFm59D9koW5FF0arnzzF/ul2zzos7NZRwJ1bwR1gYocxvN6Yqfg0zeX6uC+sDW
dSukBOrVEuyftf+KurL9
=harh
-----END PGP SIGNATURE-----

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic