linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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,
>

  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).