[sheepdog-users] About bundling libraries (at least one library isa-l)

Hitoshi Mitake mitake.hitoshi at lab.ntt.co.jp
Wed Dec 3 10:32:13 CET 2014


At Mon, 24 Nov 2014 17:15:33 +0100,
Marcin Mirosław wrote:
> 
> It looks I solved problems with isa-l library. Build system for isa-l
> isn't friendly (or is too friendly). THis patch solves problem when
> building target "slib":

Thanks a lot for your patch! Could you submit the patch with the guideline:
https://github.com/sheepdog/sheepdog/wiki/Submit-a-patch
?
# e.g. Signed-off-by is required, and adding a message to the bottom part is not allowed

Thanks,
Hitoshi

> 
> --- a/make.inc
> +++ b/make.inc
> @@ -38,7 +38,7 @@
>  #      trace - get simulator trace
>  #      clean - remove object files
> 
> -CC  = gcc
> +CC  ?= gcc
>  AS  = yasm
>  SIM = sde $(SIMFLAGS) --
> 
> @@ -78,10 +78,9 @@ endif
> 
> 
>  INCLUDE   = $(patsubst %,-I%,$(subst :, ,$(VPATH)))
> -CFLAGS   = $(CFLAGS_$(arch)) $(CFLAGS_$(CC)) $(DEBUG) -O2 $(DEFINES)
> $(INCLUDE)
> -ASFLAGS  = $(ASFLAGS_$(arch)) $(ASFLAGS_$(CC)) $(DEBUG_$(AS))
> $(DEFINES) $(INCLUDE)
> +CFLAGS   += $(DEFINES) $(INCLUDE)
> +ASFLAGS  += $(ASFLAGS_$(arch)) $(DEFINES) $(INCLUDE)
>  ARFLAGS  = $(ARFLAGS_$(arch))
> -DEFINES += $(addprefix -D , $D)
> 
>  O = bin
>  lobj  += $(patsubst %.c,%.o,$(patsubst %.asm,%.o,$(lsrc$(arch))))
> @@ -138,15 +137,15 @@ msg = $(if $(DEBUG),DEBUG) $(patsubst
> 32,32-bit,$(arch)) $D
> 
>  $(O)/%.o: %.asm
>         @echo "  ---> Building $< $(msg)"
> -       @$(AS) $(ASFLAGS) -o $@ $<
> +       $(AS) $(ASFLAGS) -o $@ $<
> 
>  $(O)/%.o %.o: %.c
>         @echo "  ---> Building $< $(msg)"
> -       @$(COMPILE.c) $(OUTPUT_OPTION) $<
> +       $(COMPILE.c) $(OUTPUT_OPTION) $<
> 
>  $(all_tests):
>         @echo "  ---> Building Test $@ $(msg)"
> -       @$(LINK.o) $(CFLAGS)  $^ $(LDLIBS) -o $@
> +       $(LINK.o) $(CFLAGS)  $^ $(LDLIBS) -o $@
> 
> 
>  # Target to build lib files
> @@ -163,8 +162,7 @@ endif
>  #lib $(lib_name): $(lib_name)(${objs})
>  $(lib_name): $(objs)
>         @echo "  ---> Creating Lib $@"
> -       @$(AR) $(ARFLAGS) $^
> -       @$(STRIP_$(CC))
> +       $(AR) $(ARFLAGS) $^
> 
> 
>  # Target for shared lib
> @@ -175,7 +173,7 @@ shared_objs  += $(addprefix
> $(O)/shared_ver_,$(patsubst %.c,%.o,$(filter %.c,$(l
> 
>  $(O)/shared_ver_%.o: %.c
>         @echo "  ---> Building shared $< $(msg)"
> -       @$(COMPILE.c) $(OUTPUT_OPTION) $<
> +       $(COMPILE.c) $(OUTPUT_OPTION) $<
> 
>  ifneq ($(lib_debug),1)
>   $(so_lib_name): DEBUG_$(AS)=
> @@ -187,7 +185,7 @@ $(shared_objs): CFLAGS += -fPIC
>  $(shared_objs) $(aobjs): | $(O)
>  $(so_lib_name): $(shared_objs) $(aobjs)
>         @echo "  ---> Creating Shared Lib $@"
> -       @$(CC) $(CFLAGS) --shared  $(LDFLAGS) -o $@ $^
> +       $(CC) $(CFLAGS) --shared  $(LDFLAGS) -Wl,-z,noexecstack -o $@ $^
> 
> 
>  # Collect performance data
> @@ -202,7 +200,7 @@ perf_report:
> 
>  clean:
>         @echo Cleaning up
> -       @$(RM) -r $(O) *.o *.a $(all_tests) $(lib_name) $(so_lib_name)
> +       $(RM) -r $(O) *.o *.a $(all_tests) $(lib_name) $(so_lib_name)
> 
> 
> So now I've got isa-l.so library installed in system. And with this
> patch I'm unbundling isa-l from sheepdog:
> 
> --- a/dog/Makefile.am
> +++ b/dog/Makefile.am
> @@ -36,7 +36,7 @@ if BUILD_NFS
>  dog_SOURCES            += nfs.c
>  endif
> 
> -dog_LDADD              = ../lib/libsheepdog.a -lpthread
> +dog_LDADD              = ../lib/libsheepdog.a -lpthread -lisa-l
>  dog_DEPENDENCIES       = ../lib/libsheepdog.a
> 
>  noinst_HEADERS         = treeview.h dog.h farm/farm.h
> diff --git a/include/fec.h b/include/fec.h
> index 1ae32e4..e317fcb 100644
> --- a/include/fec.h
> +++ b/include/fec.h
> @@ -64,7 +64,7 @@
> 
>  #include "util.h"
>  #include "sheepdog_proto.h"
> -#include "../lib/isa-l/include/erasure_code.h"
> +#include "erasure_code.h"
> 
>  struct fec {
>         unsigned long magic;
> diff --git a/lib/Makefile.am b/lib/Makefile.am
> index a43076e..5b6ac1d 100644
> --- a/lib/Makefile.am
> +++ b/lib/Makefile.am
> @@ -4,29 +4,11 @@ AM_CPPFLAGS                = -I$(top_builddir)/include
> -I$(top_srcdir)/include
> 
>  libsheepdog_a_DEPENDENCIES =
> 
> -noinst_LIBRARIES       = libisa.a libsheepdog.a
> -
> -libisa_a_SOURCES       = $(shell find isa-l/ -type f -regex
> ".*\.\(c\|h\|asm\)") \
> -                         isa-l/erasure_code/Makefile \
> -                         isa-l/Makefile \
> -                         isa-l/Makefile.nmake \
> -                         isa-l/make.inc
> +noinst_LIBRARIES       = libsheepdog.a
> 
>  libsheepdog_a_SOURCES  = event.c logger.c net.c util.c rbtree.c strbuf.c \
>                           sha1.c option.c work.c sockfd_cache.c fec.c
> sd_inode.c
> 
> -libsheepdog_a_LIBADD   = isa-l/bin/ec_base.o \
> -                         isa-l/bin/ec_highlevel_func.o \
> -                         isa-l/bin/ec_multibinary.o \
> -                         isa-l/bin/gf_2vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_3vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_4vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_5vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_6vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_vect_dot_prod_sse.o \
> -                         isa-l/bin/gf_vect_mul_avx.o \
> -                         isa-l/bin/gf_vect_mul_sse.o
> -
>  if BUILD_SHA1_HW
>  libsheepdog_a_SOURCES  += sha1_ssse3.S
>  endif
> @@ -41,9 +23,3 @@ check-syntax:
> 
>  check-style:
>         @$(CHECK_STYLE) $(libsheepdog_a_SOURCES)
> -
> -libisa.a:
> -       cd isa-l/ && $(MAKE) && cd ..
> -
> -clean:
> -       cd isa-l/ && $(MAKE) clean && cd ..
> diff --git a/sheep/Makefile.am b/sheep/Makefile.am
> index 406a4ec..e6f90c5 100644
> --- a/sheep/Makefile.am
> +++ b/sheep/Makefile.am
> @@ -53,7 +53,7 @@ AM_CPPFLAGS           += -DENABLE_TRACE
>  sheep_SOURCES          += trace/trace.c trace/mcount.S trace/graph.c
> trace/checker.c
>  endif
> 
> -sheep_LDADD            = ../lib/libsheepdog.a -lpthread -lm\
> +sheep_LDADD            = ../lib/libsheepdog.a -lpthread -lm -lisa-l\
>                           $(libcpg_LIBS) $(libcfg_LIBS) $(libacrd_LIBS)
> $(LIBS)
> 
>  if BUILD_NFS
> 
> 
> 
> 
> # scanelf -n dog sheep
>  TYPE   NEEDED FILE
> ET_DYN libpthread.so.0,libisa-l.so,librt.so.1,libc.so.6 dog
> ET_DYN libpthread.so.0,libm.so.6,libisa-l.so,librt.so.1,libc.so.6 sheep
> 
> And I hope sheep uses isa-l in work;)
> 
> Marcin
> -- 
> sheepdog-users mailing lists
> sheepdog-users at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog-users



More information about the sheepdog-users mailing list