Fix grub-emu build on FreeBSD.

* Makefile.util.def (grub-mount): Add LIBGEOM to ldadd.
* grub-core/net/drivers/emu/emunet.c: Only include Linux-specific
headers on Linux.
(GRUB_MOD_INIT): Return immediately on non-Linux platforms; this
implementation is currently Linux-specific.
* util/getroot.c (exec_pipe): Define only on Linux or when either
libzfs or libnvpair is unavailable.
(find_root_devices_from_poolname): Remove unused path variable.
This commit is contained in:
Colin Watson 2012-09-22 21:19:58 +01:00
parent 86d08fdb18
commit 794c8c3375
4 changed files with 29 additions and 4 deletions

View file

@ -1,3 +1,16 @@
2012-09-22 Colin Watson <cjwatson@ubuntu.com>
Fix grub-emu build on FreeBSD.
* Makefile.util.def (grub-mount): Add LIBGEOM to ldadd.
* grub-core/net/drivers/emu/emunet.c: Only include Linux-specific
headers on Linux.
(GRUB_MOD_INIT): Return immediately on non-Linux platforms; this
implementation is currently Linux-specific.
* util/getroot.c (exec_pipe): Define only on Linux or when either
libzfs or libnvpair is unavailable.
(find_root_devices_from_poolname): Remove unused path variable.
2012-09-19 Colin Watson <cjwatson@ubuntu.com> 2012-09-19 Colin Watson <cjwatson@ubuntu.com>
* grub-core/partmap/msdos.c (pc_partition_map_embed): Revert * grub-core/partmap/msdos.c (pc_partition_map_embed): Revert

View file

@ -266,7 +266,7 @@ program = {
ldadd = libgrubgcry.a; ldadd = libgrubgcry.a;
ldadd = libgrubkern.a; ldadd = libgrubkern.a;
ldadd = grub-core/gnulib/libgnu.a; ldadd = grub-core/gnulib/libgnu.a;
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) -lfuse'; ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse';
condition = COND_GRUB_MOUNT; condition = COND_GRUB_MOUNT;
}; };

View file

@ -21,8 +21,10 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <grub/net.h> #include <grub/net.h>
#include <sys/types.h> #include <sys/types.h>
#include <linux/if.h> #ifdef __linux__
#include <linux/if_tun.h> # include <linux/if.h>
# include <linux/if_tun.h>
#endif /* __linux__ */
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
@ -97,6 +99,7 @@ static struct grub_net_card emucard =
GRUB_MOD_INIT(emunet) GRUB_MOD_INIT(emunet)
{ {
#ifdef __linux__
struct ifreq ifr; struct ifreq ifr;
fd = open ("/dev/net/tun", O_RDWR | O_NONBLOCK); fd = open ("/dev/net/tun", O_RDWR | O_NONBLOCK);
if (fd < 0) if (fd < 0)
@ -110,6 +113,10 @@ GRUB_MOD_INIT(emunet)
return; return;
} }
grub_net_card_register (&emucard); grub_net_card_register (&emucard);
#else /* !__linux__ */
fd = -1;
return;
#endif /* __linux__ */
} }
GRUB_MOD_FINI(emunet) GRUB_MOD_FINI(emunet)

View file

@ -220,6 +220,9 @@ xgetcwd (void)
#if !defined (__MINGW32__) && !defined (__CYGWIN__) && !defined (__GNU__) #if !defined (__MINGW32__) && !defined (__CYGWIN__) && !defined (__GNU__)
#if (defined (__linux__) || \
!defined (HAVE_LIBZFS) || !defined (HAVE_LIBNVPAIR))
static pid_t static pid_t
exec_pipe (char **argv, int *fd) exec_pipe (char **argv, int *fd)
{ {
@ -258,6 +261,8 @@ exec_pipe (char **argv, int *fd)
} }
} }
#endif
static char ** static char **
find_root_devices_from_poolname (char *poolname) find_root_devices_from_poolname (char *poolname)
{ {
@ -269,7 +274,7 @@ find_root_devices_from_poolname (char *poolname)
zpool_handle_t *zpool; zpool_handle_t *zpool;
libzfs_handle_t *libzfs; libzfs_handle_t *libzfs;
nvlist_t *config, *vdev_tree; nvlist_t *config, *vdev_tree;
nvlist_t **children, **path; nvlist_t **children;
unsigned int nvlist_count; unsigned int nvlist_count;
unsigned int i; unsigned int i;
char *device = 0; char *device = 0;