I cannot for the life of me compile l4linux

Daniel F. Haaland daniel_fairchild.haaland at mailbox.tu-dresden.de
Wed Jan 26 23:21:58 CET 2011


On Tue, Jan 25, 2011 at 10:37 PM, Adam Lackorzynski
<adam at os.inf.tu-dresden.de> wrote:
>
> On Tue Jan 25, 2011 at 05:38:59 +0100, Daniel F. Haaland wrote:
>> l4re and fiasco seem to be working just fine (tested by running the
>> hello world in qemu), but trying to add l4linux on top of l4re has
>> caused me a lot of grief and the following error message:
>>
>> Getting required compilation flags failed.
>> L4OBJ: /home/drxl/l4stuff/builddirs/L4Re-R27MP
>> L4_REQUIRED_MODS: stdlibs log l4re_c-util libio shmc
>> /home/drxl/l4stuff/src/l4linux/arch/l4/Makefile:301: *** Aborting..  Stop.
>> make: *** [sub-make] Error 2
>> zsh: exit 2     make O=$MY_L4LINUX_OBJDIR
>>
>> I've detailed how I got to that point in painstaking detail here:
>> http://blog.fairchild.dk/notes/2011/01/25/getting-l4linux-up-and-running/
>
> Times out.

Yeah, my Internet provider back in Denmark took a ~24 hour hiatus.
That'll teach me not to have just one single copy of my notes in a
remote location ;)

>
>> In short I've begged, bargained and even resorted to shell-foo like:
>>
>> So I guess I wouldn't mind a little help at this point.
>
> Did your L4Re build finish successfully?

Yes. I got l4linux to compile now. And I've updated my notes accordingly:
http://blog.fairchild.dk/notes/2011/01/25/getting-l4linux-up-and-running/

Feel free to take anything from these. I believe that they are a
little more user-friendly than the ones I've seen in your
documentation.
I've made them agnostic to directory layouts in order to make them
pure copy'n'pase, which I hope will speed up the process of getting
started for most and prevent some from introducing errors when
replacing bits of text like O=/your/build/directory

Turns out it was the package dependency system, or lack thereof which
was kicking me in the teeth. Repeatedly.
So I made this to be run in the src/l4/pkg directory:

cd $MY_L4STUFF/src/l4/pkg
alias l4_alias="`cat ../mk/aliases.d/* | sort -r | \
sed 's,\([^ ]*\)[ ]*\:=[ ]*\(.*\),tr \" \" \"\\\\n\" | \
sed \"s/^\1$/\2/\"\|,g' | tr -d \"\n\"` cat"
find . -type f -name 'Control' -exec grep -Hn requires {} \; |\
sed -e 's,^.*\:\(.*\)$,\1,g' | tr ' ' '\n' | \
l4_alias | sort -u | uniq \
| xargs -I ® svn update ®

I almost solved it with my first try, only I didn't know I should look
in the Control files of the packages and not the Makefiles and more
importantly I was completely oblivious to the existence of the package
aliases definition files in ../mk/aliases.d/

The fact that "svn update packagename" fails silently didn't help me
much either ;-)
Luckily I had the opportunity to ask Björn and Michael about how the
dependencies work yesterday in relation to lectures.

I guess there is three ways to solve this package dependency issue:
1) You just have to know these things to be allowed to work with l4 fiasco
2) Make sure to have every available package (making the prize of this
microkernel a macro-runtime? :-p)
3) Run the  above script (or perhaps the equivalent dependency
checking perl script you mentioned today?)

I think that making l4re more easily accessible for beginners would
benefit the project as a whole.

best regards
Daniel




More information about the l4-hackers mailing list