My obsession was never wasted time/perfomance, but the depedency of python in a base-system application. I am not the one advocating C for speed, I am talking about portability. Since people are eager to recreate portage using a different scheme(using a database instead of filesystem repository way), there could be other changes, including languages and having ebuild in a more 'token' way.Kihaji wrote:Are not string proccessors, they immediately break down things to tokens, which are for the most part constant. An ebuild on the other hand is widly varrying.Vininim wrote:I guess compilers,Kihaji wrote:Anyone who thinks writing a largely string proccessing application in C over Python is a good thing should be slapped.
Hard.
For the most part should not be written in C/C++. In fact, there are very very few applications that should be written in C.browsers,
Same boat as compilers. What they process is constant and predictable.interpreters don't fit in that category... OR we need to slap a bunch of people around.
The speed gain you would get, if any, you would get from re-writing portage in C/C++ is miniscule compared to what you would achieve through a restructuring of the portage tree(If I use KDE, why do I need to keep the 8 billion GNOME package ebuilds on my machine up to date? Or if I don't play games/run a webserver/any other of a number of specialized roles) And, you would incur a huge overhead in testing and development.
If you are so obsessed about wasted time, use a binary distro. I guarantee the small performance increase you gain from using source would be HUGELY offset by the fact you don't have to compile, IE, how long would you have to use something like KDE with your optimizations before you make up the 2 days in lost time it took you to compile it vs download a binary.
I read the whole thread trying to find an answer... So... Let's ask again:Alejandro Nova wrote:I also don't know why don't portage developers use things like Psyco, optimizers that can increase Python apps's speed painlessly before trying any port to C++.

!!!Drysh wrote:Why don't portage use Psyco???
Write yourself a bash script or alias that calls emerge --ask.Shadow Skill wrote:Please for the love of God default Portage to emerge --ask
Wrong. Most people don't want to be the slave sitting next to their box during emerge runs, confirming all and everything.Shadow Skill wrote:not [to] have it this way at all is just stupid.

Writing a script or alias is stupid because there would be no way to take off the --ask flag if I wanted it to just go ahead let things operate without being prompted. Only someone who is not thinking straight creates a system that defaults to no user interaction then puts a flag in to turn on user interaction then never puts a flag to override the question. In order for a script or alias to work I would have to make an entirely new command alias when the program itself should already be setup to do that. You don't turn on confirmation you turn it off at will, you talk about not being a slave to emerge runs but I am already a slave to it because I have to do a song and dance routine to get the thing to download and then install ebuilds, I have to do another song and dance to see what use flags are new and what they do; some flags don't even have any information for some incoprehensible reason. Do you honestly think I want to sit at my machine and doCarlo wrote:!!!Drysh wrote:Why don't portage use Psyco???
Write yourself a bash script or alias that calls emerge --ask.Shadow Skill wrote:Please for the love of God default Portage to emerge --ask
Wrong. Most people don't want to be the slave sitting next to their box during emerge runs, confirming all and everything.Shadow Skill wrote:not [to] have it this way at all is just stupid.
Code: Select all
emerge --pv foo; emerge -f foo; USE=foo emerge foox86 only, huge memory waste, crashes randomly, ...Drysh wrote:I read the whole thread trying to find an answer... So... Let's ask again:Alejandro Nova wrote:I also don't know why don't portage developers use things like Psyco, optimizers that can increase Python apps's speed painlessly before trying any port to C++.
Why don't portage use Psyco??? (Maybe a use key to let it run with psyco?)
(I was searching about Psyco when I found this.)
Duplicate package names become problems (assuming you want to use package names as keys), reduces flexibility a lot.- A DB alowed us to stop using a tree-like way, and start using search keys to find packages. Instead of guessing if a package is under gnome-extra or x11-apps, I would search for a package that has the keywords gnome, app and x11. Not a tree, but a search in a db.
I don't get what you're trying to say here.- We had a definition of each use key. For instance, +mozilla is used for the mozilla suite and any mozilla browser (firefox or suite); so when I set +mozilla, I have to edit package.use to exclude it from some applications that want the mozilla suite (like openoffice).
A DB won't fix any semantic srewups.- The names in portage tree were writen in the singular or plural. (that's not a joke) ... I was trying to find out why my package.mask wasn't working: it's x11-apps (not x11-app)! But since we have app-*... Ok... You see what I'm talking about.
A DB won't help with any transition problems.- Why php, and php4, and php5 ??? A db, please!
What's the gain of replacing / with - ? FYI, there were similar proposals like this in the past and been shot down as it creates a multitude of other problems (cvs updates/repoman checks become more difficult for example).1. A keyword based search engine instead of a tree based one (or both).
- Put all e-builds in the same directory (there is an all directory in portage already). Forget about the tree. All packages should have unique names, like they have today, but instead of something/something make it (for instance) something-something.
Be careful with the term "keywords", it has a special meaning in ebuild contexts, and using it in the general sense makes things confusing- Create some keywords to add in the e-build to find the packages. Like: x11, gnome, kde, app, browser, plug-in, etc... I'll give one example using evolution, the gnome mail-client:
Lets add these keywords to the following e-builds:
mail-client/evolution: x11, gnome, mail, mail-client, office
gnome-extra/evolution-data-server: x11, gnome, office
gnome-extra/evolution-exchange: x11, gnome, office, mail, plug-in
As said before, be careful with the "keyword" usage in ebuild context. Other than that I'M not quite sure what you're trying to say, if it's just that use flags don't always have the exactly same meaning, that's known and discussed/decided on a case by case base as there is no technical solution.2. The Uniform Keyword (UK) project.
Since we have more e-builds each day, the keywords sometimes mean different things for different packages. For instance, the mozilla use keyword means that it should connect specifically with the mozilla suite for OpenOffice (requiring mozilla package) and it only means to build with support to any mozilla browser (read firefox) for other e-builds (thus requiring firefox or mozilla packages). Once you learn that you should use mozilla and firefox keywords for some and only firefox for others it works fine, but I think that a manual or something to help the e-build developers (and users) would be nice.
Actually it's just the same issue as above, different people having different preferences, and again not technically solvable (keep in mind this is about portage implementations, not Gentoo policies).Another problem is that different people use different standards to name things. That increases the probability of mistakes. Example: app and apps.
My idea to minimize that: a wiki page with keywords descriptions used and updated by the developers; some guidelines to the e-build developers (always use singular, read the wiki before creating a new keyword, post there any new use of a keyword, etc).
It has? I don't think so.This is more a political issue than a technical one. But it has some serious technical implications.
Define "edited" ... The last time3. The "last edited". (I know I said it would be 2 ideas...)
Just include the last edited date in the output of emerge -s.
First step would be to join the gentoo-portage-dev mailing list and join the #gentoo-portage IRC channel.BTW: I'm still new to gentoo (and linux); I have some experience with DB; I code in C and I'm learning python. I'm willing to help improving portage. How should I become more actively involved with the development? (Right now I'm still trying to understand how it works.)
Well, I can't help that the same ideas are being proposed over and over again. Some problems with portage are just due to bad coding (e.g. take a look at the version comparison in 2.0, but be warned that you'll get sick), but most/all proposals I see in the forums involve sometimes drastic design changes. Some desgin changes are being done in the 3.0 branch, but right now I'm not involved with that one so don't ask me about details.cokehabit wrote:If every idea is being shot down here, what - if anything - is being done to make portage better. Everyone gets so defensive when it comes to ideas to help out.
He already does, I still have to get into saviorcokehabit wrote:Genome, you and harring should rewrite portage![]()
well that is the idea of a testing team, there would need to be plenty of capable people. Remember though, most changes wouldn't require a complete re-write, code could be taken from existing projects and changed.Genone wrote:He already does, I still have to get into saviorcokehabit wrote:Genome, you and harring should rewrite portage![]()
![]()
As for the testing team, while the idea is good, the problem with for example the DB (for the tree) proposal is that even a prototype would require a large amount of work, and the problems are quite obvious, so I have doubts you can motivate enough capable people. And to repeat, anyone really interested in portage development should join the mailing list and the IRC channel.
yes, thats 30mins a year!!!!!!!!!!!Lechium wrote:I dont see how Python is Portage's bottleneck speed-wise.
You spend most of the time wating on gcc and such, while Python does its job of downloading stuff, calculating depndancies, etc in avery short times compared to what it takes to compile stuff. Re-writing it to C or C++ may save you 5 seconds a day, but is it really worth it?


Psycho just covers up bad, broken code. Get over it.Nihilus wrote:http://gentoo-wiki.com/TIP_Speed_up_portage_with_Psyco FTW!
Maybe we could use what we use for the site.Genone wrote:Define "edited" ... The last time3. The "last edited". (I know I said it would be 2 ideas...)
Just include the last edited date in the output of emerge -s.
- any ebuild of the package was edited
- any file of the package was edited
- the ebuild selected by the search was edited
- any file belonging to the selected ebuild was edited
Also what time should be used, the one from the CVS header, the local mtime, some time written into the ebuild by a dev?
IMO all of these would be pretty useless as the first two are updated on any change (including for example added keywords that are irrelevant to you) and the last is simply too errorprone (and I'm pretty sure that ebuild devs would shoot it down immidiately anyway).
That's an answer for the second question, but not for the first one.Drysh wrote:Maybe we could use what we use for the site.Genone wrote:Define "edited" ... The last time3. The "last edited". (I know I said it would be 2 ideas...)
Just include the last edited date in the output of emerge -s.
- any ebuild of the package was edited
- any file of the package was edited
- the ebuild selected by the search was edited
- any file belonging to the selected ebuild was edited
Also what time should be used, the one from the CVS header, the local mtime, some time written into the ebuild by a dev?
IMO all of these would be pretty useless as the first two are updated on any change (including for example added keywords that are irrelevant to you) and the last is simply too errorprone (and I'm pretty sure that ebuild devs would shoot it down immidiately anyway).
For instance, gentollkit-0.2.1_rc1 has the date "Sat Nov 12 15:53:37 2005". As we can see here! So we don't have to define which one to use, as it is already used. The only thing that could be changed is to show that when you do an "emerge -vs package". It is also in the ebuild (header line):
# $Header: /var/cvsroot/gentoo-x86/app-portage/gentoolkit/gentoolkit-0.2.1_rc1.ebuild,v 1.1 2005/11/12 15:53:37 fuzzyray Exp $
As I said above, the date from the CVS header won't tell you that, could be just someone marking a two year old ebuild for the s390 arch. And regarding your last statement: date information isn't a good indicator to select the revision, just the the actual revision number for that.IMHO it isn't prone to error, as it clearly indicates what I want to know: Is that project active? Is it newer or older than another package? When they say it is necessary to run with something else, are they talking about the current version?
See above: cvs header doesn't really tell you that (another example: the sylpheed-claws-1.0.5-r1 ebuild is (from the CVS header) "newer" than the 1.9.100 ebuild, but upstream will tell you "wow, you're using an obsolete version")The point is, information degrades very fast in IT. And sometimes the description is talking about something that changed. For instance, I emerged a version of wine that was patched to run with NWN Toolset (a game editor), but later I discovered that it was patched because there was a bug in the previous version of wine. If I had seen the date, I would notice this was older than the current ebuild of wine, and I would have searched for that bug. I don't think this would be usefull for old gentooers, as they already know which package is out-dated, but this would help noobs.
No problem, I'm just pointing out that adding a date doesn't really give you the information you're looking for, as you want an indicator how active the upstream package is, and there is no easy way to get that information as far as I can see.Genome: What I posted are suggestions. I recognize the excelent work you've done with portage. I'm not even posting as a requested feat, but only as a suggestion. That's because I'm too new here to be able to understand all the implications of something. But sometimes, the point of view of a new user has some insights that the old users cannot see anymore, because it is so easy to them to do it the current way that they cannot imagine how difficult it is to the new user. I believe the date is something like this: old users wouldn't need it, but new users would love it. I know I would. Anyway, thanks for the answers, and I hope I don't offend anyone when I express my ideas to improve gentoo, even if they are stupid ideas (yet!).
In the world of fast machines with big hard drives Python is not that fat, nor is Perl (I know, I know, please spare me the ultimate truth...)tempest wrote:I'm with you about this one, but it all comes down to one's definition of "fun". I don't think I would have much fun rewriting the whole Portage core in C, having to fight against infancy bugs and maybe see halfway that the real problem was in old portage's lack of DB structure, and that I could have written 90% less code and implemented 90% more features in half the time using Python or Ruby... Or realizing in the end that a better thing to do would have been locating the incriminated part of Portage and refactoring it.EzInKy wrote:Probably not, but the fun is in trying.
Anyway, it would be nice to hear opinions from the only people that will make the decision in the end: Portage developers. Are you out there?