Archive

Archive for November, 2007

Entropy updates – you call it, you get it

November 30th, 2007 lxnay 2 comments

New stuff under the hood! Let’s start from the beginning, and from what’s been already integrated:

  • Package filters:
    • package.keywords: the idea is the same of Gentoo’s, but with more flexibility. If you are familiar with this file, you know what I’m talking about. This will let us to provide experimental packages (KDE4?) keeping them hidden by default. How it works? Experimental packages are tagged with non-default ACCEPT_KEYWORDS, thus, if not explicitly specified in the file won’t be pulled in into the dependency tree. Some examples:
      • Universal keywording (unmasking all the packages owning the specified keyword):
        • -*
      • Package keywording (unmasking specified package owning the specified keyword):
        • -* >=media-libs/foo-1.2.3
        • -* media-libs/foo-1.2.3
        • -* media-libs/foo
        • -* media-libs/foo:1
        • -* media-libs/foo#kerneltag
      • Repository keywording (unmasking all the packages in the specified repository owning the specified keyword):
        • -* repo=sabayonlinux.org
      • Package in Repository keywording (unmasking the specified package in the specified repository owning the specified keyword):
        • -* media-libs/foo repo=sabayonlinux.org
        • -* >=media-libs/foo-1.2.3 repo=sabayonlinux.org
        • -* media-libs/foo:1 repo=sabayonlinux.org
    • package.mask: it’s the same as above but more general and not dependent from keywords. Do you want to hide a package from being pulled in in the dependencies? Just add a valid atom, one per line.
      • >=media-libs/foo-1.2.3
      • media-libs/foo
      • media-libs/foo:1
      • media-libs/foo#kerneltag
      • media-libs/foo-1.2.3 (also valid)
    • package.unmask: it’s just the opposite of package.mask. If you need to enable an experimental package, append its atom to the file. One per line.
  • Entropy Server, automatic RSS feed handling: you can already see this feature at http://packages.sabayonlinux.org . If enabled in Entropy configuration files, Reagent and Activator can automatically manage the feed adding information about what’s been changed on the Repository with the option to let the developer comment the update. This will give users the ability to manipulate such information and hopefully create some gadgets (desklets, plasmoids) and so on…
  • Last but not least (in fact it’s at the TOP of my TODO list), COMMUNITY REPOSITORIES: I’ve already all in my mind. In few words, users with just a dumb FTP server will be virtually able to run their own repository (think about it like Gentoo Overlays, but with less hassles) compiling packages from Portage as they want and injecting them into their tree that could be shared with other users. With this idea, Joost reminded me about BitTorrent support. It would be nice, but I still have to think about it in depth.

On the 3.5 side, as you may have seen at http://svn.sabayonlinux.org, the NEW INSTALLER is in the works. After that, Loop1 will be out in a matter of days.

Categories: Development Tags:

Nova Linux, Entropy and packages.sabayonlinux.org

November 26th, 2007 lxnay 3 comments

Exciting things are moving under the hood. In short, Nova Linux team just discovered how good Entropy can be and that’s a good thing: after several months of silent hard work, code is starting to give back and it won’t be anything but better in the next few weeks. I’ve not started to work out a final ISO of Sabayon Linux 3.5 Loop1 yet but we are really close. Most of you may agree with me about preferring things that work, I think that the wait will be worth it in the end.
Nova Linux team is also interested in helping me out on the building of Spritz (the Entropy GUI). About Equo, we’re now at 0.8.14 release and I’m already working on two nice things that shouldn’t be missing: entropyzed (ahah) packages.mask support that will “unlock” me to provide kde4 binaries keeping them masked for example and, multiple packages support, if I would be talking about Gentoo, that would mean “slotting”, but we need to slot the slot, more or less this is intended as providing multiple releases for each package. How could we handle this on reagent? It won’t that hard, you’ll see.

But let’s talk about something you can “touch” now. http://packages.sabayonlinux.org will become our web-based packages repository service. At the moment, it reached the point it just has basic functionalities, more will come in the next days. So, this is my plan for the coming days:

  • Add keywording support to Entropy (package.mask for example)
  • Add multiple packages support to Entropy
  • Rewrite the Anaconda-Sabayon Linux interface on the installer to take advantages from Entropy
  • Work out 3.5 Loop1 releases with a LOT of exciting things!

Cheers!

Categories: Development Tags:

Entropy: 0.7.5 milestone

November 10th, 2007 lxnay No comments

I promised you that I would have blogged a little bit more. But this has been a very busy month, busy for multiple reasons, I’m in the process of completing a project for a client together with Michele ( that he should really thank me for having written a wonderful project description that let him to have a Nokia N810 with just 99€) and probably a more important thing for you, I’m finalizing the first Entropy beta release that (it’s a promise) will be shipped with Sabayon Linux 3.5. Unfortunately, as you may know, Equo is not the GUI part of Entropy, which I’ll start to write as soon as all the infrastructure is ready and stable.
So, last night I committed Entropy/Equo 0.7.5. Why is it a milestone? Because it is starting to bring something that no other package managers have:

Smart Applications (still experimental):
Using Equo, it’s possible to create a compressed package that self-contains the choosen application and all its dependencies. Just unpack it and double click on the executables. A small example:

# equo smart application k3b
>> * This is the list of the packages that would be worked out:
>> [from:sabayonlinux.org|SMART] – app-cdr/k3b-1.0.3
>> Would you like to create the packages above ? [Yes/No]
>> * Creating Smart Application from app-cdr/k3b-1.0.3
>> @@ Calculating dependencies…
>> @@ Packages needing install: 1
>> @@ Packages needing removal: 0
>> @@ Download size: 0b
>> @@ Freed disk space: 0b
>> @@ (1/1) >>> app-cdr/k3b-1.0.3
>> ## Package checksum matches.
>> @@ Fetch Complete.
>> * Unpacking main package k3b-1.0.3.tbz2
>> * Compressing smart application: app-cdr/k3b-1.0.3
>> /var/lib/entropy/smartapps/amd64/k3b-1.0.3-amd64.tbz2

Put k3b-1.0.3-amd64.tbz2 on your flash pen, and use it on all your Sabayon computers.
I just need to work out the dependencies filter (to not pull 400+ packages).

Smart Packages (already stable!):
Didn’t you feel lost when you’re using distribution X, don’t have Internet access and need to install application “X” that needs application “Y” that needs application “Z”,”N”,”M” ?
Developers that will use Entropy to create their own Sabayon repositories, could merge multiple packages into a single one. How? As easy as 1,2,3:

# equo smart package k3b amarok kdelibs
>> * This is the list of the packages that would be merged into a single one:
>> [from:sabayonlinux.org] – app-cdr/k3b-1.0.3
>> [from:sabayonlinux.org] – media-sound/amarok-1.4.7
>> [from:sabayonlinux.org] – kde-base/kdelibs-3.5.8-r10
>> Would you like to create the packages above ? [Yes/No]
>> * Creating merged Smart Package…
>> @@ Calculating dependencies…
>> @@ Packages needing install: 3
>> @@ Packages needing removal: 0
>> @@ Download size: 0b
>> @@ Freed disk space: 0b
>> @@ (1/3) >>> app-cdr/k3b-1.0.3
>> ## Package checksum matches.
>> @@ (2/3) >>> media-sound/amarok-1.4.7
>> ## Package checksum matches.
>> @@ (3/3) >>> kde-base/kdelibs-3.5.8-r10
>> ## Package checksum matches.
>> @@ Fetch Complete.
>> * app-cdr/k3b-1.0.3: collecting Entropy metadata
>> * media-sound/amarok-1.4.7: collecting Entropy metadata
>> * kde-base/kdelibs-3.5.8-r10: collecting Entropy metadata
>> * app-cdr/k3b-1.0.3: unpacking content
>> * media-sound/amarok-1.4.7: unpacking content
>> * kde-base/kdelibs-3.5.8-r10: unpacking content
>> * Compressing smart package
>> /var/lib/entropy/smartpackages/amd64/k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2

Obviously, Gentoo compatibility is always kept (if gentoo-compat option is enabled – it is by default).

What would happen when I’m going to install this smart package?

# equo install /var/lib/entropy/smartpackages/amd64/k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2 –ask
>> @@ Loading On-Disk Cache…
>> @@ These are the chosen packages:
>> # (1/3) app-cdr/k3b-1.0.3 >>> Dynamic database from k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2
>> Versioning: 1.0.3 / NoTag / 1 ===> 1.0.3 / NoTag / 1
>> Action: No update needed
>> # (2/3) media-sound/amarok-1.4.7 >>> Dynamic database from k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2
>> Versioning: 1.4.7 / NoTag / 7 ===> 1.4.7 / NoTag / 7
>> Action: No update needed
>> # (3/3) kde-base/kdelibs-3.5.8-r10 >>> Dynamic database from k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2
>> Versioning: 3.5.8-r10 / NoTag / 0 ===> 3.5.8-r10 / NoTag / 0
>> Action: No update needed
>> @@ Number of packages: 3
Would you like to continue with dependencies calculation ? [Yes/No]
>> @@ Calculating dependencies…
>> @@ These are the packages that would be merged:
>> ## [R] [k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2] app-cdr/k3b-1.0.3/1 [1.0.3/1]
>> ## [R] [k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2] media-sound/amarok-1.4.7/7 [1.4.7/7]
>> ## [R] [k3b-1.0.3+amarok-1.4.7+kdelibs-3.5.8-r10.tbz2] kde-base/kdelibs-3.5.8-r10/0 [3.5.8-r10/0]
>> @@ Packages needing install: 3
>> @@ Packages needing removal: 0
>> @@ Packages needing install: 0
>> @@ Packages needing reinstall: 3
>> @@ Packages needing update: 0
>> @@ Packages needing downgrade: 0
>> @@ Download size: 0b
>> @@ Freed disk space: 0b
Would you like to run the queue ? [Yes/No]

It’s Magic! And what about a smart package of multiple smart packages? Yeah, it’s possible.

Now, what else happened this month?

  • I’m completing the support of external triggers (internal ones already worked out). See them as Gentoo ebuilds’ pkg_preinst(), pkg_postinst(), pkg_prerm(), pkg_postrm()
  • I’ve completed disk caching support (+33% of speed)
  • I’ve rewritten/optimized all the SQL queries and switched to sqlite3 fetchone()and fetchall() methods (thanks Michele for all this stuff – he clearly made his commit 0, evidence)
  • I’ve completed Equo world upgrades (and tested on a real environment – Sabayon Linux 3.4F more about this in my next blog post)
  • I’ve added support for multiple database compression methods (currenty .bz2: our repository database is 4,4Mb! Impressive!)
  • I’ve optimized Equo error handling, execution time and speed (about +50% of speed overall)
  • A lot more, in this period about 300 big commits have been made by me

What else is needed to have a fully reliable Equo? Well, it’s already enough reliable, but I want it to be a quality application:

  • Release Sabayon Linux 3.5 Loop 1 with Entropy 0.7.5+
  • Switch dependencies tree generation function to a depgraph-alike one (thanks Daniel Robbins for directions)
  • Complete external triggers infrastructure (almost done)
  • installPackages() to pull conflicts depends too
  • Handle smart applications dependencies
  • Wiki Documentation
  • Entropy Manifest
  • Start to write Spritz (Equo GUI), forking YumEx
  • Split localization data into multiple packages and propose upstream (Gentoo), like kde-i18n-meta (already worked out), openoffice-i18n-meta and so on. For this task I would like to cooperate with Gentoo ebuilds maintainers (feel free to contact me if you’re interested)

I can add that Entropy Server is complete and working well (emerge entropy from our overlay).
It’s been a busy month, indeed.

Categories: Development Tags: