tools: Move bootloaders to libexec directory
PATCH 1/1 tools: Move bootloaders to libexec directory
pygrub and xenpvnetboot are meant to be run by tools, and not by the user, and thus should be in /usr/lib/xen/bin rather than /usr/bin. This patch series:
* Causes libxl to look in the libexec dir if a full path is not specified
* Moves pygrub and xenpvnetboot into the libexec dir
* For compatibility with existing configs, puts a link to pygrub in /usr/bin
* Warns the user that /usr/bin/pygrub is deprecated
PATCH 1/1 libxl: Look for bootloader in libexec path
If the full path for a bootloader (such as pygrub or xenpvnetboot) is not given, look for it in the libexec path.
tools/libxl/libxl_bootloader.c +9 -1
@@ -333,6 +333,7 @@ int libxl_run_bootloader(libxl_ctx *ctx,char tempdir_template[] ="/var/run/libxl/bl.XXXXXX" ;char *tempdir; +const char *bootloader =NULL ;char *dom_console_xs_path;char dom_console_slave_tty_path[PATH_MAX ];
@@ -397,6 +398,13 @@ int libxl_run_bootloader(libxl_ctx *ctx, goto out_close; } + bootloader =libxl__abs_path (gc, info->u.pv.bootloader, +libxl__libexec_path ()); +if ( bootloader ==NULL ) { + rc =ERROR_NOMEM ; + goto out_close; + } +/* * We need to present the bootloader's tty as a pty slave that xenconsole * can access. Since the bootloader itself needs a pty slave,
@@ -417,7 +425,7 @@ int libxl_run_bootloader(libxl_ctx *ctx, dom_console_xs_path =libxl__sprintf (gc,"%s/console/tty" ,libxl__xs_get_dompath (gc, domid));libxl__xs_write (gc,XBT_NULL , dom_console_xs_path,"%s" , dom_console_slave_tty_path); - pid =fork_exec_bootloader (&bootloader_fd, info->u.pv.bootloader, args); + pid =fork_exec_bootloader (&bootloader_fd, bootloader, args);if (pid <0 ) { goto out_close; }
PATCH 1/1 tools: Install pv bootloaders in libexec rather than /usr/bin
In reply to George Dunlappygrub and xenpvnetboot are meant to be run by tools, and not by the user, and thus should be in /usr/lib/xen/bin rather than /usr/bin.
Because most config files will still have an absolute path pointing to /usr/bin/pygrub, make a symbolic link that we will deprecate.
tools/misc/Makefile +6 -1
@@ -18,7 +18,7 @@ SUBDIRS-$(CONFIG_LOMOUNT) += lomount SUBDIRS-$(CONFIG_MINITERM) += miniterm SUBDIRS := $(SUBDIRS-y) -INSTALL_BIN-y := xencons xenpvnetboot +INSTALL_BIN-y := xencons INSTALL_BIN-$(CONFIG_X86) += xen-detect INSTALL_BIN := $(INSTALL_BIN-y)
@@ -27,6 +27,9 @@ INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx INSTALL_SBIN-$(CONFIG_MIGRATE) += xen-hptool INSTALL_SBIN := $(INSTALL_SBIN-y) +INSTALL_PRIVBIN-y := xenpvnetboot +INSTALL_PRIVBIN := $(INSTALL_PRIVBIN-y) + # Include configure output (config.h) to headers search path CFLAGS += -I$(XEN_ROOT)/tools
@@ -41,8 +44,10 @@ build: $(TARGETS) install: build $(INSTALL_DIR) $(DESTDIR)$(BINDIR) $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) + $(INSTALL_DIR) $(DESTDIR)$(PRIVATE_BINDIR) $(INSTALL_PYTHON_PROG) $(INSTALL_BIN) $(DESTDIR)$(BINDIR) $(INSTALL_PYTHON_PROG) $(INSTALL_SBIN) $(DESTDIR)$(SBINDIR) + $(INSTALL_PYTHON_PROG) $(INSTALL_PRIVBIN) $(DESTDIR)$(PRIVATE_BINDIR) set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d install-recurse; done .PHONY: clean
tools/pygrub/Makefile +4 -2
@@ -11,9 +11,11 @@ build: .PHONY: install install: all CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py install \ - $(PYTHON_PREFIX_ARG) --root="$(DESTDIR)" --force - $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(BINDIR)/pygrub + $(PYTHON_PREFIX_ARG) --root="$(DESTDIR)" \ + --install-scripts=$(DESTDIR)/$(PRIVATE_BINDIR) --force + $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(PRIVATE_BINDIR)/pygrub $(INSTALL_DIR) $(DESTDIR)/var/run/xend/boot + ln -sf $(PRIVATE_BINDIR)/pygrub $(DESTDIR)/$(BINDIR) .PHONY: clean clean:
PATCH 1/1 libxl: Warn that /usr/bin/pygrub is deprecated
In reply to George Dunlaptools/libxl/libxl_bootloader.c +6 -0
@@ -15,6 +15,7 @@#include "libxl_osdeps.h" /* must come before any other headers */ #include <termios.h> +#include <string.h> #include "libxl_internal.h"
@@ -398,6 +399,11 @@ int libxl_run_bootloader(libxl_ctx *ctx, goto out_close; } +if ( !strncmp (info->u.pv.bootloader,"/usr/bin/pygrub" ,20 ) ) +LIBXL__LOG (ctx,LIBXL__LOG_WARNING , +"WARNING: bootloader='/usr/bin/pygrub' " \ +"is deprecated; use bootloader='pygrub' instead" ); + bootloader =libxl__abs_path (gc, info->u.pv.bootloader,libxl__libexec_path ());if ( bootloader ==NULL ) {