All of lore.kernel.org
 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 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.