📄 base_libs.spec
字号:
%define __os_install_post %{nil}%define pfx /opt/freescale/rootfs/%{_target_cpu}Summary : Base Libraries (from toolchain).Name : base_libsVersion : 1.2Release : 1License : LGPLVendor : Freescale Inc.Packager : Steve Papacharalambous/Stuart HughesGroup : System Environment/LibrariesBuildRoot : %{_tmppath}/%{name}Prefix : %{pfx}%Description%{summary}%Prep%Buildcat <<TXTPKG_LIBC_WANT_SHARED_LIBS : $PKG_LIBC_WANT_SHARED_LIBSPKG_LIBC_WANT_CRT_FILES : $PKG_LIBC_WANT_CRT_FILESPKG_LIBC_WANT_HEADERS1 : $PKG_LIBC_WANT_HEADERS1PKG_LIBC_WANT_STATIC_LIBS : $PKG_LIBC_WANT_STATIC_LIBSPKG_LIBC_WANT_C_LOCALES : $PKG_LIBC_WANT_C_LOCALESPKG_CXX_WANT_SHARED_LIBS : $PKG_CXX_WANT_SHARED_LIBSPKG_CXX_WANT_HEADERS : $PKG_CXX_WANT_HEADERSPKG_CXX_WANT_STATIC_LIBS : $PKG_CXX_WANT_STATIC_LIBSPKG_GCC_WANT_LIBGCC_SHARED : $PKG_GCC_WANT_LIBGCC_SHAREDTXTTC_PREFIX="`which ${TOOLCHAIN_PREFIX}gcc | perl -p -e 's,/bin/'${TOOLCHAIN_PREFIX}'gcc,,'`"%Installrm -rf $RPM_BUILD_ROOTX_DIR=`echo $TOOLCHAIN_PREFIX | sed -e 's,-$,,'`TC_PREFIX="`which ${TOOLCHAIN_PREFIX}gcc | perl -p -e 's,/bin/'${TOOLCHAIN_PREFIX}'gcc,,'`"if [ "$TOOLCHAIN_TYPE" = "64" ]then SLIBS=lib64else SLIBS=libfiif [ -d "$TC_PREFIX/$X_DIR/libc" ]then TC_TYPE=CSLelif [ -d "$TC_PREFIX/$X_DIR/sysroot" ]then TC_TYPE=EGLIBCelif [ -d "$TC_PREFIX/$X_DIR/sys-root" ]then TC_TYPE=XTOOL-SYSROOTelif [ -d "$TC_PREFIX/$X_DIR/target_utils" ]then TC_TYPE=UCLIBCelse TC_TYPE=XTOOLfiif [ "$TC_TYPE" = "UCLIBC" ]then SHARED_LIBS_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=libc.so.0\``"else SHARED_LIBS_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=libc.so.6\``"fiSTATIC_LIBS_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=libc.a\``"GCC_SLIB_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=libgcc_s.so\``"CPP_LIB_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=libstdc++.so\``"CRT_FILES_DIR="`dirname \`${TOOLCHAIN_PREFIX}gcc ${TOOLCHAIN_CFLAGS} -print-file-name=crti.o\``"# create output directories in a dash compatible wayfor i in etc usr/bin sbin lib usr/lib usr/share usr/includedo mkdir -p $RPM_BUILD_ROOT/%{pfx}/$idoneif [ -n "$PKG_LIBC_WANT_SHARED_LIBS" ]then set +e cp -dp $SHARED_LIBS_DIR/*.so* $RPM_BUILD_ROOT/%{pfx}/lib/ # Note: I think that the next copy line is really only needed for the # linker script files libc.so and libpthread.so # Don't do the next line for uClibc toolchains as usr/lib # is a symbolic link to lib! - Stevep if [ -z "$UCLIBC" ] then cp -dp $SHARED_LIBS_DIR/../usr/lib/*.so* $RPM_BUILD_ROOT/%{pfx}/usr/lib/ fi rm -f $RPM_BUILD_ROOT/%{pfx}/lib/libstdc++*.so* rm -f $RPM_BUILD_ROOT/%{pfx}/usr/lib/libstdc++*.so* rm -f $RPM_BUILD_ROOT/%{pfx}/lib/libgcc*.so* rm -f $RPM_BUILD_ROOT/%{pfx}/usr/lib/libgcc*.so* if [ "$TC_TYPE" = "CSL" ] then i=`echo $STATIC_LIBS_DIR | perl -n -e 's,.*(libc)(/\w+)?/usr.*,, && print $1,$2'` elif [ "$TC_TYPE" = "EGLIBC" ] then i="sysroot" elif [ "$TC_TYPE" = "XTOOL-SYSROOT" ] then i="sys-root" else i= fi if [ -z "$UCLIBC" ] then if [ "$TC_TYPE" = "XTOOL" ] then cp -a $TC_PREFIX/$X_DIR/$i/bin/ldd $RPM_BUILD_ROOT/%{pfx}/usr/bin else cp -a $TC_PREFIX/$X_DIR/$i/usr/bin/ldd $RPM_BUILD_ROOT/%{pfx}/usr/bin fi cp -a $TC_PREFIX/$X_DIR/$i/sbin/ldconfig $RPM_BUILD_ROOT/%{pfx}/sbin else cp $TC_PREFIX/$X_DIR/$i/target_utils/ldd $RPM_BUILD_ROOT/%{pfx}/usr/bin fi set -efiif [ -n "$PKG_LIBC_WANT_CRT_FILES" ]then cp -dp $CRT_FILES_DIR/*crt*.o $RPM_BUILD_ROOT/%{pfx}/usr/lib/fiif [ -n "$PKG_LIBC_WANT_HEADERS1" ]then if [ "$TC_TYPE" = "CSL" ] then cp -a $TC_PREFIX/$X_DIR/libc/usr/include $RPM_BUILD_ROOT/%{pfx}/usr elif [ "$TC_TYPE" = "EGLIBC" ] then cp -a $TC_PREFIX/$X_DIR/sysroot/usr/include $RPM_BUILD_ROOT/%{pfx}/usr elif [ "$TC_TYPE" = "XTOOL-SYSROOT" ] then cp -a $TC_PREFIX/$X_DIR/sys-root/usr/include $RPM_BUILD_ROOT/%{pfx}/usr else for i in $TC_PREFIX/$X_DIR/include $TC_PREFIX/include do if [ -f $i/stdio.h ] then cp -a $i $RPM_BUILD_ROOT/%{pfx}/usr break fi done rm -rf $RPM_BUILD_ROOT/%{pfx}/usr/include/c++ fifiif [ -n "$PKG_LIBC_WANT_STATIC_LIBS" ]then cp -dp $STATIC_LIBS_DIR/*.a $RPM_BUILD_ROOT/%{pfx}/usr/lib/ rm -f $RPM_BUILD_ROOT/%{pfx}/usr/lib/libstdc++*a* rm -f $RPM_BUILD_ROOT/%{pfx}/usr/lib/libsupc++*a*fiif [ -n "$PKG_LIBC_WANT_C_LOCALES" ]then set +e if [ -n "$UCLIBC" ] then cp -a $TC_PREFIX/usr/share/locale $RPM_BUILD_ROOT/%{pfx}/usr/share else if [ "$TC_TYPE" = "CSL" ] then i=`echo $STATIC_LIBS_DIR | perl -n -e 's,.*(libc)(/\w+)?(/usr).*,, && print $1,$2,$3'` elif [ "$TC_TYPE" = "EGLIBC" ] then i="sysroot/usr" elif [ "$TC_TYPE" = "XTOOL-SYSROOT" ] then i="sys-root/usr" else i= fi cp -a $TC_PREFIX/$X_DIR/$i/share/locale $RPM_BUILD_ROOT/%{pfx}/usr/share for j in tzselect locale localedef do cp -a $TC_PREFIX/$X_DIR/$i/bin/$j $RPM_BUILD_ROOT/%{pfx}/usr/bin/ done cp -a $TC_PREFIX/$X_DIR/$i/share/locale $RPM_BUILD_ROOT/%{pfx}/usr/share cp -a $TC_PREFIX/$X_DIR/$i/$SLIBS/gconv $RPM_BUILD_ROOT/%{pfx}/usr/lib/ fi set -efiif [ -n "$PKG_CXX_WANT_SHARED_LIBS" ]then # Note: The libstdc++ shared libraries really belong in rootfs/usr/lib # but historically ltib has put them in rootfs/lib. To minimize # changes and potential problems they have been left in rootfs/lib # for the time being. - Stevep. set +e cp -dp $CPP_LIB_DIR/libstdc++*.so* $RPM_BUILD_ROOT/%{pfx}/lib/ set -efiif [ -n "$PKG_CXX_WANT_HEADERS" ]then if [ "$TC_TYPE" = "CSL" -a -d $TC_PREFIX/$X_DIR/include/c++ ] then i=$X_DIR else i= fi cp -a $TC_PREFIX/$i/include/c++ $RPM_BUILD_ROOT/%{pfx}/usr/includefiif [ -n "$PKG_CXX_WANT_STATIC_LIBS" ]then cp -dp $CPP_LIB_DIR/libstdc++*.a $RPM_BUILD_ROOT/%{pfx}/usr/lib/ cp -dp $CPP_LIB_DIR/libsupc++*.a $RPM_BUILD_ROOT/%{pfx}/usr/lib/fiif [ -n "$PKG_GCC_WANT_LIBGCC_SHARED" ]then set +e cp -dp $GCC_SLIB_DIR/libgcc*.so* $RPM_BUILD_ROOT/%{pfx}/lib/ set -efi# remove absolute paths from text search files (if they exist)perl -w -e ' @ARGV = grep { `file $_` =~ m,ASCII C program text, } @ARGV; exit(0) unless @ARGV; $^I = ".bak"; while(<>) { s,[\S/]+/,,g if m,^GROUP,; print; } ' $RPM_BUILD_ROOT/%{pfx}/lib/libc.so \ $RPM_BUILD_ROOT/%{pfx}/lib/libpthread.so \ $RPM_BUILD_ROOT/%{pfx}/usr/lib/libc.so \ $RPM_BUILD_ROOT/%{pfx}/usr/lib/libpthread.socd $RPM_BUILD_ROOT/%{pfx}# this is necessary to avoid annoying warnings from ldd about no execute# permissions for some malformed uClibc toolchainsfind $RPM_BUILD_ROOT/%{pfx}/lib | xargs chmod 755find $RPM_BUILD_ROOT/%{pfx}/usr/lib | xargs chmod 755# relocate all symlink .so (linker files) to usr/libcd libfind . -name \*.so | perl -n -e ' chomp; if(! -l && -f _ && m,(?:libpthread.so|libc.so)$, ) { print "Moving file $_ to ../usr/lib/\n"; system("mv $_ ../usr/lib") == 0 or die; } next unless -l $_ ; $ltgt = readlink(); $snam = substr($_, rindex($_, "/") + 1); if(! -l "../usr/lib/$snam") { print "Moving symlink $_ ($ltgt) to ../usr/lib/$snam\n"; unlink $_; symlink("../../lib/$ltgt", "../usr/lib/$snam") or die "symlink(../../lib/$ltgt, ../usr/lib/$snam) : $!\n"; }' %Cleanrm -rf $RPM_BUILD_ROOT%Files%defattr(-,root,root)%{pfx}/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -