grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to add a new command


From: adrian15
Subject: Re: how to add a new command
Date: Fri, 15 Jun 2007 14:48:31 +0200
User-agent: Thunderbird 1.5.0.8 (X11/20061107)

Alex Roman escribió:
On 12/06/07, adrian15 <address@hidden> wrote:
Once I write a new command like map.c or pause.c how am I supposed to
add it to the standard grub?
Should I write the makefiles manually?! or should I use some of the .sh
files at the grub2 source code root folder?

I've been editing the .rmk files in conf/ which should cause the .mk
files to get updated (at least that's my understanding of it, so far).

Make sure the command is placed in the right Makefile... I had the
problem where I was including the command in both grub-emu and
grub/i386-pc and grub-emu didn't link due to undefined symbols
(because those didn't exist in grub-emu).


Cheers!


I've finally edit conf/i386-pc.rmk, copy-pasted the play.c code and
find/replace with map.c.


Then I run make:
make prompts this:


address@hidden:~/Desktop/gnu/grub2/grub2_2007_05_31_map$ make
if test "x" = x; then \
          touch conf/i386-pc.mk; \
        else \
           ./genmk.rb < conf/i386-pc.rmk > conf/i386-pc.mk; \
        fi
make: No se hace nada para `all'.

If you check: i386-pc.mk then there is no reference to:
"/map.c"

If I delete i386-pc.mk and run make again:

address@hidden:~/Desktop/gnu/grub2/grub2_2007_05_31_map$ make
Makefile:111: conf/i386-pc.mk: No existe el fichero o el directorio
if test "x" = x; then \
          touch conf/i386-pc.mk; \
        else \
           ./genmk.rb < conf/i386-pc.rmk > conf/i386-pc.mk; \
        fi
make: No se hace nada para `all'.

and a empty i386-pc.mk file is created.


I check genmk.rb and it is not an executable file.

I give it execution permission.
I delete the empty i386-pc.mk file and run make again:


Makefile:111: conf/i386-pc.mk: No existe el fichero o el directorio
if test "x" = x; then \
          touch conf/i386-pc.mk; \
        else \
           ./genmk.rb < conf/i386-pc.rmk > conf/i386-pc.mk; \
        fi
make: No se hace nada para `all'.

Now if I run manually:

ruby genmk.rb < conf/i386-pc.rmk > conf/i386-pc.mk

Then conf/i386-pc.mk has the map.c string and then make reads the map.c
file at last.

I think the problem is in the Makefile here:

        if test "x$(RUBY)" = x; then \
          touch $@; \
        else \
          $(RUBY) $(srcdir)/genmk.rb < $< > $@; \
        fi


and if you check above the definitions you get:

RUBY =

Let me do some checks...

Running:

make distclean
./configure

generates another Makefile which does contain:

RUBY = /usr/bin/ruby

and why's that?

Because meanwhile I was compiling I've done a symbolic link from
/usr/bin/ruby to /usr/bin/ruby1.9

I mean... I've installed ruby1.9 as you requested but your grub2 isn't
unable to use it.

Now it seems that everything goes fine.

Should not be adviced in the INSTALL or README file that you have to put a symlink from /usr/bin/ruby to /usr/bin/ruby1.9 ??

adrian15




reply via email to

[Prev in Thread] Current Thread [Next in Thread]