1. 02 9月, 2013 1 次提交
    • D
      Release of libvirt-1.1.2 · 85240dab
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: merged new localizations and regenerated
      85240dab
  2. 22 8月, 2013 3 次提交
  3. 13 8月, 2013 1 次提交
    • E
      build: add configure option to disable gnulib tests · 70363ea9
      Eric Blake 提交于
      The gnulib testsuite is relatively stable - the only times it is
      likely to have a test change from pass to fail is on a gnulib
      submodule update or a major system change (such as moving from
      Fedora 18 to 19, or other large change to libc).  While it is an
      important test for end users on arbitrary machines (to make sure
      that the portability glue works for their machine), it mostly
      wastes time for development testing (as most developers aren't
      making any of the major changes that would cause gnulib tests
      to alter behavior).  Thus, it pays to make the tests optional
      at configure time, defaulting to off for development, on for
      tarballs, with autobuilders requesting it to be on.  It also
      helps to allow a make-time override, via VIR_TEST_EXPENSIVE=[01]
      (much the way automake sets up V=[01] for overriding the configure
      time default of how verbose to be).
      
      Automake has some pretty hard-coded magic with regards to the
      TESTS variable; I had quite a job figuring out how to keep
      'make distcheck' passing regardless of the configure option
      setting in use, while still disabling the tests at runtime
      when I did not configure them on and did not use the override
      variable.  Thankfully, we require GNU make, which lets me
      hide some information from Automake's magic handling of TESTS.
      
      * bootstrap.conf (bootstrap_epilogue): Munge gnulib test variable.
      * configure.ac (--enable-expensive-tests): Add new enable switch.
      (VIR_TEST_EXPENSIVE_DEFAULT, WITH_EXPENSIVE_TESTS): Set new
      witnesses.
      * gnulib/tests/Makefile.am (TESTS): Make tests conditional on
      configure settings and the VIR_TEST_EXPENSIVE variable.
      * tests/Makefile.am (TESTS_ENVIRONMENT): Expose VIR_TEST_EXPENSIVE
      to all tests.
      * autobuild.sh: Enable all tests during autobuilds.
      * libvirt.spec.in (%configure): Likewise.
      * mingw-libvirt.spec.in (%mingw_configure): Likewise.
      * docs/hacking.html.in: Document the option.
      * HACKING: Regenerate.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      70363ea9
  4. 12 8月, 2013 1 次提交
    • E
      build: avoid -lgcrypt with newer gnutls · 6094b1ff
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=951637
      
      Newer gnutls uses nettle, rather than gcrypt, which is a lot nicer
      regarding initialization.  Yet we were unconditionally initializing
      gcrypt even when gnutls wouldn't be using it, and having two crypto
      libraries linked into libvirt.so is pointless, but mostly harmless
      (it doesn't crash, but does interfere with certification efforts).
      
      There are three distinct version ranges to worry about when
      determining which crypto lib gnutls uses, per these gnutls mails:
      2.12: http://lists.gnu.org/archive/html/gnutls-devel/2011-03/msg00034.html
      3.0: http://lists.gnu.org/archive/html/gnutls-devel/2011-07/msg00035.html
      
      If pkg-config can prove version numbers and/or list the crypto
      library used for static linking, we have our proof; if not, it
      is safer (even if pointless) to continue to use gcrypt ourselves.
      
      * configure.ac (WITH_GNUTLS): Probe whether to add -lgcrypt, and
      define a witness WITH_GNUTLS_GCRYPT.
      * src/libvirt.c (virTLSMutexInit, virTLSMutexDestroy)
      (virTLSMutexLock, virTLSMutexUnlock, virTLSThreadImpl)
      (virGlobalInit): Honor the witness.
      * libvirt.spec.in (BuildRequires): Make gcrypt usage conditional,
      no longer needed in Fedora 19.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      6094b1ff
  5. 09 8月, 2013 1 次提交
    • E
      build: more workarounds for if_bridge.h · 70024dc9
      Eric Blake 提交于
      This is a second attempt at fixing the problem first attempted
      in commit 2df8d991; basically undoing the fact that it was
      reverted in commit 43cee32f, plus fixing two more issues: the
      code in configure.ac has to EXACTLY match virnetdevbridge.c
      with regards to declaring in6 types before using if_bridge.h,
      and the fact that RHEL 5 has even more conflicts:
      
      In file included from util/virnetdevbridge.c:49:
      /usr/include/linux/in6.h:47: error: conflicting types for 'in6addr_any'
      /usr/include/netinet/in.h:206: error: previous declaration of 'in6addr_any' was here
      /usr/include/linux/in6.h:49: error: conflicting types for 'in6addr_loopback'
      /usr/include/netinet/in.h:207: error: previous declaration of 'in6addr_loopback' was here
      
      The rest of this commit message borrows from the original try
      of 2df8d991:
      
      A fresh checkout on a RHEL 6 machine with these packages:
      kernel-headers-2.6.32-405.el6.x86_64
      glibc-2.12-1.128.el6.x86_64
      failed to configure with this message:
      checking for linux/if_bridge.h... no
      configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
      
      Digging in config.log, we see that the problem is identical to
      what we fixed earlier in commit d12c2811:
      
      configure:98831: checking for linux/if_bridge.h
      configure:98853: gcc -std=gnu99 -c -g -O2  conftest.c >&5
      In file included from /usr/include/linux/if_bridge.h:17,
                       from conftest.c:559:
      /usr/include/linux/in6.h:31: error: redefinition of 'struct in6_addr'
      /usr/include/linux/in6.h:48: error: redefinition of 'struct sockaddr_in6'
      /usr/include/linux/in6.h:56: error: redefinition of 'struct ipv6_mreq'
      configure:98860: $? = 1
      
      I had not hit it earlier because I was using incremental builds,
      where config.cache had shielded me from the kernel-headers breakage.
      
      * configure.ac (if_bridge.h): Avoid conflicting type definitions.
      * src/util/virnetdevbridge.c (includes): Also sanitize for RHEL 5.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      70024dc9
  6. 07 8月, 2013 2 次提交
    • D
      Revert "build: fix configure detection of if_bridge.h on RHEL 6" · 43cee32f
      Daniel P. Berrange 提交于
      This reverts commit 2df8d991.
      
      The change breaks configure on any recent Fedora platform
      43cee32f
    • E
      build: fix configure detection of if_bridge.h on RHEL 6 · 2df8d991
      Eric Blake 提交于
      A fresh checkout on a RHEL 6 machine with these packages:
      kernel-headers-2.6.32-405.el6.x86_64
      glibc-2.12-1.128.el6.x86_64
      failed to configure with this message:
      checking for linux/if_bridge.h... no
      configure: error: You must install kernel-headers in order to compile libvirt with QEMU or LXC support
      
      Digging in config.log, we see that the problem is identical to
      what we fixed earlier in commit d12c2811:
      
      configure:98831: checking for linux/if_bridge.h
      configure:98853: gcc -std=gnu99 -c -g -O2  conftest.c >&5
      In file included from /usr/include/linux/if_bridge.h:17,
                       from conftest.c:559:
      /usr/include/linux/in6.h:31: error: redefinition of 'struct in6_addr'
      /usr/include/linux/in6.h:48: error: redefinition of 'struct sockaddr_in6'
      /usr/include/linux/in6.h:56: error: redefinition of 'struct ipv6_mreq'
      configure:98860: $? = 1
      
      I had not hit it earlier because I was using incremental builds,
      where config.cache had shielded me from the kernel-headers breakage.
      
      * configure.ac (if_bridge.h): Avoid conflicting type definitions.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      2df8d991
  7. 01 8月, 2013 1 次提交
  8. 30 7月, 2013 2 次提交
    • D
      Delete obsolete / unused python test files · 5bb2a245
      Daniel P. Berrange 提交于
      The python/tests directory contains a number of so called
      "tests" for the python API. These are all hardcoded to
      look for Xen and cannot be run in any automated fashion,
      and no one is ever manually running them. Given that they
      don't meaningully contribute to the test coverage, delete
      them.
      
      For some reason these tests were also copied into the
      filesystem as part of 'make install'. The change to the
      RPM in commit 3347a420
      caused a build failure, since it removed the code which
      deleted these installed tests.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      5bb2a245
    • D
      Release of libvirt-1.1.1 · e9b8c9dc
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in: update for the release
      * po/*.po*: update localizations and regenerate
      e9b8c9dc
  9. 24 7月, 2013 1 次提交
    • R
      Fix link_addr detection · 7e120829
      Roman Bogorodskiy 提交于
      link_addr detection in configure always reports that
      link_addr is missing because it uses link_addr(NULL, NULL) in
      AC_LINK_IFELSE check with limited set of headers that doesn't
      define NULL.
      
      Fix by replacing 'NULL' with just '0'.
      7e120829
  10. 19 7月, 2013 1 次提交
  11. 18 7月, 2013 1 次提交
  12. 12 7月, 2013 1 次提交
    • E
      util: make virSetUIDGID async-signal-safe · ee777e99
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=964358
      
      POSIX states that multi-threaded apps should not use functions
      that are not async-signal-safe between fork and exec, yet we
      were using getpwuid_r and initgroups.  Although rare, it is
      possible to hit deadlock in the child, when it tries to grab
      a mutex that was already held by another thread in the parent.
      I actually hit this deadlock when testing multiple domains
      being started in parallel with a command hook, with the following
      backtrace in the child:
      
       Thread 1 (Thread 0x7fd56bbf2700 (LWP 3212)):
       #0  __lll_lock_wait ()
           at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
       #1  0x00007fd5761e7388 in _L_lock_854 () from /lib64/libpthread.so.0
       #2  0x00007fd5761e7257 in __pthread_mutex_lock (mutex=0x7fd56be00360)
           at pthread_mutex_lock.c:61
       #3  0x00007fd56bbf9fc5 in _nss_files_getpwuid_r (uid=0, result=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, errnop=0x7fd56bbf25b8)
           at nss_files/files-pwd.c:40
       #4  0x00007fd575aeff1d in __getpwuid_r (uid=0, resbuf=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, result=0x7fd56bbf0cb0)
           at ../nss/getXXbyYY_r.c:253
       #5  0x00007fd578aebafc in virSetUIDGID (uid=0, gid=0) at util/virutil.c:1031
       #6  0x00007fd578aebf43 in virSetUIDGIDWithCaps (uid=0, gid=0, capBits=0,
           clearExistingCaps=true) at util/virutil.c:1388
       #7  0x00007fd578a9a20b in virExec (cmd=0x7fd55c231f10) at util/vircommand.c:654
       #8  0x00007fd578a9dfa2 in virCommandRunAsync (cmd=0x7fd55c231f10, pid=0x0)
           at util/vircommand.c:2247
       #9  0x00007fd578a9d74e in virCommandRun (cmd=0x7fd55c231f10, exitstatus=0x0)
           at util/vircommand.c:2100
       #10 0x00007fd56326fde5 in qemuProcessStart (conn=0x7fd53c000df0,
           driver=0x7fd55c0dc4f0, vm=0x7fd54800b100, migrateFrom=0x0, stdin_fd=-1,
           stdin_path=0x0, snapshot=0x0, vmop=VIR_NETDEV_VPORT_PROFILE_OP_CREATE,
           flags=1) at qemu/qemu_process.c:3694
       ...
      
      The solution is to split the work of getpwuid_r/initgroups into the
      unsafe portions (getgrouplist, called pre-fork) and safe portions
      (setgroups, called post-fork).
      
      * src/util/virutil.h (virSetUIDGID, virSetUIDGIDWithCaps): Adjust
      signature.
      * src/util/virutil.c (virSetUIDGID): Add parameters.
      (virSetUIDGIDWithCaps): Adjust clients.
      * src/util/vircommand.c (virExec): Likewise.
      * src/util/virfile.c (virFileAccessibleAs, virFileOpenForked)
      (virDirCreate): Likewise.
      * src/security/security_dac.c (virSecurityDACSetProcessLabel):
      Likewise.
      * src/lxc/lxc_container.c (lxcContainerSetID): Likewise.
      * configure.ac (AC_CHECK_FUNCS_ONCE): Check for setgroups, not
      initgroups.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ee777e99
  13. 10 7月, 2013 1 次提交
  14. 01 7月, 2013 1 次提交
    • D
      Release of libvirt-1.1.0 · 034d3229
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: updated for the release
      * po/*.po*: updated localizations and regenerated
      034d3229
  15. 21 6月, 2013 1 次提交
  16. 12 6月, 2013 1 次提交
  17. 03 6月, 2013 1 次提交
    • D
      Release of libvirt 1.0.6 · 4497ef50
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: pull localization updates and regenerate the po
      4497ef50
  18. 29 5月, 2013 1 次提交
    • E
      build: fix build with newer gnutls · 7d21d6b6
      Eric Blake 提交于
      Building with gnutls 3.2.0 (such as shipped with current cygwin) fails
      with:
      
      rpc/virnettlscontext.c: In function 'virNetTLSSessionGetKeySize':
      rpc/virnettlscontext.c:1358:5: error: implicit declaration of function 'gnutls_cipher_get_key_size' [-Wimplicit-function-declaration]
      
      Yeah, it's stupid that gnutls broke API by moving their declaration
      into a new header without including that header from the old one,
      but it's easy enough to work around, all without breaking on gnutls
      1.4.1 (hello RHEL 5) that lacked the new header.
      
      * configure.ac (gnutls): Check for <gnutls/crypto.h>.
      * src/rpc/virnettlscontext.c (includes): Include additional header.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7d21d6b6
  19. 21 5月, 2013 2 次提交
    • E
      maint: follow recommended practice for using LGPL · de483052
      Eric Blake 提交于
      https://www.gnu.org/licenses/gpl-howto.html states:
      
      You should also include a copy of the license itself somewhere in the
      distribution of your program. All programs, whether they are released
      under the GPL or LGPL, should include the text version of the GPL. In
      GNU programs the license is usually in a file called COPYING.
      
      If you are releasing your program under the LGPL, you should also
      include the text version of the LGPL, usually in a file called
      COPYING.LESSER. Please note that, since the LGPL is a set of
      additional permissions on top of the GPL, it's important to include
      both licenses so users have all the materials they need to understand
      their rights.
      
      * configure.ac (COPYING): No more games with non-git file.
      * COPYING: New file, copied from gnulib.
      * COPYING.LIB: Rename...
      * COPYING.LESSER: ...to this.
      * .gitignore: Track licenses in git.
      * cfg.mk (exclude_file_name_regexp--sc_copyright_address): Tweak
      rule.
      * libvirt.spec.in (daemon, client, python): Reflect rename.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      de483052
    • E
      maint: use LGPL correctly · d7f53c7b
      Eric Blake 提交于
      Several files called out COPYING or COPYING.LIB instead of using
      the normal boilerplate.  It's especially important that we don't
      call out COPYING from an LGPL file, since COPYING is traditionally
      used for the GPL.  A few files were lacking copyright altogether.
      
      * src/rpc/gendispatch.pl: Add missing copyright.
      * Makefile.nonreentrant: Likewise.
      * src/check-symfile.pl: Likewise.
      * src/check-symsorting.pl: Likewise.
      * src/driver.h: Likewise.
      * src/internal.h: Likewise.
      * tools/libvirt-guests.sh.in: Likewise.
      * tools/virt-pki-validate.in: Mention copyright in comment, not just code.
      * tools/virt-sanlock-cleanup.in: Likewise.
      * src/rpc/genprotocol.pl: Spell out license terms.
      * src/xen/xend_internal.h: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * Makefile.am: Likewise.
      * daemon/Makefile.am: Likewise.
      * docs/Makefile.am: Likewise.
      * docs/schemas/Makefile.am: Likewise.
      * examples/apparmor/Makefile.am: Likewise.
      * examples/domain-events/events-c/Makefile.am: Likewise.
      * examples/dominfo/Makefile.am: Likewise.
      * examples/domsuspend/Makefile.am: Likewise.
      * examples/hellolibvirt/Makefile.am: Likewise.
      * examples/openauth/Makefile.am: Likewise.
      * examples/python/Makefile.am: Likewise.
      * examples/systemtap/Makefile.am: Likewise.
      * examples/xml/nwfilter/Makefile.am: Likewise.
      * gnulib/lib/Makefile.am: Likewise.
      * gnulib/tests/Makefile.am: Likewise.
      * include/Makefile.am: Likewise.
      * include/libvirt/Makefile.am: Likewise.
      * python/Makefile.am: Likewise.
      * python/tests/Makefile.am: Likewise.
      * src/Makefile.am: Likewise.
      * tests/Makefile.am: Likewise.
      * tools/Makefile.am: Likewise.
      * configure.ac: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      d7f53c7b
  20. 14 5月, 2013 2 次提交
    • D
      Only pass -export-dynamic to linker, not compiler · 421846e4
      Daniel P. Berrange 提交于
      Clang does not like the -export-dynamic flag. The compiler does
      not need it in the first place, so we can avoid the problem by
      only setting it for the linker
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      421846e4
    • R
      build: avoid gcrypt deprecation warnings · bf87b99d
      Roman Bogorodskiy 提交于
      When combining old gcc (4.2.1) and new gcrypt (1.5.2), such as
      when using the Ports repository on FreeBSD, the build fails with:
      
        CC       libvirt_driver_la-libvirt.lo
      cc1: warnings being treated as errors
      In file included from libvirt.c:58:
      /usr/local/include/gcrypt.h:1336: warning: 'gcry_ac_io_mode_t' is deprecated [-Wdeprecated-declarations]
      
      Relevant part of gcrypt.h:
      1333 typedef struct gcry_ac_io
      1334 {
      1335   /* This is an INTERNAL structure, do NOT use manually.  */
      1336   gcry_ac_io_mode_t mode _GCRY_ATTR_INTERNAL;
      1337   gcry_ac_io_type_t type _GCRY_ATTR_INTERNAL;
      1338   union
      
      The sad part is that we aren't even using the deprecated symbols - their
      mere inclusion in the installed header is provoking the problems.  It
      looks like newer gcc is a bit more tolerant (that is, this is a
      shortcoming of FreeBSD's use of an older compiler).
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bf87b99d
  21. 11 5月, 2013 1 次提交
  22. 02 5月, 2013 1 次提交
    • D
      Release of libvirt-1.0.5 · 8e20a23f
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: updated for the release
      * po/*.po*: pulled and merged a number of new localization updates
      8e20a23f
  23. 30 4月, 2013 1 次提交
    • R
      portability: handle ifreq differences in virnetdev · 5295e35f
      Roman Bogorodskiy 提交于
      FreeBSD (and maybe other BSDs) have different member
      names in struct ifreq when compared to Linux, such as:
      
       - uses ifr_data instead of ifr_newname for setting
         interface names
       - uses ifr_index instead of ifr_ifindex for interface
         index
      
      Also, add a check for SIOCGIFHWADDR for virNetDevValidateConfig().
      
      Use AF_LOCAL if AF_PACKET is not available.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      5295e35f
  24. 26 4月, 2013 1 次提交
    • L
      util: new virCommandSetMax(MemLock|Processes|Files) · 776d49f4
      Laine Stump 提交于
      This patch adds two sets of functions:
      
      1) lower level virProcessSet*() functions that will immediately set
      the RLIMIT_MEMLOCK. RLIMIT_NPROC, or RLIMIT_NOFILE of either the
      current process (using setrlimit()) or any other process (using
      prlimit()). "current process" is indicated by passing a 0 for pid.
      
      2) functions for virCommand* that will setup a virCommand object to
      set those limits at a later time just after it has forked a new
      process, but before it execs the new program.
      
      configure.ac has prlimit and setrlimit added to the list of functions
      to check for, and the low level functions log an "unsupported" error)
      on platforms that don't support those functions.
      776d49f4
  25. 16 4月, 2013 2 次提交
  26. 03 4月, 2013 3 次提交
    • D
      Enable full RELRO mode · fc8c1787
      Daniel P. Berrange 提交于
      By passing the flags -z relro -z now to the linker, we can force
      it to resolve all library symbols at startup, instead of on-demand.
      This allows it to then make the global offset table (GOT) read-only,
      which makes some security attacks harder.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      fc8c1787
    • D
      Build all binaries with PIE · 1150999c
      Daniel P. Berrange 提交于
      PIE (position independent executable) adds security to executables
      by composing them entirely of position-independent code (PIC. The
      .so libraries already build with -fPIC. This adds -fPIE which is
      the equivalent to -fPIC, but for executables. This for allows Exec
      Shield to use address space layout randomization to prevent attackers
      from knowing where existing executable code is during a security
      attack using exploits that rely on knowing the offset of the
      executable code in the binary, such as return-to-libc attacks.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1150999c
    • D
      Disable static libraries by default · ad42b34b
      Daniel P. Berrange 提交于
      Every source file is currently built twice by libtool, once for
      the shared library and once for the static library. Static libs
      are not commonly packaged by distros and slow down compilation
      time by more than 50% compared to a shared-only build time.
      
      Time for 'make -j 4':
      
            shared only: 2 mins  9 secs
        shared + static: 3 mins 26 secs
      
      Time for non-parallel make
      
            shared only: 3 mins 32 secs
        shared + static: 5 mins 41 secs
      
      Those few people who really want them, can pass --enable-static
      to configure
      
      Disabling them by default requires use of LT_INIT, but for
      compat with RHEL5 we can't rely on that. So we conditionally
      use LT_INIT, but fallback to AM_PROG_LIBTOOL if not present.
      ad42b34b
  27. 01 4月, 2013 1 次提交
    • D
      Release of libvirt-1.0.4 · 89d73020
      Daniel Veillard 提交于
      - configure.ac docs/news.html.in libvirt.spec.in: updates for the release
      - po/*.po*: fetch translation updates from Transifex and regenerate
      89d73020
  28. 05 3月, 2013 1 次提交
    • D
      Release of libvirt 1.0.3 · be1c364d
      Daniel Veillard 提交于
      - configure.ac docs/news.html.in libvirt.spec.in: update for the release
      - po/*.po*: merged in transifex updates for fr,hi,pl,ja,uk,it and
        regenerated
      be1c364d
  29. 30 1月, 2013 1 次提交
    • D
      Release of libvirt-1.0.2 · 4a824cdb
      Daniel Veillard 提交于
      * configure.ac docs/news.html.in libvirt.spec.in: update for the release
      * po/*.po*: updated localizations
      4a824cdb
  30. 26 1月, 2013 1 次提交
  31. 15 1月, 2013 1 次提交
    • E
      build: further fixes for broken if_bridge.h · 1bf661ca
      Eric Blake 提交于
      Commit c308a9ae was incomplete; it resolved the configure failure,
      but not a later build failure.
      
      * src/util/virnetdevbridge.c: Include pre-req header.
      * configure.ac (AC_CHECK_HEADERS): Prefer standard in.h over
      non-standard ip6.h.
      1bf661ca