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

[Xen-devel] [PATCH LIVEPATCH-BUILD-TOOLS] Support "make install"



Add rules to support using "make install".

Use "make install DESTDIR=... PREFIX=..." to customize the installation
path.

Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
---
 Makefile        | 10 ++++++++++
 livepatch-build | 20 +++++++++++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index aa5d5b0..f96b150 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,9 @@
 SHELL = /bin/sh
 CC    = gcc
+INSTALL = install
+PREFIX ?= /usr/local
+BINDIR = $(DESTDIR)$(PREFIX)/bin
+LIBEXECDIR = $(DESTDIR)$(PREFIX)/libexec/livepatch-build-tools
 
 .PHONY: all install clean
 .DEFAULT: all
@@ -25,5 +29,11 @@ create-diff-object: $(CREATE_DIFF_OBJECT_OBJS)
 prelink: $(PRELINK_OBJS)
        $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
 
+install: all
+       $(INSTALL) -d $(LIBEXECDIR)
+       $(INSTALL) $(TARGETS) livepatch-gcc $(LIBEXECDIR)
+       $(INSTALL) -d $(BINDIR)
+       $(INSTALL) livepatch-build $(BINDIR)
+
 clean:
        $(RM) $(TARGETS) $(CREATE_DIFF_OBJECT_OBJS) $(PRELINK_OBJS) *.d insn/*.d
diff --git a/livepatch-build b/livepatch-build
index 8dc8889..5ef2c88 100755
--- a/livepatch-build
+++ b/livepatch-build
@@ -49,6 +49,18 @@ die() {
     exit 1
 }
 
+find_tools() {
+    if [[ -e "$SCRIPTDIR/create-diff-object" ]]; then
+        # Running from source tree
+        TOOLSDIR="$SCRIPTDIR"
+    elif [[ -e 
"$SCRIPTDIR/../libexec/livepatch-build-tools/create-diff-object" ]]; then
+        # Running installed
+        TOOLSDIR="$(readlink -f $SCRIPTDIR/../libexec/livepatch-build-tools)"
+    else
+        return 1
+    fi
+}
+
 function make_patch_name()
 {
     PATCHNAME=$(basename "$1")
@@ -78,7 +90,7 @@ function build_special()
     cd "${SRCDIR}" || die
 
     # Capture .o files from the patched build
-    export CROSS_COMPILE="${SCRIPTDIR}/livepatch-gcc "
+    export CROSS_COMPILE="${TOOLSDIR}/livepatch-gcc "
     export LIVEPATCH_BUILD_DIR="$(pwd)/"
     export LIVEPATCH_CAPTURE_DIR="$OUTPUT/${name}"
     mkdir -p "$LIVEPATCH_CAPTURE_DIR"
@@ -112,7 +124,7 @@ function create_patch()
         mkdir -p "output/$(dirname $i)" || die
         echo "Processing ${i}"
         echo "Run create-diff-object on $i" >> 
"${OUTPUT}/create-diff-object.log"
-        "${SCRIPTDIR}"/create-diff-object $debugopt $PRELINK "original/$i" 
"patched/$i" "$XENSYMS" "output/$i" &>> "${OUTPUT}/create-diff-object.log"
+        "${TOOLSDIR}"/create-diff-object $debugopt $PRELINK "original/$i" 
"patched/$i" "$XENSYMS" "output/$i" &>> "${OUTPUT}/create-diff-object.log"
         rc="${PIPESTATUS[0]}"
         if [[ $rc = 139 ]]; then
             warn "create-diff-object SIGSEGV"
@@ -146,7 +158,7 @@ function create_patch()
         chmod +x "${PATCHNAME}.livepatch"
     else
         ld -r -o output.o --build-id=sha1 $(find output -type f -name "*.o") 
|| die
-        "${SCRIPTDIR}"/prelink $debugopt output.o "${PATCHNAME}.livepatch" 
"$XENSYMS" &>> "${OUTPUT}/prelink.log" || die
+        "${TOOLSDIR}"/prelink $debugopt output.o "${PATCHNAME}.livepatch" 
"$XENSYMS" &>> "${OUTPUT}/prelink.log" || die
     fi
 
     objcopy --add-section .livepatch.depends=depends.bin 
"${PATCHNAME}.livepatch"
@@ -168,6 +180,8 @@ usage() {
     echo "        --prelink          Prelink" >&2
 }
 
+find_tools || die "can't find supporting tools"
+
 options=$(getopt -o hs:p:o:j:k:d -l 
"help,srcdir:patch:output:cpus:,skip:,debug,xen-debug,xen-syms:,depends:,prelink"
 -- "$@") || die "getopt failed"
 
 eval set -- "$options"
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.