Friday, November 26, 2010

Cleaning up sites...

The last two weeks I've reserved time to clean up some of the mess that I left behind when I put the LFScript project on hold. Because it is now an active project again, it is important that people can find their way to the latest version of LFScript, but also know where they can ask for help or report their bugs.

Here are some of the changes I made:
  • I've created two video tutorials that explain the basic use of LFScript 4. The old tutorial describing lfscript2.sh, now has an annotation that refers people to the new video's.
  • The Assembla project page is dead. I no longer host code on it and you can't report bugs there.
  • I've started using Launchpad. A long time ago, when I was looking for a place to host code (and found Assembla), I had also started a project on Launchpad to test that site. I never used it and because it is difficult to get a project deleted on it, it just remained floating out there. Now, I've adopted it as the place for LFScript users to communicate with me. There is a bug reporting tool, and a place to ask questions about the project.
  • All releases (LFScript and Live CD) are now uploaded to my Wuala account. It is the perfect place for me to store and back-up large files, and I can share it with you. A copy of only the latest version of LFScript is mirrored on LFScript.org itself. lfscript.org/latest.tar.bz2 will always refer you to the latest version of LFScript, making it easy to fetch it from the command line.
  • Finally, I restyled lfscript.org. On November 3rd, when the site became live again it looked somewhat like it does now. But yesterday and the day before that, I redesigned and implemented it properly in XHTML. There are some minor changes coming up in the website code, but visually it should stay the way it is now.

Sunday, November 21, 2010

Video Tutorials

With over 12.000 hits on YouTube, my first video about LFScript 2 proved to be a success.

With people still asking for lfscript2.sh I guess the only way to make people aware of LFScript 4 is to make another video...

So here are my first two (!) video tutorials about LFScript 4:

Quick Start


Extend, Edit, Upgrade

Thursday, November 18, 2010

dbhierx.mod - Gnome build problems

A new revision of LFScript will be released today, which promises much more stable scripts. However, there is still a problem in a number of gnome scripts, which will not yet be fixed in revision 2.

During compilation, the packages in question seem to be unable to parse an external XML file called "dbhierx.mod", which results in a compilation failure.

The problem is only there if you have an active internet connection. So, to circumvent this problem, disconnect during the build of these packages:
  • gnome-user-docs
  • gnome-desktop
  • gnome-panel
  • gnome-applets
The problem may also exists in other packages, but these four are the only ones that are known to build using LFScript 4.

Tuesday, November 16, 2010

-C (in)sanity

I'm currently building binaries from scripts that will be included in LFScript4 v0.1, which will make up the fsOS 2 alpha Live CD, which will be released within the next couple of days.

Whenever I build a final set of binaries, I use the -C flag on ./lfscript which should identify broken scripts by resetting the build environment after every package built, thereby erasing any file that has not been archived. This prevents other packages to find incorrectly packaged software and thus somewhat ensures that software is built and packaged properly.

The problem...
It was my intention to also ensure that software does not link against any other software that is not a direct (or indirect) dependency. This was already implemented in LFScript 3, but I've just discovered that it is not (yet) properly implemented in LFScript 4.

Al tough the environment is reset properly, in LFScript 4, every package that is already built and is a dependency of any package specified with -x is installed back in the new environment. So, currently, it is possible that unspecified non-essential dependencies are linked to anyway, even though -C is used.

An example...
The best real example of this problem is building wget while also building any other package depending on openssl. Even though openssl is not an essential dependency of wget, if openssl is already built, wget will link to it. Later, you might decide to only install wget, which will them complain and fail to run because it can no longer find openssl.

It is for this reason that in the scripts provided with v0.1 of LFScript 4, I've (temporarily) added openssl as a dependency to wget, but I'm sure there are other packages which will have this problem.

The solution...?
The solution is for me to rewrite the relevant code in ./lfscript, but that will probably not happen soon. Because most people will only build software with LFScript that they will also install and use immediately, it is only a minor nuisance to most, if you even encounter it. Therefore, rewriting the code is not a priority at all.

If you want to know more...
If you are a programmer, and dependency handling is something you would like to know more about, you should take a look at topological sorting. It is the basis of dependency handling in LFScript (through a third party tool called tsort in LFScript 4, because it is quicker) and implementing an algorithm for it is a good exercise for beginning and moderate programmers.

Monday, November 8, 2010

Towards LFScript 4 v0.1

Let's take a look at some of the goals set for LFScript 4 v0.1:

ScriptFactory
The first two versions of LFScript had the instructions to create a (B)LFS system built into the main script. LFScript 3 changed that almost completely. Al tough the order in which to build LFS was still built in, every package was now contained in a separate script. A tool (written in Java) was then created to automatically generate these scripts from LFS and BLFS, so that the scripts could easily be updated without having to copy-paste everything by hand.

One of the goals of LFScript 4 is to have this tool (which was known as "AutoScripter") redesigned and rewritten, because since it's initial creation it has grown into a collection of hacks to keep it working with current versions of (B)LFS.

The first step into recreating AutoScripter has now been taken. The project has been renamed "ScriptFactory" and the usability of the tool has been improved. Also, I have decided to include a compiled copy of ScriptFactory and a third party tool called Avian (a compact, 1MB, Java Virtual Machine) with LFScript 4 so that those users that do not have Java installed may still be able to run ScriptFactory and any future LFScript project written in Java.

During further development of ScriptFactory, the Java based back-end will be replaced by a more generic XML parser and script writer and any (B)LFS related "hack" will be moved to patch files.

ScriptFactory (in it's current development state) will definitely be included in LFScript 4.0.1.

Stable BLFS scripts and Gnome
With the release of LFScript 4 v0.0 there has not been put much effort in updating ScriptFactory to produce stable BLFS scripts. I thought it to be more important to have an initial release now, rather than release a stable version next month.

So, now I am updating ScriptFactory and testing scripts more thoroughly. A major goal for v0.1 is to include stable scripts to build Gnome.


fsOS 2.0 Live CD
With stable BLFS scripts, I will be able to produce a new Live CD. The compiled operating system on the CD will be called "fsOS" (From Script Operating System), and it will carry version number 2.0 (because I will call the current LFScript-3.3 Live CD "fsOS 1.0").


So, when will LFScript 4 v0.1 be released? I don't know yet! If everything goes as planned it could be as soon as next Sunday...

Wednesday, November 3, 2010

LFScript is back

Today I released a development version of LFScript 4.

Altough the 'lfscript' executable itself should be working fine, I have not yet finished testing the scripts that are generated from "Beyond Linux From Scratch". Some software from BLFS that was available in LFScript 3.3 is not yet represented in LFScript 4, there are numerous small (non-critical) flaws in several scripts and different parts of documentation vary in quality and may not be up to date.

In short, LFScript 4 as a whole is not yet finished. But I wanted to get it out there anyway. I hope to release a more stable version (and a new Live CD containing a fully build system) within the next few weeks.