From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ekarttun@mat-153.math.helsinki.fi>
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on finch.gentoo.org
X-Spam-Level: *
X-Spam-Status: No, score=1.3 required=5.0 tests=DKIM_ADSP_ALL,DMARC_QUAR,
	MAILING_LIST_MULTI autolearn=no autolearn_force=no version=4.0.0
Received: from no-spam.it.helsinki.fi (NO-SPAM.it.helsinki.fi [128.214.205.34])
	by chiba.3jane.net (Postfix) with ESMTP id C2539200AD4B
	for <gentoo-dev@gentoo.org>; Mon,  4 Feb 2002 01:21:30 -0600 (CST)
Received: from mat-153.math.helsinki.fi (mat-153.math.helsinki.fi [128.214.72.113])
	by no-spam.it.helsinki.fi (8.11.4/8.11.4-SPAMmers-sod-off) with ESMTP id g147Ka405893
	for <gentoo-dev@gentoo.org>; Mon, 4 Feb 2002 09:20:36 +0200 (EET)
Received: from ekarttun by mat-153.math.helsinki.fi with local (Exim 3.33 #1)
	id 16XdP8-0002ub-00
	for gentoo-dev@gentoo.org; Mon, 04 Feb 2002 09:19:06 +0200
Date: Mon, 4 Feb 2002 09:19:06 +0200
From: Einar Karttunen <ekarttun@cs.helsinki.fi>
To: gentoo-dev@gentoo.org
Message-ID: <20020204071906.GB30127@shellak.helsinki.fi>
Mail-Followup-To: gentoo-dev@gentoo.org
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.3.25i
Subject: [gentoo-dev] A new category scheme idea
Sender: gentoo-dev-admin@gentoo.org
Errors-To: gentoo-dev-admin@gentoo.org
X-BeenThere: gentoo-dev@gentoo.org
X-Mailman-Version: 2.0.6
Precedence: bulk
Reply-To: gentoo-dev@gentoo.org
List-Help: <mailto:gentoo-dev-request@gentoo.org?subject=help>
List-Post: <mailto:gentoo-dev@gentoo.org>
List-Subscribe: <http://lists.gentoo.org/mailman/listinfo/gentoo-dev>,
	<mailto:gentoo-dev-request@gentoo.org?subject=subscribe>
List-Id: Gentoo Linux developer list <gentoo-dev.gentoo.org>
List-Unsubscribe: <http://lists.gentoo.org/mailman/listinfo/gentoo-dev>,
	<mailto:gentoo-dev-request@gentoo.org?subject=unsubscribe>
List-Archive: <http://lists.gentoo.org/pipermail/gentoo-dev/>
X-Archives-Salt: 691bcfe6-03f8-4617-bb99-baeb15da47c0
X-Archives-Hash: 04cc138affe318f4ebd56fd64a051608

Hello

I have thought about a new way of categorise ebuilds in gentoo. The
new scheme would be based on category files which would be just a
list of dependencys as portage understands them. Each package could
be in many categories and categories may include categories (but there
may be no circular references). 

So the category files would be essentially just the contents of the directories
initially, but they are easily extensible. For example the dev-lisp category 
could be represented by the following file:
ecls
gcl
sbcl

Of course in additional to these categories we may create additional categories
for example we could create a web-server-apps category which would include
all apps needed for a typical web-server. Also we could have a suggested
base system category which would include all apps which are essential
in creating a functional system...

This scheme grows even more attractive if there is a gui-installer, because
it has just to understand categories. This would also solve all gnome/kde-apps
vs. other categories problems, as the applications could be included
in both categories.

But how much worl would this be? I am not entirely familiar with the portage
source code, but it seems quite modular, so there should be no large problems.
Things that would have to be done:
* switch /var/db/pkg not to use categories, but just package names. This
  should be simple to implement.
* flatten /usr/portage all apps would be moved from their category directories
  to a common directory
* remove category directories from portage, should be quite simple
* add support for category files to emerge. The algorithm could
  be if the target is an application/ebuild proceed as before
  if it is a category merge all files in that category (this could
  be handled using the existing dependency code). Support also syntax
  like emerge category/abc which should also be quite easy to implement
  (open category file and fed the line matching abc to the dependency
  handling mechanism).
* replace DEPEND="a/b c/d" in all ebuilds by DEPEND="b d". 
* make changes in gentolkit
* make something for new users with menus

This sould also make portage faster than now when emerging a build
without a category name, because all applications are in the same
directory. Of course we sould move /usr/portage to /var/portage,
because /usr should contain only read-only data :-)
It may seem that directories are more clear for manual operations
but they would have their own operations like:
ls /usr/portage/app-admin => cat /vat/portage/app-admin.cat


- Einar Karttunen