Skip to contentSkip to conversation

reenable pygrub build

PATCH New Jeremy Katz 1 participant 1 message Oct 7, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reenable pygrub build

The attached re-enables the pygrub build and fixes the build with older e2fsprogs (tested on RHEL4 with e2fsprogs-1.35 and rawhide with e2fsprogs-1.38)

Jeremy

tools/Makefile +1 -1
diff -r 4b9c9b85b3a5 tools/Makefile
@@ -22,7 +22,7 @@
 # These don't cross-compile
 ifeq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
 SUBDIRS += python
-#SUBDIRS += pygrub
+SUBDIRS += pygrub
 endif
 
 .PHONY: all install clean check check_clean ioemu eioemuinstall ioemuclean
tools/pygrub/Makefile +1 -1
diff -r 4b9c9b85b3a5 tools/pygrub/Makefile
@@ -15,4 +15,4 @@
 endif
 
 clean:
-	rm -rf build *.pyc *.pyo *.o *.a *~
+	rm -rf build tmp *.pyc *.pyo *.o *.a *~
tools/pygrub/setup.py +14 -0
diff -r 4b9c9b85b3a5 tools/pygrub/setup.py
@@ -1,5 +1,8 @@
 from distutils.core import setup, Extension
+from distutils.ccompiler import new_compiler
 import os
+import sys
+import time
 
 extra_compile_args  = [ "-fno-strict-aliasing", "-Wall", "-Werror" ]
 
@@ -7,9 +10,20 @@
 fsys_pkgs = []
 
 if os.path.exists("/usr/include/ext2fs/ext2_fs.h"):
+    ext2defines = []
+    cc = new_compiler()
+    cc.add_library("ext2fs")
+    if cc.has_function("ext2fs_open2"):
+        ext2defines.append( ("HAVE_EXT2FS_OPEN2", None) )
+    else:
+        sys.stderr.write("WARNING: older version of e2fsprogs installed, not building full\n")
+        sys.stderr.write("         disk support for ext2.\n")
+        time.sleep(2)
+        
     ext2 = Extension("grub.fsys.ext2._pyext2",
                      extra_compile_args = extra_compile_args,
                      libraries = ["ext2fs"],
+                     define_macros = ext2defines,
                      sources = ["src/fsys/ext2/ext2module.c"])
     fsys_mods.append(ext2)
     fsys_pkgs.append("grub.fsys.ext2")
tools/pygrub/src/fsys/ext2/ext2module.c +5 -0
diff -r 4b9c9b85b3a5 tools/pygrub/src/fsys/ext2/ext2module.c
@@ -229,8 +229,13 @@
         snprintf(offsetopt, 29, "offset=%d", offset);
     }
 
+#ifdef HAVE_EXT2FS_OPEN2
     err = ext2fs_open2(name, offsetopt, flags, superblock, block_size, 
                        unix_io_manager, &efs);
+#else
+    err = ext2fs_open(name, flags, superblock, block_size,
+                      unix_io_manager, &efs);
+#endif
     if (err) {
         PyErr_SetString(PyExc_ValueError, "unable to open file");
         return NULL;

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel