build directory outside of Genode dir xor vim error

Norman Feske norman.feske at ...1...
Mon Jan 28 15:06:59 CET 2013

Hi Paul,

> First change: staging rather than master.

this is not recommended. We often change the commits that are on staging
but not yet merged into master. Hence, using staging will be pretty
messy on your side. If you like to use a particular commit that is only
available on staging, better create a new branch of master and
cherry-pick the single commit:

  git checkout -b <name-of-your-branch> genodelabs/master
  git cherry-pick <commit-id>

> Second change: try make run/noux_bash
> Third change:
> ./tool/create_builddir linux_x86 BUILD_DIR="./build.lx"
> rather than the usual:
> ./tool/create_builddir linux_x86 BUILD_DIR="build.lx"

Both variants should work. I just tried them - they produce exactly the
same build directory.

> About third change, result in make run/noux_bash to:
>   Program core/core
> make[1]: Leaving directory `/home/paul/build.lx'
> genode build completed

I think you missed some steps that are needed prior running the
run/ script.

First, can you check that you enabled the 'libports', 'ports', and
'gems' repositories in your '<build-dir>/etc/build.conf' file?

You will also need to download several 3rd-party source codes in
'libports' and 'ports' respectively. I guess that the build system has
printed a couple of messages like the following, has it?

 Skip target noux-pkg/bash because it requires prepare_bash
 Skip target noux-pkg/coreutils because it requires prepare_coreutils
 Skip target noux-pkg/vim because it requires prepare_vim

These messages indicate that the said 3rd-party codes are not available.
To rectify the problem, please issue the following commands:

  cd <genode-dir>/ports
  make prepare PKG='bash coreutils vim'

You will also need to download some code in libports, i.e., the libc and

  cd <genode-dir>/libports
  make prepare PKG='libc ncurses'

> find: `bin/coreutils/': No such file or directory

That is because of the missing 'make prepare' steps mentioned above.

> couldn't open "bin/vim/share/vim/vimrc": no such file or directory

When built successfully, the so-called noux packages (such as coreutils,
bash, and vim) will end up being installed at
'<build-dir>/bin/<noux-package-name>'. Because the build system skipped
those packages in your case, these directories do not exist. However,
the run script expects them to be present after having completed the
build step. When it tries to generate a vimrc file at the
'<build-dir>/bin/vim/share/vim/vimrc', it fails because the surrounding
directory does not exist.

Maybe it would be a good idea to let the run script detect this
condition and print a more meaningful error message?

> I need my own vim configuration file?

The run script generates a vim configuration file for you.

> I am not too used to vim... I prefer nano.

The '' script generates a system that consists only of
coreutils, bash, and vim. It is just an example and is meant as a
starting point for creating customized systems. For example, the
noux_tool_chain* scripts describe much more sophisticated system
scenarios including gcc and binutils.

There is currently no noux package for nano. So you would need to port
nano first before being able to integrate it. If you like to give it a
try, look for the way how a simple noux package such as GNU make is
integrated in the 'ports' repository. Depending on the package, the
porting work may involve slight refinements of the libc or noux, or will
even require you to port additional libraries first. Of course, you will
also need to modify the run script accordingly. You are welcome to give
it a shot.

Or alternatively, how about taking the lack of nano as a wonderful
opportunity to learn (and learn loving) vim, hehe... :-)


Dr.-Ing. Norman Feske
Genode Labs ·

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

More information about the users mailing list