xen bootloader
PATCH 1/1 xen bootloader
hello Jeremy,
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
list of changes:
- make a dummy tools/pygrub/src/__init__.py
- extend filesystem abstraction by adding file_exist() method. this method is used to check for existent of a file given its name. now ext2fs implements this method.
- pygrub opens and parses /boot/grub/menu.lst or /boot/grub/grub.conf, in that order.
- add /usr/lib/python to system path (see pygrub). without this change, pygrub cannot find grub python package.
- remove few blank lines
$ diffstat xen-grub.patch __init__.py | 1 fsys/__init__.py | 5 +++- fsys/ext2/ext2module.c | 51 ++++++++++++++++++++++++++++++++++++++++--------- pygrub | 12 +++++++++-- 4 files changed, 57 insertions(+), 12 deletions(-)
I wonder why the patch you sent to list is in CR/LF format? arent you programming on Windows, are you ;-). could you please remove them next time ?
regards,
aq
tools/pygrub/src/fsys/ext2/ext2module.c +42 -9
@@ -174,6 +174,25 @@ ext2_file_open (Ext2Fs *fs, char * name,return (PyObject *) file; } +static PyObject * +ext2_file_exist (Ext2Fs *fs,char * name) +{ +int err; +ext2_ino_t ino; +Ext2File * file; + + file = (Ext2File *)PyObject_NEW (Ext2File, &Ext2FileType); + file->file =NULL ; + + err =ext2fs_namei_follow (fs->fs,EXT2_ROOT_INO ,EXT2_ROOT_INO , name, &ino); +if (err) { +Py_INCREF (Py_False); +return Py_False; + } +Py_INCREF (Py_True); +return Py_True; +} +/* ext2fs object */ static PyObject *
@@ -231,6 +250,18 @@ ext2_fs_open_file (Ext2Fs *fs, PyObjectreturn ext2_file_open (fs, name, flags); } +static PyObject * +ext2_fs_file_exist (Ext2Fs *fs,PyObject *args,PyObject *kwargs) +{ +static char *kwlist[] = {"name" ,NULL }; +char * name; + +if (!PyArg_ParseTupleAndKeywords (args, kwargs,"s" , kwlist, &name)) +return NULL ; + +return ext2_file_exist (fs, name); +} +static void ext2_fs_dealloc (Ext2Fs * fs) {
@@ -249,6 +280,9 @@ static struct PyMethodDef Ext2FsMethods[ {"open_file" , (PyCFunction ) ext2_fs_open_file, METH_VARARGS|METH_KEYWORDS, NULL }, + { "file_exist", + (PyCFunction ) ext2_fs_file_exist, + METH_VARARGS|METH_KEYWORDS, NULL }, { NULL, NULL, 0, NULL } };
@@ -312,21 +346,20 @@ ext2_fs_new(PyObject *o, PyObject *args,return (PyObject *)pfs; } -static struct PyMethodDef Ext2ModuleMethods[] = { {"Ext2Fs" , (PyCFunction ) ext2_fs_new,METH_VARARGS |METH_KEYWORDS ,NULL }, {NULL ,NULL ,0 ,NULL } }; -void init_pyext2 (void ) { -PyObject *m, *d; +PyObject *m; m =Py_InitModule ("_pyext2" , Ext2ModuleMethods); - d =PyModule_GetDict (m); - -/* o = PyObject_NEW(PyObject, yExt2FsConstructorType); -PyDict_SetItemString(d, "PyExt2Fs", o); -Py_DECREF(o);*/ - +/* +* PyObject *d; +* d = PyModule_GetDict(m); +* o = PyObject_NEW(PyObject, yExt2FsConstructorType); +* PyDict_SetItemString(d, "PyExt2Fs", o); +* Py_DECREF(o); +*/ }
tools/pygrub/src/fsys/__init__.py +4 -1
@@ -49,7 +49,10 @@ class FileSystem(object): should look similar to a native file object.""" raise RuntimeError, "open_file not implemented" - + def file_exist(self, file): + """Check to see if the give file is existed. + Return true if file existed, return false otherwise.""" + raise RuntimeError, "file_exist not implemented" mydir = sys.modules['grub.fsys'].__path__[0] for f in os.listdir(mydir):
tools/pygrub/src/__init__.py +1 -0
@@ -0,0 +1 @@ +
tools/pygrub/src/pygrub +10 -2
@@ -19,6 +19,8 @@ import logging import curses, _curses, curses.wrapper import getopt +sys.path = [ '/usr/lib/python' ] + sys.path + import grub.GrubConf import grub.fsys
@@ -78,7 +80,6 @@ def is_disk_image(file): if len(buf) >= 512 and struct.unpack("H", buf[0x1fe: 0x200]) == (0xaaff): return True return False - def get_config(fn): if not os.access(fn, os.R_OK):
@@ -97,7 +98,14 @@ def get_config(fn): break if fs is not None: - f = fs.open_file("/boot/grub/grub.conf") + if fs.file_exist("/boot/grub/menu.lst"): + grubfile = "/boot/grub/menu.lst" + elif fs.file_exist("/boot/grub/grub.conf"): + grubfile = "/boot/grub/grub.conf" + else: + raise RuntimeError, "we couldn't find /boot/grub{menu.lst,grub.conf} " + \ + "in the image provided. halt!" + f = fs.open_file(grubfile) buf = f.read() f.close() fs.close()
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
sorry, I forgot to note that the patch I have just sent to list should be applied on top of the last patch of Jeremy.
regards,
aq
Quoted 34 lines · aq
hello Jeremy,
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
list of changes:
- make a dummytools/pygrub/src/__init__.py
- extend filesystem abstraction by addingfile_exist()method. this method is used to check for existent of a file given its name. now ext2fs implements this method.
- pygrub opens and parses/boot/grub/menu.lstor/boot/grub/grub.conf, in that order.
- add/usr/lib/pythonto system path (see pygrub). without this change, pygrub cannot find grub python package.
- remove few blank lines$ diffstat xen-grub.patch __init__.py | 1 fsys/__init__.py | 5 +++- fsys/ext2/ext2module.c | 51 ++++++++++++++++++++++++++++++++++++++++--------- pygrub | 12 +++++++++-- 4 files changed, 57 insertions(+), 12 deletions(-)Signed-off-by Nguyen Anh Quynh <[email protected]>I wonder why the patch you sent to list is in CR/LF format? arent you programming on Windows, are you ;-). could you please remove them next time ?
regards,
aq
Quoted 4 lines · aq
hello Jeremy,
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
The patch had ^M line endings which stopped it applying until I removed them. Please make sure patches don't have that other operating system's line endings.
Thanks,
Mike
Quoted 8 lines · Mike Wray
Quoted 4 lines · aq
hello Jeremy,
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
The patch had ^M line endings which stopped it applying until I removed them. Please make sure patches don't have that other operating system's line endings.
Then dont forget to blame Jeremy for this problem. Those ^M are introduced in his first patch. I just inherited his code ;-)
Seriously, I will recheck the patch next time.
Thanks,
aq
Quoted 2 lines · aq
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
Thanks. Sorry for the delay in responding, I've been underwater with stuff for FC4 test3.
Quoted 2 lines
list of changes:
- make a dummytools/pygrub/src/__init__.py
I still don't know why this didn't work, but thanks.
Quoted 3 lines
- extend filesystem abstraction by adding
file_exist()method. this method is used to check for existent of a file given its name. now ext2fs implements this method.
Great, thanks. My only comment about the ext2fs code for this is that you might as well inline the contents of ext2_file_exist in ext2fs_file_exist... you don't gain anything by having that for reuse that I can see.
Quoted 4 lines
- pygrub opens and parses
/boot/grub/menu.lstor/boot/grub/grub.conf, in that order.
- add/usr/lib/pythonto system path (see pygrub). without this change, pygrub cannot find grub python package.
Per the other changes I submitted a week or so ago, you want to append this to the path, not prepend it.
Quoted 1 line
- remove few blank lines
Fair enough.
Quoted 8 lines
$ diffstat xen-grub.patch __init__.py | 1 fsys/__init__.py | 5 +++- fsys/ext2/ext2module.c | 51 ++++++++++++++++++++++++++++++++++++++++--------- pygrub | 12 +++++++++-- 4 files changed, 57 insertions(+), 12 deletions(-)Signed-off-by Nguyen Anh Quynh <[email protected]>
I'll apply this to my local tree. Mike -- based on your later mail, should I gather that you've applied things to your tree and are in the process of pushing to -unstable? Or should I go about trying to do something more sane to maintain this on the side for a while?
Quoted 3 lines
I wonder why the patch you sent to list is in CR/LF format? arent you programming on Windows, are you ;-). could you please remove them next time ?
Hrmm, I have no clue either. The previous patch appears to not be in DOS format but the second one is. And they should have been exported identically from my local bk repository. I'll double-check next time before sending.
Jeremy
Quoted 12 lines · Jeremy Katz
Quoted 2 lines · aq
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
Thanks. Sorry for the delay in responding, I've been underwater with stuff for FC4 test3.
Quoted 2 lines
list of changes:
- make a dummytools/pygrub/src/__init__.pyI still don't know why this didn't work, but thanks.
Quoted 8 lines
Quoted 3 lines
- extend filesystem abstraction by adding
file_exist()method. this method is used to check for existent of a file given its name. now ext2fs implements this method.Great, thanks. My only comment about the ext2fs code for this is that you might as well inline the contents of
ext2_file_existinext2fs_file_exist... you don't gain anything by having that for reuse that I can see.
I agree.
By the way, I am working on xfs/jfs/reiserfs module for this code. Hopefully I will finish soon.
regards,
aq
Quoted 43 lines · Jeremy Katz
Quoted 2 lines · aq
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
Thanks. Sorry for the delay in responding, I've been underwater with stuff for FC4 test3.
Quoted 2 lines
list of changes:
- make a dummytools/pygrub/src/__init__.pyI still don't know why this didn't work, but thanks.
Quoted 3 lines
- extend filesystem abstraction by adding
file_exist()method. this method is used to check for existent of a file given its name. now ext2fs implements this method.Great, thanks. My only comment about the ext2fs code for this is that you might as well inline the contents of
ext2_file_existinext2fs_file_exist... you don't gain anything by having that for reuse that I can see.Quoted 4 lines
- pygrub opens and parses
/boot/grub/menu.lstor/boot/grub/grub.conf, in that order.
- add/usr/lib/pythonto system path (see pygrub). without this change, pygrub cannot find grub python package.Per the other changes I submitted a week or so ago, you want to append this to the path, not prepend it.
Quoted 1 line
- remove few blank lines
Fair enough.
Quoted 7 lines
$ diffstat xen-grub.patch __init__.py | 1 fsys/__init__.py | 5 +++- fsys/ext2/ext2module.c | 51 ++++++++++++++++++++++++++++++++++++++++--------- pygrub | 12 +++++++++-- 4 files changed, 57 insertions(+), 12 deletions(-)
Quoted 7 lines
Quoted 1 line
Signed-off-by Nguyen Anh Quynh <[email protected]>I'll apply this to my local tree. Mike -- based on your later mail, should I gather that you've applied things to your tree and are in the process of pushing to -unstable? Or should I go about trying to do something more sane to maintain this on the side for a while?
Yes, I've applied the patch and it should be making its way out to unstable, possibly today.
BTW, I had to install e2fsprogs-devel before it would compile, so I added a note that you need that in a README.
Quoted 9 lines
Quoted 3 lines
I wonder why the patch you sent to list is in CR/LF format? arent you programming on Windows, are you ;-). could you please remove them next time ?
Hrmm, I have no clue either. The previous patch appears to not be in DOS format but the second one is. And they should have been exported identically from my local bk repository. I'll double-check next time before sending.
Mike
Quoted 2 lines · Mike Wray
Yes, I've applied the patch and it should be making its way out to unstable, possibly today.
Cool, thanks.
Quoted 2 lines
BTW, I had to install e2fsprogs-devel before it would compile, so I added a note that you need that in a README.
When other fsystems come along, we'll probably end up wanting to check for availability of the libraries and only build support for the filesystems that we can. Unfortunately, I'm going to have to look harder at distutils to see if there is a clean way to do that :)
Jeremy
Quoted 47 lines · Mike Wray
Quoted 46 lines · Jeremy Katz
Quoted 2 lines · aq
Here is a patch to fix few problems in Xen bootloader you sent to the list yesterday.
Thanks. Sorry for the delay in responding, I've been underwater with stuff for FC4 test3.
Quoted 2 lines
list of changes:
- make a dummytools/pygrub/src/__init__.pyI still don't know why this didn't work, but thanks.
Quoted 3 lines
- extend filesystem abstraction by adding
file_exist()method. this method is used to check for existent of a file given its name. now ext2fs implements this method.Great, thanks. My only comment about the ext2fs code for this is that you might as well inline the contents of
ext2_file_existinext2fs_file_exist... you don't gain anything by having that for reuse that I can see.Quoted 4 lines
- pygrub opens and parses
/boot/grub/menu.lstor/boot/grub/grub.conf, in that order.
- add/usr/lib/pythonto system path (see pygrub). without this change, pygrub cannot find grub python package.Per the other changes I submitted a week or so ago, you want to append this to the path, not prepend it.
Quoted 1 line
- remove few blank lines
Fair enough.
Quoted 8 lines
$ diffstat xen-grub.patch __init__.py | 1 fsys/__init__.py | 5 +++- fsys/ext2/ext2module.c | 51 ++++++++++++++++++++++++++++++++++++++++--------- pygrub | 12 +++++++++-- 4 files changed, 57 insertions(+), 12 deletions(-)Signed-off-by Nguyen Anh Quynh <[email protected]>
Quoted 7 lines
Quoted 4 lines
I'll apply this to my local tree. Mike -- based on your later mail, should I gather that you've applied things to your tree and are in the process of pushing to -unstable? Or should I go about trying to do something more sane to maintain this on the side for a while?
Yes, I've applied the patch and it should be making its way out to unstable, possibly today.
Mike, will you push those code to -unstable soon? I am looking forward to it. ( I am having few improvements, but not sure what to patch against)
thank you,
aq
Quoted 5 lines · aq
...
Mike, will you push those code to -unstable soon? I am looking forward to it. ( I am having few improvements, but not sure what to patch against)
I've applied the patch and some of your fixes locally. It's in the pipeline for unstable, I can't push directly myself.
Mike