aboutsummaryrefslogtreecommitdiff
path: root/extra/lvm2
diff options
context:
space:
mode:
Diffstat (limited to 'extra/lvm2')
-rwxr-xr-xextra/lvm2/build41
-rw-r--r--extra/lvm2/checksums3
-rw-r--r--extra/lvm2/depends3
-rw-r--r--extra/lvm2/patches/disable-symver.patch136
-rw-r--r--extra/lvm2/patches/fix-stdio-usage.patch58
-rw-r--r--extra/lvm2/sources3
-rw-r--r--extra/lvm2/version1
7 files changed, 245 insertions, 0 deletions
diff --git a/extra/lvm2/build b/extra/lvm2/build
new file mode 100755
index 00000000..ffa71785
--- /dev/null
+++ b/extra/lvm2/build
@@ -0,0 +1,41 @@
+#!/bin/sh -e
+
+patch -p1 < fix-stdio-usage.patch
+patch -p1 < disable-symver.patch
+
+# LVM2 calls 'fmt -1' throughout the build process.
+# Busybox doesn't provide this command, however
+# all it does is split words one per line and
+# 'tr' can be used in its place.
+sed -i 's/fmt -1/tr " " "\\n"/' \
+ make.tmpl.in libdm/make.tmpl.in
+
+# The build fails when using busybox's 'mkdir'(?),
+# swap to using 'install -d' instead which works.
+export MKDIR_P="install -d"
+
+./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-selinux \
+ --enable-pkgconfig \
+ --enable-fsadm \
+ --enable-dmeventd \
+ --enable-cmdlib \
+ --enable-udev_sync \
+ --enable-udev_rules \
+ --enable-symvers=no \
+ --disable-symvers \
+ --with-default-dm-run-dir=/run \
+ --with-default-locking-dir=/run/lock/lvm \
+ --with-default-pid-dir=/run \
+ --with-default-run-dir=/run/lvm
+
+make DESTDIR="$1" install
+
+# Make all libraries and binaries writable.
+chmod -v u+w "$1/usr/lib/"* \
+ "$1/usr/include/"* \
+ "$1/usr/bin/"*
diff --git a/extra/lvm2/checksums b/extra/lvm2/checksums
new file mode 100644
index 00000000..c5677346
--- /dev/null
+++ b/extra/lvm2/checksums
@@ -0,0 +1,3 @@
+91753976ea1b9d94475781680be667a61fe611e89050fc73e1edbebbdc87ed44 LVM2.2.03.06.tgz
+36b598a65d24b18ae7b7657b37343788c96ae56cb9673a13a09423c031002b32 fix-stdio-usage.patch
+0eafb3464043c81644c919e42c79f7fbd614ca27a4bf5665b658856008147e59 disable-symver.patch
diff --git a/extra/lvm2/depends b/extra/lvm2/depends
new file mode 100644
index 00000000..95359853
--- /dev/null
+++ b/extra/lvm2/depends
@@ -0,0 +1,3 @@
+eudev
+libaio
+util-linux
diff --git a/extra/lvm2/patches/disable-symver.patch b/extra/lvm2/patches/disable-symver.patch
new file mode 100644
index 00000000..6216c061
--- /dev/null
+++ b/extra/lvm2/patches/disable-symver.patch
@@ -0,0 +1,136 @@
+diff --git a/configure b/configure
+index 6dd7eda..ef6a416 100755
+--- a/configure
++++ b/configure
+@@ -959,6 +959,7 @@ enable_fsadm
+ enable_blkdeactivate
+ enable_dmeventd
+ enable_selinux
++enable_symvers
+ enable_nls
+ with_localedir
+ with_confdir
+@@ -1677,6 +1678,9 @@ Optional Features:
+ --disable-blkdeactivate disable blkdeactivate
+ --enable-dmeventd enable the device-mapper event daemon
+ --disable-selinux disable selinux support
++ --enable-symvers[=STYLE]
++ enables symbol versioning of the shared library
++ [default=gnu]
+ --enable-nls enable Native Language Support
+
+ Optional Packages:
+@@ -3077,7 +3081,6 @@ if test -z "$CFLAGS"; then :
+ fi
+ case "$host_os" in
+ linux*)
+- CLDFLAGS="${CLDFLAGS-"$LDFLAGS"} -Wl,--version-script,.export.sym"
+ # equivalent to -rdynamic
+ ELDFLAGS="-Wl,--export-dynamic"
+ # FIXME Generate list and use --dynamic-list=.dlopen.sym
+@@ -12969,6 +12972,33 @@ done
+ LIBS=$lvm_saved_libs
+ fi
+
++################################################################################
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbol versioning" >&5
++$as_echo_n "checking whether to enable symbol versioning... " >&6; }
++# Check whether --enable-symvers was given.
++if test "${enable_symvers+set}" = set; then :
++ enableval=$enable_symvers;
++ case "$enableval" in
++ gnu|no) ;;
++ *) as_fn_error $? "Unknown argument to enable/disable symvers" "$LINENO" 5 ;;
++ esac
++else
++ enable_symvers=gnu
++fi
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_symvers" >&5
++$as_echo "$enable_symvers" >&6; }
++
++if test x$GCC = xyes && test x$enable_symvers = xgnu ; then
++
++$as_echo "#define GNU_SYMVER 1" >>confdefs.h
++
++ case "$host_os" in
++ linux*) CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" ;;
++ esac
++fi
++
++
+ ################################################################################
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable internationalisation" >&5
+ $as_echo_n "checking whether to enable internationalisation... " >&6; }
+diff --git a/lib/misc/lib.h b/lib/misc/lib.h
+index c14f437..79b36a3 100644
+--- a/lib/misc/lib.h
++++ b/lib/misc/lib.h
+@@ -62,7 +62,7 @@
+ * versions of library symbols prior to the introduction of symbol
+ * versioning: it must never be used for new symbols.
+ */
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ #define DM_EXPORT_SYMBOL(func, ver) \
+ __asm__(".symver " #func "_v" #ver ", " #func "@DM_" #ver )
+ #define DM_EXPORT_SYMBOL_BASE(func) \
+diff --git a/libdm/datastruct/bitset.c b/libdm/datastruct/bitset.c
+index 06bd31a..8f36ec7 100644
+--- a/libdm/datastruct/bitset.c
++++ b/libdm/datastruct/bitset.c
+@@ -242,7 +242,7 @@ bad:
+ return NULL;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Maintain backward compatibility with older versions that did not
+ * accept a 'min_num_bits' argument to dm_bitset_parse_list().
+@@ -254,6 +254,4 @@ dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem)
+ }
+ DM_EXPORT_SYMBOL(dm_bitset_parse_list, 1_02_129);
+
+-#else /* if defined(__GNUC__) */
+-
+ #endif
+diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c
+index dd46b67..b09abdc 100644
+--- a/libdm/ioctl/libdm-iface.c
++++ b/libdm/ioctl/libdm-iface.c
+@@ -2176,7 +2176,7 @@ void dm_lib_exit(void)
+ _version_checked = 0;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Maintain binary backward compatibility.
+ * Version script mechanism works with 'gcc' compatible compilers only.
+diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
+index ee12da2..08829c5 100644
+--- a/libdm/libdm-deptree.c
++++ b/libdm/libdm-deptree.c
+@@ -3811,7 +3811,7 @@ void dm_tree_node_set_callback(struct dm_tree_node *dnode,
+ dnode->callback_data = data;
+ }
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ /*
+ * Backward compatible implementations.
+ *
+diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c
+index 420e3e1..066bcdf 100644
+--- a/libdm/libdm-stats.c
++++ b/libdm/libdm-stats.c
+@@ -5067,7 +5067,7 @@ int dm_stats_start_filemapd(int fd, uint64_t group_id, const char *path,
+ * current dm_stats_create_region() version.
+ */
+
+-#if defined(__GNUC__)
++#if defined(GNU_SYMVER)
+ int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id,
+ uint64_t start, uint64_t len, int64_t step,
+ int precise, const char *program_id,
diff --git a/extra/lvm2/patches/fix-stdio-usage.patch b/extra/lvm2/patches/fix-stdio-usage.patch
new file mode 100644
index 00000000..3fd80f64
--- /dev/null
+++ b/extra/lvm2/patches/fix-stdio-usage.patch
@@ -0,0 +1,58 @@
+diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
+index 479d499..7681a5b 100644
+--- a/lib/commands/toolcontext.c
++++ b/lib/commands/toolcontext.c
+@@ -1599,7 +1599,7 @@ struct cmd_context *create_toolcontext(unsigned is_clvmd,
+ /* FIXME Make this configurable? */
+ reset_lvm_errno(1);
+
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ /* Set in/out stream buffering before glibc */
+ if (set_buffering
+ #ifdef SYS_gettid
+@@ -1980,7 +1980,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
+
+ if (cmd->pending_delete_mem)
+ dm_pool_destroy(cmd->pending_delete_mem);
+-#ifndef VALGRIND_POOL
++#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
+ if (cmd->linebuffer) {
+ /* Reset stream buffering to defaults */
+ if (is_valid_fd(STDIN_FILENO) &&
+diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
+index 860e6de..c7539bd 100644
+--- a/tools/lvmcmdline.c
++++ b/tools/lvmcmdline.c
+@@ -3209,6 +3209,7 @@ int lvm_split(char *str, int *argc, char **argv, int max)
+ /* Make sure we have always valid filedescriptors 0,1,2 */
+ static int _check_standard_fds(void)
+ {
++#ifdef __GLIBC__
+ int err = is_valid_fd(STDERR_FILENO);
+
+ if (!is_valid_fd(STDIN_FILENO) &&
+@@ -3236,6 +3237,12 @@ static int _check_standard_fds(void)
+ return 0;
+ }
+
++#else
++ if (!is_valid_fd(STDERR_FILENO) ||
++ !is_valid_fd(STDOUT_FILENO) ||
++ !is_valid_fd(STDIN_FILENO))
++ return 0;
++#endif
+ return 1;
+ }
+
+--- ./lib/mm/memlock.c.orig 2015-03-09 11:18:41.560028850 -0100
++++ ./lib/mm/memlock.c 2015-03-09 11:19:54.504373309 -0100
+@@ -137,7 +137,7 @@
+
+ static void _allocate_memory(void)
+ {
+-#ifndef VALGRIND_POOL
++#if !defined(VALGRIND_POOL) && defined(__GLIBC__)
+ void *stack_mem;
+ struct rlimit limit;
+ int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks;
diff --git a/extra/lvm2/sources b/extra/lvm2/sources
new file mode 100644
index 00000000..34dd5d35
--- /dev/null
+++ b/extra/lvm2/sources
@@ -0,0 +1,3 @@
+https://mirrors.kernel.org/sourceware/lvm2/releases/LVM2.2.03.06.tgz
+patches/fix-stdio-usage.patch
+patches/disable-symver.patch
diff --git a/extra/lvm2/version b/extra/lvm2/version
new file mode 100644
index 00000000..7ddcde45
--- /dev/null
+++ b/extra/lvm2/version
@@ -0,0 +1 @@
+2.03.06 1