From: Anand Jain <Anand.Jain@oracle.com>
To: Mark Fasheh <mfasheh@suse.de>
Cc: chris.mason@fusionio.com, linux-btrfs@vger.kernel.org,
ablock84@googlemail.com
Subject: Re: [PATCH 2/3] btrfs-progs: libify some parts of btrfs-progs
Date: Fri, 11 Jan 2013 17:31:09 +0800 [thread overview]
Message-ID: <50EFDBDD.1040104@oracle.com> (raw)
In-Reply-To: <1357681304-2978-3-git-send-email-mfasheh@suse.de>
Mark,
test case :
make (Do not run make all)
make install
generates the following error..
install -m755 -d /usr/local/lib
install libbtrfs.so.1.0 libbtrfs.so.1 libbtrfs.so /usr/local/lib
install: cannot stat `libbtrfs.so.1.0': No such file or directory
install: cannot stat `libbtrfs.so.1': No such file or directory
install: cannot stat `libbtrfs.so': No such file or directory
make: *** [install] Error 1
Thanks, Anand
On 01/09/2013 05:41 AM, Mark Fasheh wrote:
> External software wanting to use the functionality provided by the btrfs
> send ioctl has a hard time doing so without replicating tons of work. Of
> particular interest are functions like btrfs_read_and_process_send_stream()
> and subvol_uuid_search(). As that functionality requires a bit more than
> just send-stream.c and send-utils.c we have to pull in some other parts of
> the progs package.
>
> This patch adds code to the Makefile and headers to create a library,
> libbtrfs which the btrfs command now links to.
>
> Signed-off-by: Mark Fasheh <mfasheh@suse.de>
> ---
> Makefile | 38 ++++++++++++++++++++++++++++----------
> btrfs-list.h | 4 ++++
> crc32c.h | 4 ++++
> ctree.h | 9 +++++++++
> extent-cache.h | 6 ++++++
> extent_io.h | 7 +++++++
> radix-tree.h | 4 ++++
> rbtree.h | 4 ++++
> send-utils.h | 5 +++++
> 9 files changed, 71 insertions(+), 10 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 4894903..29c63b1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,14 +1,17 @@
> CC = gcc
> -AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2
> -CFLAGS = -g -O1
> +AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -DBTRFS_FLAT_INCLUDES
> +CFLAGS = -g -O1 -fPIC
> objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \
> - root-tree.o dir-item.o file-item.o inode-item.o \
> - inode-map.o crc32c.o rbtree.o extent-cache.o extent_io.o \
> - volumes.o utils.o btrfs-list.o btrfslabel.o repair.o \
> - send-stream.o send-utils.o qgroup.o
> + root-tree.o dir-item.o file-item.o inode-item.o inode-map.o \
> + extent-cache.o extent_io.o volumes.o utils.o btrfslabel.o repair.o \
> + qgroup.o
> cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \
> cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \
> cmds-quota.o cmds-qgroup.o
> +libbtrfs_objects = send-stream.o send-utils.o rbtree.o btrfs-list.o crc32c.o
> +libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \
> + crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \
> + extent_io.h ioctl.h ctree.h
>
> CHECKFLAGS= -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise \
> -Wuninitialized -Wshadow -Wundef
> @@ -17,13 +20,18 @@ DEPFLAGS = -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@
> INSTALL = install
> prefix ?= /usr/local
> bindir = $(prefix)/bin
> -LIBS=-luuid -lm
> +libdir = $(prefix)/lib
> +incdir = $(prefix)/include/btrfs
> +LIBS=-luuid -lm -L. -lbtrfs
> RESTORE_LIBS=-lz
>
> progs = btrfsctl mkfs.btrfs btrfs-debug-tree btrfs-show btrfs-vol btrfsck \
> btrfs btrfs-map-logical btrfs-image btrfs-zero-log btrfs-convert \
> btrfs-find-root btrfs-restore btrfstune
>
> +libs = libbtrfs.so.1.0 libbtrfs.so.1 libbtrfs.so
> +headers = $(libbtrfs_headers)
> +
> # make C=1 to enable sparse
> ifdef C
> check = sparse $(CHECKFLAGS)
> @@ -36,11 +44,16 @@ endif
> $(CC) $(DEPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c $<
>
>
> -all: version $(progs) manpages
> +all: version $(libs) $(progs) manpages
>
> version:
> bash version.sh
>
> +$(libs): $(libbtrfs_objects) send.h
> + $(CC) $(CFLAGS) $(libbtrfs_objects) -shared -Wl,-soname,libbtrfs.so.1 -o libbtrfs.so.1.0
> + ln -sf libbtrfs.so.1.0 libbtrfs.so.1
> + ln -sf libbtrfs.so.1.0 libbtrfs.so
> +
> btrfs: $(objects) btrfs.o help.o common.o $(cmds_objects)
> $(CC) $(CFLAGS) -o btrfs btrfs.o help.o common.o $(cmds_objects) \
> $(objects) $(LDFLAGS) $(LIBS) -lpthread
> @@ -109,12 +122,17 @@ install-man:
> cd man; $(MAKE) install
>
> clean :
> - rm -f $(progs) cscope.out *.o .*.d btrfs-convert btrfs-image btrfs-select-super \
> - btrfs-zero-log btrfstune dir-test ioctl-test quick-test version.h
> + rm -f $(progs) $(libs) cscope.out *.o .*.d btrfs-convert btrfs-image \
> + btrfs-select-super btrfs-zero-log btrfstune dir-test ioctl-test \
> + quick-test version.h
> cd man; $(MAKE) clean
>
> install: $(progs) install-man
> $(INSTALL) -m755 -d $(DESTDIR)$(bindir)
> $(INSTALL) $(progs) $(DESTDIR)$(bindir)
> + $(INSTALL) -m755 -d $(DESTDIR)$(libdir)
> + $(INSTALL) $(libs) $(DESTDIR)$(libdir)
> + $(INSTALL) -m755 -d $(DESTDIR)$(incdir)
> + $(INSTALL) $(headers) $(DESTDIR)$(incdir)
>
> -include .*.d
> diff --git a/btrfs-list.h b/btrfs-list.h
> index cde4b3c..da6bf1c 100644
> --- a/btrfs-list.h
> +++ b/btrfs-list.h
> @@ -16,7 +16,11 @@
> * Boston, MA 021110-1307, USA.
> */
>
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> struct root_info;
>
> diff --git a/crc32c.h b/crc32c.h
> index 7f12e77..c552ef6 100644
> --- a/crc32c.h
> +++ b/crc32c.h
> @@ -19,7 +19,11 @@
> #ifndef __CRC32C__
> #define __CRC32C__
>
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> u32 crc32c_le(u32 seed, unsigned char const *data, size_t length);
> void crc32c_optimization_init(void);
> diff --git a/ctree.h b/ctree.h
> index 293b24f..7a1ffce 100644
> --- a/ctree.h
> +++ b/ctree.h
> @@ -19,12 +19,21 @@
> #ifndef __BTRFS__
> #define __BTRFS__
>
> +#if BTRFS_FLAT_INCLUDES
> #include "list.h"
> #include "kerncompat.h"
> #include "radix-tree.h"
> #include "extent-cache.h"
> #include "extent_io.h"
> #include "ioctl.h"
> +#else
> +#include <btrfs/list.h>
> +#include <btrfs/kerncompat.h>
> +#include <btrfs/radix-tree.h>
> +#include <btrfs/extent-cache.h>
> +#include <btrfs/extent_io.h>
> +#include <btrfs/ioctl.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> struct btrfs_root;
> struct btrfs_trans_handle;
> diff --git a/extent-cache.h b/extent-cache.h
> index 7f2f2a6..4cd0f79 100644
> --- a/extent-cache.h
> +++ b/extent-cache.h
> @@ -18,8 +18,14 @@
>
> #ifndef __PENDING_EXTENT__
> #define __PENDING_EXTENT__
> +
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> #include "rbtree.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#include <btrfs/rbtree.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> struct cache_tree {
> struct rb_root root;
> diff --git a/extent_io.h b/extent_io.h
> index a5d6bf0..4553859 100644
> --- a/extent_io.h
> +++ b/extent_io.h
> @@ -18,9 +18,16 @@
>
> #ifndef __EXTENTMAP__
> #define __EXTENTMAP__
> +
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> #include "extent-cache.h"
> #include "list.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#include <btrfs/extent-cache.h>
> +#include <btrfs/list.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> #define EXTENT_DIRTY 1
> #define EXTENT_WRITEBACK (1 << 1)
> diff --git a/radix-tree.h b/radix-tree.h
> index d99ea7e..bf96d83 100644
> --- a/radix-tree.h
> +++ b/radix-tree.h
> @@ -37,7 +37,11 @@
> #ifndef _LINUX_RADIX_TREE_H
> #define _LINUX_RADIX_TREE_H
>
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> #define RADIX_TREE_MAX_TAGS 2
>
> diff --git a/rbtree.h b/rbtree.h
> index bed054d..b636ddd 100644
> --- a/rbtree.h
> +++ b/rbtree.h
> @@ -93,7 +93,11 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
>
> #ifndef _LINUX_RBTREE_H
> #define _LINUX_RBTREE_H
> +#if BTRFS_FLAT_INCLUDES
> #include "kerncompat.h"
> +#else
> +#include <btrfs/kerncompat.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
> struct rb_node
> {
> unsigned long rb_parent_color;
> diff --git a/send-utils.h b/send-utils.h
> index da407eb..8040c50 100644
> --- a/send-utils.h
> +++ b/send-utils.h
> @@ -18,8 +18,13 @@
> #ifndef SEND_UTILS_H_
> #define SEND_UTILS_H_
>
> +#if BTRFS_FLAT_INCLUDES
> #include "ctree.h"
> #include "rbtree.h"
> +#else
> +#include <btrfs/ctree.h>
> +#include <btrfs/rbtree.h>
> +#endif /* BTRFS_FLAT_INCLUDES */
>
> enum subvol_search_type {
> subvol_search_by_root_id,
>
next prev parent reply other threads:[~2013-01-11 9:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-08 21:41 [PATCH 0/3] btrfs-progs: better support for external users of send Mark Fasheh
2013-01-08 21:41 ` [PATCH 1/3] btrfs-progs: Add support for BTRFS_SEND_FLAG_NO_FILE_DATA Mark Fasheh
2013-01-08 21:41 ` [PATCH 2/3] btrfs-progs: libify some parts of btrfs-progs Mark Fasheh
2013-01-11 9:31 ` Anand Jain [this message]
2013-01-11 23:00 ` Mark Fasheh
2013-01-14 3:42 ` Anand Jain
2013-01-14 18:16 ` Mark Fasheh
2013-01-14 22:27 ` Mark Fasheh
2013-01-14 3:43 ` Anand Jain
2013-01-14 18:10 ` Mark Fasheh
2013-01-15 8:06 ` Anand Jain
2013-01-16 22:11 ` Mark Fasheh
2013-01-14 14:18 ` Arvin Schnell
2013-01-14 18:14 ` Mark Fasheh
2013-01-14 22:26 ` Arvin Schnell
2013-01-15 12:46 ` Ilya Dryomov
2013-01-15 13:26 ` Arvin Schnell
2013-01-08 21:41 ` [PATCH 3/3] btrfs-progs: add send-test Mark Fasheh
2013-01-11 9:28 ` Anand Jain
2013-01-11 23:02 ` Mark Fasheh
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=50EFDBDD.1040104@oracle.com \
--to=anand.jain@oracle.com \
--cc=ablock84@googlemail.com \
--cc=chris.mason@fusionio.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=mfasheh@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).