%global majorver 1 %global minorver %{majorver}.0 %global updatever %{minorver}.0 Summary: Better String library Name: bstrlib Version: %{updatever} Release: 1%{?dist} #The entire source code is BSD or GPLv2 except bsafe.c,bsafe.h,bstest.c,testaux.c,test.cpp which are BSD License: BSD and (BSD or GPLv2) URL: http://bstring.sourceforge.net/ Source0: https://github.com/websnarf/bstrlib/archive/v%{updatever}.zip Source1: Makefile BuildRequires: gcc-c++ %description A string data type abstraction superior to that of C library. %package devel Summary: Bstrlib development libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Bstrlib development libraries. %package -n bstrlib-safe Summary: Bstrlib safety module Requires:%{name}%{?_isa} = %{version}-%{release} License: BSD %description -n bstrlib-safe Overriding the dangerous C char library functions. %package -n bstrlib-safe-devel Summary: Bstrlib-safe development libraries Requires:bstrlib-safe%{?_isa} = %{version}-%{release}, %{name}%{?_isa} = %{version}-%{release} License: BSD %description -n bstrlib-safe-devel Bstrlib safety modulus development libraries. %prep %setup -q cp -p %{SOURCE1} Makefile sed -i "s|@VER@|%{version}|g" Makefile %build # Build Bstrlib make %{?_smp_mflags} RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="%__global_ldflags" bstrlib ln -sf libbstr.so.%{version} libbstr.so #will be linked to Bstrlib-c++ and Bstrlib-safe # Build Bstrlib-c++ warper make %{?_smp_mflags} RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="%__global_ldflags" bstrlibc++ # Build Bstrlib-safe make %{?_smp_mflags} RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="%__global_ldflags" bstrlibsafe %install mkdir -p ${RPM_BUILD_ROOT}%{_libdir} for f in libbstr.so.%{version} libbstrsafe.so.%{version} libbstrc++.so.%{version}; do cp -p -f ${RPM_BUILD_DIR}/%{name}-%{updatever}/$f ${RPM_BUILD_ROOT}%{_libdir}/$f done make clean # Bstrlib headers mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/bstrlib/ cp -a ${RPM_BUILD_DIR}/%{name}-%{updatever}/*.h ${RPM_BUILD_ROOT}%{_includedir}/bstrlib/ cd ${RPM_BUILD_ROOT}%{_libdir} ln -sf libbstr.so.%{version} libbstr.so ln -sf libbstr.so.%{version} libbstr.so.%{majorver} ln -sf libbstr.so.%{version} libbstr.so.%{minorver} ln -sf libbstrsafe.so.%{version} libbstrsafe.so ln -sf libbstrsafe.so.%{version} libbstrsafe.so.%{majorver} ln -sf libbstrsafe.so.%{version} libbstrsafe.so.%{minorver} ln -sf libbstrc++.so.%{version} libbstrc++.so ln -sf libbstrc++.so.%{version} libbstrc++.so.%{majorver} ln -sf libbstrc++.so.%{version} libbstrc++.so.%{minorver} %check #rpath is necessay for the compiled tests (which will not appear in the built package) to run here because ldconfig haven't run yet. mkdir test cd test gcc -c -Wall ${RPM_BUILD_DIR}/%{name}-%{updatever}/bstest.c gcc -g -Wall -o bstest -L${RPM_BUILD_ROOT}%{_libdir} -lbstr bstest.o -I${RPM_BUILD_DIR}%{_includedir}/bstrlib/ -Wl,-rpath=${RPM_BUILD_ROOT}%{_libdir} ./bstest gcc -c -Wall ${RPM_BUILD_DIR}/%{name}-%{updatever}/testaux.c gcc -g -Wall -o testaux -L${RPM_BUILD_ROOT}%{_libdir} -lbstr testaux.o -I${RPM_BUILD_DIR}%{_includedir}/bstrlib/ -Wl,-rpath=${RPM_BUILD_ROOT}%{_libdir} ./testaux g++ -c -Wall ${RPM_BUILD_DIR}/%{name}-%{updatever}/test.cpp g++ -g -Wall -o cxxtest -L${RPM_BUILD_ROOT}%{_libdir} -lbstrc++ -lbstr test.o -I${RPM_BUILD_DIR}%{_includedir}/bstrlib/ -Wl,-rpath=${RPM_BUILD_ROOT}%{_libdir} ./cxxtest cd .. rm -rf test %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %post -n bstrlib-safe -p /sbin/ldconfig %postun -n bstrlib-safe -p /sbin/ldconfig %files %doc README.md %license LICENSE gpl.txt %{_libdir}/libbstr.so.%{majorver} %{_libdir}/libbstr.so.%{minorver} %{_libdir}/libbstr.so.%{version} %{_libdir}/libbstrc++.so.%{majorver} %{_libdir}/libbstrc++.so.%{minorver} %{_libdir}/libbstrc++.so.%{version} %files devel %doc porting.txt bstrlib.txt %dir %{_includedir}/bstrlib/ %{_includedir}/bstrlib/bstraux.h %{_includedir}/bstrlib/bstrlib.h %{_includedir}/bstrlib/bstrwrap.h %{_includedir}/bstrlib/buniutil.h %{_includedir}/bstrlib/utf8util.h %{_libdir}/libbstr.so %{_libdir}/libbstrc++.so %files -n bstrlib-safe %doc security.txt %{_libdir}/libbstrsafe.so.%{majorver} %{_libdir}/libbstrsafe.so.%{minorver} %{_libdir}/libbstrsafe.so.%{version} %files -n bstrlib-safe-devel %{_includedir}/bstrlib/bsafe.h %{_libdir}/libbstrsafe.so %changelog * Sat Jul 29 2017 yecheng <18969068329@163.com> - 1.0.0-1 - Initial packaging