Gentoo Archives: gentoo-portage-dev

From: "Sami Näätänen" <sn.ml@××××××××.com>
To: gentoo-portage-dev@g.o
Subject: Re: [gentoo-portage-dev] The purpose of USE flags
Date: Tue, 16 Dec 2003 11:13:44
Message-Id: 200312161911.23691.sn.ml@bayminer.com
In Reply to: Re: [gentoo-portage-dev] The purpose of USE flags by Marius Mauch
1 On Monday 15 December 2003 00:23, Marius Mauch wrote:
2 > Hi,
3 >
4 > personally I really dislike this proposal as it adds a lot of
5 > complexity for functionality that would rarely be used. Also IMO USE
6 > flags should not prevent the installation of a package, that's the
7 > job of masking
8
9 Well at least in current state masking is very poorly implemented.
10
11 Besides the system I explined can be used as a tree use flags and thus
12 it does not make it more complex on teh contrary.
13
14 Example using current implementation as the functionality basis:
15
16 Enable all gui USE 'flags'
17 =use.gui.*
18 Disable qt USE 'flag'
19 -use.gui.qt
20
21 So the only thing different is the amount of text and the fact that one
22 needs to put multiple rows of stuff. But this is more readable than
23 this:
24
25 USE="X acpi acpi4linux apache2 avi cdr crypt cups debug doc dvb dvd
26 emacs encode esd examples fbcon flash foomaticdb gd gdbm ggi gif
27 gphoto2 gpm gps gtk gtk2 imap imlib innodb java joystick jpeg junit
28 ladcca lcms leim libg++ libwww lirc mad maildir memlimit mikmod mmx
29 mozilla moznocompose moznoirc moznomail mpeg mpi mule ncurses nls oav
30 oggvorbis opengl oss pam pdflib perl pic plotutils png postgres python
31 qt quicktime readline samba scanner sdl slp sse ssl tcpd tetex tiff
32 truetype wmf x86 xml xml2 xmms xv zlib"
33
34 And besides the USE 'flags' should be program controlled by default ala
35 ufed and not in the make.conf.
36
37 Oh and this representation is simply to make it tree like.
38 Because in my opinion all the stuff has to be in database so these
39 representations doesn't really matter, does they?
40
41 So we need a preferences program to set the configurations in the
42 database in this way we can controll multiple Gentoo hosts in single
43 portage database from single machine.
44
45
46 Now that I have something up from my final idea I can some what clarify
47 the idea.
48
49 So we have single database where mutiple hosts information can be
50 stored.
51
52 We have a portage 'daemon' to handle all the database access, package
53 installation and uninstallation. It doesn't need to be allways in the
54 background, but it can be launced when something needs it.
55
56 This one daemon controlls the dependency tree calculations etc and can
57 compile multiple packages simultaneysly if all their dependencies are
58 allready installed. Thi ofcourse depends wheter the multiple processes
59 are allowed or not through SMP and/or distcc and/or openmosix
60
61 So now one could que new packages to the daemon at will and it would add
62 these to it's dependency tree. The daemon installs new packages to the
63 tree (It might even be a special graph, if there are packagages that
64 genuinly can depend on eich other) and installs those packages that are
65 not meeting the requirements. This way we can also see the situations
66 where something can't be installed, because something else doesn't work
67 with certain version of the common dependency of the two packages.
68
69
70
71 Now a litle more to the portage level. :)
72
73 So the portage daemon would need to be a modular concept to be really
74 usefull. So here are my hasty propositions to be as the modules.
75
76 1. Main module, which controls the others. So is kind the current
77 portage core. And the daemon really is only this the others are
78 libraries.
79
80 2. Preferences module. Sets all the system options ie what database and
81 the database URI to use etc. This is lot like the current
82 make.profile and some parts of make.conf.
83
84 3. Database handling. This should be so that there can be one for every
85 database one might use, but of course not all of them made, but given
86 the possibility to users to make their own. The default should be a
87 very light weigth solution like flat files. This module is
88 responsible for database queries and alterings.
89
90 4. Build module. This builds a package in isolated environment
91
92 5. Install/uninstall module, which handles the file altering in the live
93 system.
94
95 Ebuilds wouldn't anymore be a shell scripts, but the build module will
96 offer all necessary commands to build something. Ebuild will simply be
97 a command sequence. Same goes for the install module.
98 This way it can be made more secure and easier to control.
99
100 Because this consept uses database abstaraction we can put only the
101 staff that suits well to the database and use other type of data
102 structures if more suitable to the needed task.
103
104
105 --
106 gentoo-portage-dev@g.o mailing list

Replies

Subject Author
Re: [gentoo-portage-dev] The purpose of USE flags Marius Mauch <genone@g.o>
Re: [gentoo-portage-dev] The purpose of USE flags Pieter Van den Abeele <pvdabeel@g.o>