All of lore.kernel.org
 help / color / mirror / Atom feed
From: Don Slutz <dslutz@verizon.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	Don Slutz <dslutz@verizon.com>
Subject: Re: Xen 4.3.2-rc1 and 4.2.4-rc1 have been tagged
Date: Mon, 10 Feb 2014 18:07:41 -0500	[thread overview]
Message-ID: <52F95BBD.1080509@terremark.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1402101502040.4373@kaball.uk.xensource.com>

[-- Attachment #1: Type: text/plain, Size: 2934 bytes --]

On 02/10/14 10:04, Stefano Stabellini wrote:
> On Mon, 10 Feb 2014, Jan Beulich wrote:
>>>>> On 07.02.14 at 23:04, Don Slutz <dslutz@verizon.com> wrote:
>>> On 01/29/14 06:40, Jan Beulich wrote:
>>>> All,
>>>>
>>>> aiming at releases with, as before, presumably just one more RC on
>>>> each of them, please test!
>>> Tested 4.3.2-rc1 on CentOS 5.10 and Fedora 17.
>>>
>>> CentOS 5.10 has a build issue with QEMU:
>>>
>>> http://lists.xen.org/archives/html/xen-devel/2014-02/msg00084.html
>> Is this a regression over 4.3.1?

Using

http://bits.xensource.com/oss-xen/release/4.3.1/xen-4.3.1.tar.gz

   lt LINK libcacard.la
/usr/bin/ld: libcacard/.libs/vcard.o: relocation R_X86_64_PC32 against `vcard_delete_applet' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status


So no, this is not a regression.



>>
>> In any event, it would be Stefano to take care of this, just like for
>> 4.4.
>>
> Don, would a backport of "configure: Disable libtool if -fPIE does not
> work with it (bug #1257099)" (027c412ff71ad8bff6e335cc7932857f4ea74391
> in qemu-upstream-unstable.git) fix the issue in 4.3 as well?  If so, I
> would rather do that than introduce a workaround.
>
>   

The backport of "configure: Disable libtool if -fPIE does not work with it (bug #1257099)" (027c412ff71ad8bff6e335cc7932857f4ea74391 in qemu-upstream-unstable.git)  turns out mot to be enough.  You also need to backport "libcacard: require libtool to build it (b6fc675b25d32f018870e202eb4b2a6eb509f88b)"

to not get the message:

libtool is missing, please install and rerun configure


I have attached my version of these 2 backports.

Using them, I am able to build xen, and the resulting bits pass some simple tests.

    -Don Slutz


>>> Has more info, for this testing I changed:
>>>
>>>
>>> Author: Don Slutz <dslutz@verizon.com>
>>> Date:   Fri Jan 31 22:37:04 2014 +0000
>>>
>>>       Work around QEMU bug #1257099 on CentOS 5.10
>>>
>>> diff --git a/tools/Makefile b/tools/Makefile
>>> index e44a3e9..b411e60 100644
>>> --- a/tools/Makefile
>>> +++ b/tools/Makefile
>>> @@ -187,7 +187,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-find
>>>                   source=.; \
>>>           fi; \
>>>           cd qemu-xen-dir; \
>>> -       $$source/configure --enable-xen --target-list=i386-softmmu \
>>> +       $$source/configure --enable-xen --target-list=i386-softmmu
>>> --disable-smartcard-nss\
>>>                   --prefix=$(PREFIX) \
>>>                   --source-path=$$source \
>>>                   --extra-cflags="-I$(XEN_ROOT)/tools/include \
>>>
>>> and was able to use the resulting build for some simple testing.  No new
>>> issues were found.
>>>        -Don Slutz
>>>
>>>> Thanks, Jan
>>>>
>>>>
>>>> _______________________________________________
>>>> Xen-devel mailing list
>>>> Xen-devel@lists.xen.org
>>>> http://lists.xen.org/xen-devel
>>
>>


[-- Attachment #2: 0001-configure-Disable-libtool-if-fPIE-does-not-work-with.patch --]
[-- Type: text/x-patch, Size: 3330 bytes --]

>From 9a91ed949b0c5a7c3058bc12ac393018cbbd73e3 Mon Sep 17 00:00:00 2001
From: Don Slutz <dslutz@verizon.com>
Date: Sat, 14 Dec 2013 19:43:56 +0000
Subject: [PATCH 1/2] configure: Disable libtool if -fPIE does not work with it
 (bug #1257099)

Adjust TMPO and added TMPB, TMPL, and TMPA.  libtool needs the names
to be fixed (TMPB).

Add new functions do_libtool and libtool_prog.

Add check for broken gcc and libtool.

Signed-off-by: Don Slutz <dslutz@verizon.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
(cherry picked from commit 027c412ff71ad8bff6e335cc7932857f4ea74391)

Conflicts:
	configure
---
 configure | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 994f731..cc87f7b 100755
--- a/configure
+++ b/configure
@@ -12,7 +12,10 @@ else
 fi
 
 TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
-TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
+TMPB="qemu-conf-${RANDOM}-$$-${RANDOM}"
+TMPO="${TMPDIR1}/${TMPB}.o"
+TMPL="${TMPDIR1}/${TMPB}.lo"
+TMPA="${TMPDIR1}/lib${TMPB}.la"
 TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
 
 # NB: do not call "exit" in the trap handler; this is buggy with some shells;
@@ -63,6 +66,38 @@ compile_prog() {
   do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
 }
 
+do_libtool() {
+    local mode=$1
+    shift
+    # Run the compiler, capturing its output to the log.
+    echo $libtool $mode --tag=CC $cc "$@" >> config.log
+    $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
+    # Test passed. If this is an --enable-werror build, rerun
+    # the test with -Werror and bail out if it fails. This
+    # makes warning-generating-errors in configure test code
+    # obvious to developers.
+    if test "$werror" != "yes"; then
+        return 0
+    fi
+    # Don't bother rerunning the compile if we were already using -Werror
+    case "$*" in
+        *-Werror*)
+           return 0
+        ;;
+    esac
+    echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
+    $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
+    error_exit "configure test passed without -Werror but failed with -Werror." \
+        "This is probably a bug in the configure script. The failing command" \
+        "will be at the bottom of config.log." \
+        "You can run configure with --disable-werror to bypass this check."
+}
+
+libtool_prog() {
+    do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
+    do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
+}
+
 # symbolically link $1 to $2.  Portable version of "ln -sf".
 symlink() {
   rm -rf "$2"
@@ -1249,6 +1284,32 @@ EOF
   fi
 fi
 
+# check for broken gcc and libtool in RHEL5
+if test -n "$libtool" -a "$pie" != "no" ; then
+  cat > $TMPC <<EOF
+
+void *f(unsigned char *buf, int len);
+void *g(unsigned char *buf, int len);
+
+void *
+f(unsigned char *buf, int len)
+{
+    return (void*)0L;
+}
+
+void *
+g(unsigned char *buf, int len)
+{
+    return f(buf, len);
+}
+
+EOF
+  if ! libtool_prog; then
+    echo "Disabling libtool due to broken toolchain support"
+    libtool=
+  fi
+fi
+
 #
 # Solaris specific configure tool chain decisions
 #
-- 
1.8.2.1


[-- Attachment #3: 0002-libcacard-require-libtool-to-build-it.patch --]
[-- Type: text/x-patch, Size: 5646 bytes --]

>From 576072fdaf653aff7d708a0d940f14727d3d6a25 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Thu, 20 Dec 2012 20:40:35 +0100
Subject: [PATCH 2/2] libcacard: require libtool to build it

Do not fail at build time, instead just disable the library if libtool
is not present.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit b6fc675b25d32f018870e202eb4b2a6eb509f88b)

Conflicts:
	configure
	rules.mak
---
 Makefile           |  8 +-------
 configure          | 45 +++++++++++++++++++++++----------------------
 libcacard/Makefile |  8 --------
 rules.mak          |  6 ++----
 4 files changed, 26 insertions(+), 41 deletions(-)

diff --git a/Makefile b/Makefile
index 9ecbcbb..c8a35a0 100644
--- a/Makefile
+++ b/Makefile
@@ -168,14 +168,8 @@ libqemustub.a: $(stub-obj-y)
 ######################################################################
 # Support building shared library libcacard
 
+ifeq ($(CONFIG_SMARTCARD_NSS),y)
 .PHONY: libcacard.la install-libcacard
-ifeq ($(LIBTOOL),)
-libcacard.la:
-	@echo "libtool is missing, please install and rerun configure"; exit 1
-
-install-libcacard:
-	@echo "libtool is missing, please install and rerun configure"; exit 1
-else
 libcacard.la: $(oslib-obj-y) qemu-timer-common.o $(addsuffix .lo, $(basename $(trace-obj-y)))
 	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libcacard V="$(V)" TARGET_DIR="$*/" libcacard.la,)
 
diff --git a/configure b/configure
index cc87f7b..4f0d0e0 100755
--- a/configure
+++ b/configure
@@ -2832,29 +2832,30 @@ if test "$smartcard" != "no" ; then
 #include <pk11pub.h>
 int main(void) { PK11_FreeSlot(0); return 0; }
 EOF
-        smartcard_includes="-I\$(SRC_PATH)/libcacard"
-        libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
-        libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
-        test_cflags="$libcacard_cflags"
-        # The header files in nss < 3.13.3 have a bug which causes them to
-        # emit a warning. If we're going to compile QEMU with -Werror, then
-        # test that the headers don't have this bug. Otherwise we would pass
-        # the configure test but fail to compile QEMU later.
-        if test "$werror" = "yes"; then
-            test_cflags="-Werror $test_cflags"
-        fi
-        if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
-          compile_prog "$test_cflags" "$libcacard_libs"; then
-            smartcard_nss="yes"
-            QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
-            QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
-            libs_softmmu="$libcacard_libs $libs_softmmu"
-        else
-            if test "$smartcard_nss" = "yes"; then
-                feature_not_found "nss"
-            fi
-            smartcard_nss="no"
+    smartcard_includes="-I\$(SRC_PATH)/libcacard"
+    libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
+    libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
+    test_cflags="$libcacard_cflags"
+    # The header files in nss < 3.13.3 have a bug which causes them to
+    # emit a warning. If we're going to compile QEMU with -Werror, then
+    # test that the headers don't have this bug. Otherwise we would pass
+    # the configure test but fail to compile QEMU later.
+    if test "$werror" = "yes"; then
+        test_cflags="-Werror $test_cflags"
+    fi
+    if test -n "$libtool" &&
+            $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
+      compile_prog "$test_cflags" "$libcacard_libs"; then
+        smartcard_nss="yes"
+        QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
+        QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
+        libs_softmmu="$libcacard_libs $libs_softmmu"
+    else
+        if test "$smartcard_nss" = "yes"; then
+            feature_not_found "nss"
         fi
+        smartcard_nss="no"
+    fi
     fi
 fi
 if test "$smartcard" = "no" ; then
diff --git a/libcacard/Makefile b/libcacard/Makefile
index c26aac6..2bb5aea 100644
--- a/libcacard/Makefile
+++ b/libcacard/Makefile
@@ -28,13 +28,6 @@ all: libcacard.la libcacard.pc
 #########################################################################
 # Rules for building libcacard standalone library
 
-ifeq ($(LIBTOOL),)
-libcacard.la:
-	@echo "libtool is missing, please install and rerun configure"; exit 1
-
-install-libcacard:
-	@echo "libtool is missing, please install and rerun configure"; exit 1
-else
 libcacard.la: $(libcacard.lib-y) $(QEMU_OBJS_LIB)
 	$(call quiet-command,$(LIBTOOL) --mode=link --quiet --tag=CC $(CC) -rpath $(libdir) -o $@ $^ $(libcacard_libs),"  lt LINK $@")
 
@@ -60,4 +53,3 @@ install-libcacard: libcacard.pc libcacard.la vscclient
 	for inc in *.h; do \
 		$(LIBTOOL) --mode=install $(INSTALL_DATA) $(libcacard_srcpath)/$$inc "$(DESTDIR)$(libcacard_includedir)"; \
 	done
-endif
diff --git a/rules.mak b/rules.mak
index d0b04e4..c41c08b 100644
--- a/rules.mak
+++ b/rules.mak
@@ -18,12 +18,10 @@ QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(*D)/$(*F).d
 	$(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<,"  CC    $(TARGET_DIR)$@")
 
 ifeq ($(LIBTOOL),)
-%.lo: %.c
-	@echo "missing libtool. please install and rerun configure"; exit 1
-else
+LIBTOOL = /bin/false
+endif
 %.lo: %.c
 	$(call quiet-command,$(LIBTOOL) --mode=compile --quiet --tag=CC $(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<,"  lt CC $@")
-endif
 
 %.o: %.S
 	$(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<,"  AS    $(TARGET_DIR)$@")
-- 
1.8.2.1


[-- Attachment #4: Type: text/plain, Size: 126 bytes --]

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

      reply	other threads:[~2014-02-10 23:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <52E7D3BB02000078001179F5@nat28.tlf.novell.com>
2014-01-29 11:40 ` Xen 4.3.2-rc1 and 4.2.4-rc1 have been tagged Jan Beulich
2014-02-07 22:04   ` Don Slutz
2014-02-10  7:38     ` Jan Beulich
2014-02-10 15:04       ` Stefano Stabellini
2014-02-10 23:07         ` Don Slutz [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52F95BBD.1080509@terremark.com \
    --to=dslutz@verizon.com \
    --cc=JBeulich@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.