Slashdot Mirror


GoboLinux Compile -- A Scalable Portage?

LodeRunner writes "The GoboLinux team, featured about a year ago for creating a distro that does away with Unix paths such as /usr/bin and /lib and uses things like /System/Settings/X11 instead, just released a new release where they introduce their own alternative to Portage and similar systems: Compile. But is yet another source-based compilation system needed?" Read a bit more below on why the GoboLinux folks think so.

LodeRunner continues "We already have ebuilds, RPM .spec files, and whatnot. The argument for reinventing the wheel yet again was the observation that while developing apps to handle these files is easy, the task of maintaining the ever-growing database of compilation scripts is the real problem -- the huge package collection of Debian comes to mind. Compile took the extreme minimalistic approach, and its scripts ("recipes") are as small as can be: the script for a typical autoconf-based program takes two lines.

Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script (for example, apps that need a separate build directory just add a needs_build_dir=yes line). The plan is to make Compile as smart as it can and the recipes as small as possible.

It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity will prove itself to be limiting or enlightening, but in the ~six months Compile has been in beta test by the people from the GoboLinux mailing list, over 500 recipes were written, ranging from Glibc and GCC up to KDE and the Linux kernel itself."

35 of 366 comments (clear)

  1. Emerge by Anonymous Coward · · Score: 3, Insightful

    When i first changed to gentoo I was gladly surprised by the power and flexability of portage. If this is half as good it is worthy a place in the linux community, no doubt about it!

  2. WHAT? by ajutla · · Score: 5, Funny

    "Does away with" /usr/bin and /lib?


    BLASPHEMY!!! They're SINNERS! How DARE they mess with the SACRED directory structure! Et cetera! Et cetera! Ad nauseam!


    ...In all seriousness, though, that does sound kind of like an interesting concept--might make things easier for people to understand. Me, I like my three letter unpronounceable paths all the same :)

    1. Re:WHAT? by Anne+Thwacks · · Score: 4, Insightful
      Many years ago, in the olden days I thought about this, and was quickly redirected to the "one true path" - it may be marginally more helpful TO ENGLISH SPEAKERS to have meaningful commands, directory names, etc - but unix is multi-user, and supports multiple locales, and the traditional commands, paths may not be meaningful, but can easily be aliased - each user can provide his own names, in his/her own language, but at least the standard ones are standard.

      You are welcome to alias them to whatever you want, but it wont help you understand your next door neighbour's Unix system, or your next employer's either.

      --
      Sent from my ASR33 using ASCII
    2. Re:WHAT? by gorre · · Score: 3, Insightful

      /etc is really the only hard one.

      Pronounce it the same as you would if you saw it in a normal sentence, "et cetera".

      --
      "Madness is something rare in individuals - but in groups, parties, peoples, ages it is the rule." -- Nietzsche
  3. Uhmm by NitsujTPU · · Score: 5, Funny

    But is yet another source-based compilation system needed?

    Uhmm... I guess not, from now on, we'll do all of our compilations without source code... however that will supposedly be done.

  4. A job for ln? by sweet+'n+sour · · Score: 5, Interesting
    /System/Settings/X11
    mkdir /System

    mkdir /System/Settings

    ln -s /etc/X11/ /System/Settings/X11

    Couldn't this also work?

    1. Re: A job for ln? by mercan01 · · Score: 5, Insightful

      They're trying to replace an arcane directory structure, not mask it.

  5. "as simple as possible" by scrytch · · Score: 4, Interesting

    Yes, an autoconf build script contains two lines. And cannot express version dependencies that the autoconf build didn't think to maintain ... and if it did, it doesn't communicate the dependency back to the build system. It has no way to merge config files. It doesn't even have a way to enumerate the installations. But yes, you could build a system that simple, because it's good enough for some, but even slackware isn't that simple. To say nothing of distribution patches, configuration (e.g. to build xchat with gnome support or not?), and so on.

    This isn't to say it'll get to be as complex as portage, but it will probably have to get at least as complex as ports. Which then begs an obvious question...

    --
    I've finally had it: until slashdot gets article moderation, I am not coming back.
    1. Re:"as simple as possible" by HishamMuhammad · · Score: 4, Interesting

      And cannot express version dependencies that the autoconf build didn't think to maintain ... and if it did, it doesn't communicate the dependency back to the build system.

      There is a separate Resources/Dependencies file, which is automatically generated with ldd (but can be hand-tuned). This is further integrated with the GoboLinux fs-oriented concept of dependencies, so if you, say, compiled Allegro "by hand", it will not complain "Allegro is missing" just because it was not built with Compile.

      It has no way to merge config files. It doesn't even have a way to enumerate the installations.

      Could you clarify on those? I really did not get it (and maybe that's why it's not implemented :) )

      To say nothing of distribution patches, configuration (e.g. to build xchat with gnome support or not?), and so on.

      Distribution patches are applied if found in the recipe directory (a recipe is a .tar.bz2 containing a directory and some files). Configuration is being discussed in the mailing list, but currently we rely on configuration detected by autoconf et al: usually, if you have svgalib installed, program foo gets compiled with svgalib support compiled in, and vice-versa. It works well for a surprising number of packages, but yes, we are considering something like that.

      This isn't to say it'll get to be as complex as portage, but it will probably have to get at least as complex as ports. Which then begs an obvious question...

      Yes, we are aware it will get more complex over time, but by keeping minimalism as the #1 goal, let's see how "little complex" can we still be while being reasonably feature-complete for real world usage (and some would even argue we already are).

  6. Re:It works for Gentoo by XO · · Score: 4, Insightful

    Just because you have a Unixish kernel does not mean you have to have a Unixish operating system.

    Surprisingly, not everything in the world has to be Unix!

    --
    "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
  7. The shorter the better by Moth7 · · Score: 5, Insightful

    It's much more difficult to make a typo in /etc than /System/Config. That's one of the godsends of the POSIX structure over that of Windows - /lib is easier to remember/type than C:\Windows\System32. And there are none of those annoying spaces in /usr/bin that exist in C:\Program Files.

    1. Re:The shorter the better by SmilingBoy · · Score: 4, Informative

      /usr used to stand for "user" in earlier Unix implementations - all "home" directories were under /usr, i.e /usr/joebloggs. A more detailed discussion can be found here.

  8. Easier to Write Build Scripts, Please? by Badam · · Score: 3, Insightful

    Having created build scripts in FreeBSD, Gentoo, Sourcemage, and Arch Linux, I think the most important goal is to use/develop a script language that newbies find easy to use.

    If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!

    --

    Check out my blog: My Galaxy is Milky Way Adjacent
    1. Re:Easier to Write Build Scripts, Please? by HishamMuhammad · · Score: 4, Interesting

      If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!

      Exactly! That's our #1 design goal. Most of the more active users in our mailing list have already contibuted at least one build script for their favorite app. That's how the recipe-store has grown so fast.

  9. Screw that by brunes69 · · Score: 5, Insightful

    Blasphemy my ass. i have been using Linux, BSD, nd other UNIX derivatives for over 10 years now, and all I can say is THANK GOD.

    The /usr/bin, /etc, /usr/local concept is totally outdated. Having apps in their own directories eases maitenence, eases administration, and eases uninstallation. Think about it, if apps were in their own self contained directories, who even *needs* a package manger? To install, you extract the tar, to uninstall, delete the directory. Boom snap, done and done.

    Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

    1. Re:Screw that by McDutchie · · Score: 5, Insightful
      Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

      Except that many applications install their own DLL cruft under C:\WINDOWS anyway (Microsoft itself being one of the worst offenders), and that the program stops working if you move the application dir around, thus eliminating completely the usefulness of this concept.

      No, the OS that does this right is Mac OS X. Installing an app is as simple as copying the application package (basically just a directory), and you can put and move it anywhere.

    2. Re:Screw that by Too+Much+Noise · · Score: 3, Insightful

      so what prevents your having the app in its own directory (under /usr/bin/local, for instance) and symlink the binaries to /usr/local/bin, the lib subdirectory to /usr/local/lib and so on? then uninstalling only adds the step of removing invalid symlinks after deleting the app directory - you could even make it a script (say, /usr/bin/uninstall).

    3. Re:Screw that by stevey · · Score: 4, Informative

      And that's exactly what scripts such as GNU Stow do.

      The 'foo' application is installed in '/usr/local/foo-v1.x', and symlinks are placed into /usr/local/bin so that it can be run.

      This makes installation and removing applications simple - and you can share your applications across NFS if you're so inclined.

    4. Re:Screw that by BrookHarty · · Score: 3, Interesting

      We use /appl (/opt in a jam) for all our software. And most production software uses its own /etc, bin,log,lib, directories. /appl/oracle with everything in its own directory.

      While this works, I dont care for gentoo's problems with Mozilla and QT3 compiles, you can recompile an application and break 2 others, gets to be a hassle. But you trade the hassle for speed, or ease (I guess)

      Sometimes I just want to rpm -ivvh --force --nodeps and forget about it. And to tell the truth, there is alot of misc stuff on linux/bsd/solaris boxes that could be cleaned up. X directories alone are garbage. /usr/X/lib/X11/fonts WTF, I've always hated how X puts files that are not libs in /lib.

      And this /share directory, how about a simple /fonts directory for the entire system?

      OSX on the other hand is set out clean, they did a good job the personal /home directories. I love how fink is just in /sw for the whole system, and doesnt touch a system file. Even my WinXP box has a cleaner directory structure.

      Think Gobolinux might be on to something. I'm gonna install it later and try it out.

  10. Re:It works for Gentoo by Mycroft_VIII · · Score: 3, Informative

    I would tend to agree that breaking the paths would be bad, fourtunately they don't exactly do that.
    What they do is provide a more intuitive (on the surface of it, it seems so to me, need more details to be shure) path system while maintaining compatability to the old system.

    "In GoboLinux, each program resides in its own directory, such as /Programs/Xorg/6.7.0 and /Programs/KDE/3.2.2. Each file category (executables, libraries, headers) can also be accessed through unified symlink views, such as /System/Links/Libraries and /System/Links/Headers. These views match the legacy directories (/bin, /usr/include, /usr/local/share) and so on, achieving total Unix compatibility while keeping program directories completely self-contained."

    They claim thier systems is path agnostic.
    this is a good thing imho. One of my (minor) pet peves is that the standard *nix path system is largely cryptic to joe user, and a pain in the butt even for the cluefull unless you have enough *nix experience to make it automatic.
    Now if they fix cut and paste and find a way to make havening both a *nix and a windows version as close as possible to a simple recompile with a few options/flags changed the year of linux as a major desktop contender will finally arive istead of forever being next year.

    Mycroft

    --
    https://signup.leagueoflegends.com/?ref=4c3ed6600b6ea
  11. Descriptive path and OS X by mroch · · Score: 3, Insightful

    The descriptive path thing sounds a lot like what OS X does, except that it goes all the way where OS X still has /usr, /etc, etc. although hidden. I wonder if Apple can patent or has patented that?

  12. "Recipes" are a bad idea by RovingSlug · · Score: 5, Insightful
    Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script ... It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity

    Yes, simplicity is good, but only in the context of the whole system. Here, you're just shifting complexity from the per-package scripts to the overall Compile package itself -- creating a large, central, monolithic service.

    Because it's centralized, over time, this is going to accumulate a lot crap and become opaque, obfuscated, and unmaintainable. Changes and maintenance to Compile will more significantly impact the contemporary set of recipes than, say, changes to Portage and ebuilds.

    It's easy to apply a good idea, like "simplicity", in too narrow of a scope -- to the detrement of the overall design. Better to think about it as balance of "package maintainability", "system maintainability", "barrier of entry", etc.

  13. the site is worth visiting by dankelley · · Score: 3, Informative
    Even if you're not interested in 'Compile', the website is well worth visiting. These folks have some new ideas, and they don't seem to be just gratuitously new. (By 'gratuitous' I'm thinking of changes that yield no new power, such as the differences in directory structures between some of the linux distos.) Slashdot readers might find it particularly interesting to consider the alternate ideas about system/application directories used in this system.

    I've recently switched from linux to OSX, and I've learned that the latter has some clever ideas (e.g. bundles) that can leverage developer effort. Given this context of learning by changing, my own view is that this new direction for linux is worth investigating ... not that I'll likely leave OSX anytime soon.

  14. Re:Non-issue by Jameth · · Score: 5, Insightful

    Yeah, but who the hell starts them with capital letters?!?!?!

    Even with tab-completion, I just got my time quadrupled! Frickin' shift keys.

  15. Re:Sounds like Mac OS X by HishamMuhammad · · Score: 4, Informative

    To be fair, this isn't even a new idea for Mac OS X. It came from NeXT.

  16. Re:All I want is SATA RAID support by Nasarius · · Score: 4, Funny
    Debian and Gentoo are the only ones, AFAIK, that do, and they both are teh suck.

    Nice, you just managed to enrage the two biggest groups of Linux zealots in one go. :-)

    --
    LOAD "SIG",8,1
  17. Re:Non-issue by HishamMuhammad · · Score: 5, Informative

    Every modern shell supports case-insensitive tab-completion. And in GoboLinux, this is enabled by default.

    Try it, you might like it: on bash, just add

    set-completion-ignore-case on

    on your ~/.inputrc.

  18. Re:It works for Gentoo by Doctor+Crumb · · Score: 3, Insightful
    Why not just install everything in /usr/bin?
    Anything I compile myself goes in /usr/local. This means that when I upgrade my system from scratch, I can easily copy all of those installed things to the new system without having to go through /usr/bin by hand. Even easier if you put /usr/local on its own partition.

    Believe it or not, most things in unix are they way they are for a reason. That reason may not be immediately obvious to you, but it still exists.

  19. I'm all for ditching the paths by Mustang+Matt · · Score: 3, Insightful

    While I'm used to the current paths, I have no hard feelings at all about ditching them.

    I don't know if there's a linux standard for what kinds of files go in each directory but everyone I ask has a different answer.

    I think switching to an updated naming scheme for directories and getting a common installation/uninstallation routine for applications that actually sticks items on the menus in the guis, etc. would be a huge move forward.

    Not that I need either feature. I don't even use a linux gui. But someday maybe I will.

    --
    The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
    1. Re:I'm all for ditching the paths by platipusrc · · Score: 3, Informative

      If you're confused about how the directory hierarchy in a typical Unix-ish system should be setup, consult man hier, or if your distro failed to include that, see this hier man page.

      --
      And the muscular cyborg German dudes dance with sexy French Canadians
  20. Re:All I want is SATA RAID support by benjonson · · Score: 3, Funny

    Debian and Gentoo are the only ones, AFAIK, that do, and they both are teh suck.

    Nice, you just managed to enrage the two biggest groups of Linux zealots in one go. :-)

    Nonsense. Now emacs and vi: those are teh suck.
    --
    =-+
  21. Re:Non-issue by vadim_t · · Score: 4, Insightful

    There is plenty.

    There are several languages where lowercase -> uppercase -> lowercase can't be done without losing data, for example. Then there is the problem of how many languages you can support. Say, English is easy, but what happens when you find a disk with filenames in an encoding the filesystem doesn't know about?

    In Linux, it's just all bytes, it doesn't care if it's english, cyrillic or whatever. With case insensitivity it suddenly has to know what to do with cyrillic letters as well.

  22. Re:Unix paths by sirReal.83. · · Score: 4, Informative

    And no, OSX is not LSB compliant - go figure.
    This might be nitpicking, but I think you didn't read what the first letter in 'LSB' stands for - Linux :)

  23. Re:Compile doesn't use a specialized language by HishamMuhammad · · Score: 3, Informative

    Yes, I basically agree with you. The Armagetron recipe shows the "ugly" side of recipes: the support for imperative constructs, which often slip in declarative systems (ask any functional programmer...).

    In this particular example, I think the recipe author could have avoided the pre_build function using a patch instead. I recommend that very strongly to users, because patches are easier to maintain when writing a new recipe based on a existing one: patches make "rejects" when they change from one version to another, whereas that sed command will fail silently if the recipe writer is not careful. With a patch instead of the function, the Armagetron recipe would be reduced to 3 declarations.

    But yeah, there are cases when ugly imperative functions will be impossible to avoid. This most likely means that the design of the project's build system is pretty screwed up.

    What I, personally, try to do in those cases is, instead of writing a marvelously smart recipe, is to contribute a patch to the project itself. Most of the times, it's just $prefix-awareness missing, or something like that. Often the effort people spend working around build inflexibilities in distro-specific scripts would be much better spent improving the programs themselves.

    It's usually less work to "fix the program" than work around it. For a few key packages for GoboLinux I even contributed the autoconf scripts, and it was way less work than I thought it'd be. The one thing I like about this approach is that it helps the entire free software community, making for smaller recipes, smaller ebuilds, smaller specs, and so on.

    Sure, it ain't revolutionary today, but revolutions don't happen from night to day... they are secretly planned for a long time before the strike. :) What we're doing here is just trying a different approach. Time will tell if it produces revolutionary results. :)

  24. Oh! My! God! by The+Infamous+Grimace · · Score: 3, Funny

    Now if they fix cut and paste and find a way to make havening both a *nix and a windows version as close as possible to a simple recompile...


    It's George!

    (tig)
    --
    Ignorance and prejudice and fear
    Walk hand in hand