rpmbuild制作rpm包

常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这里我们是以其软件包的格式来划分的,这两类系统分别提供了自己的软件包管理系统和相应的工具。类RedHat系统中软件包的后缀是rpm;类Debian系统中软件包的后缀是deb。另一方面,类RedHat系统提供了同名的rpm命令来安装、卸载、升级rpm软件包;类Debian系统同样提供了dpkg命令来对后缀是deb的软件包进行安装、卸载和升级等操作。
   rpm的全称是Redhat Package Manager,常见的使用rpm软件包的系统主要有Fedora、CentOS、openSUSE、SUSE企业版、PCLinuxOS以及Mandriva Linux、Mageia等。使用deb软件包后缀的类Debian系统最常见的有Debian、Ubuntu、Finnix等。

从软件运行的结构来说,一个软件主要可以分为三个部分:可执行程序、配置文件和动态库。当然还有可能会有相关文档、手册、供二次开发用的头文件以及一些示例程序等等。其他部分都是可选的,只有可执行文件是必须的。

rpmbuild默认工作路径的确定,通常由在/usr/lib/rpm/macros这个文件里的一个叫做%_topdir的宏变量来定义。如果用户想更改这个目录名,rpm官方并不推荐直接更改这个目录,而是在用户家目录下建立一个名为.rpmmacros的隐藏文件(注意前面的点不能少,这是Linux下隐藏文件的常识),然后在里面重新定义%_topdir,指向一个新的目录名。这样就可以满足某些“高级”用户的差异化需求了。通常情况下.rpmmacros文件里一般只有一行内容

1 %_topdir    $HOME/rpmbuild

echo '%_topdir %(echo $HOME)/path/to/dir' > .rpmmacros

rpmdev-setuptree会在%_topdir自动生成目录结构

此外rpm -ivh name-version-release.src.rpm时,会在%_topdir的相关目录中安装包(其实就是拷贝),此过程需要%_topdir变量

1. 查看变量:

rpmbuild --showrc

 rpmbuild --target x86_64 可指明目标平台架构

2. spec文件

 Name:                  myapp <===软件包的名字(后面会用到)
Version:               0.1.0 <===软件包的版本(后面会用到)
Release:               1%{?dist} <===发布序号
Summary:               my first rpm <===软件包的摘要信息
Group:                 <===软件包的安装分类,参见/usr/share/doc/rpm-4.x.x/GROUPS这个文件
License:               GPL <===软件的授权方式
URL:                   <===这里本来写源码包的下载路径或者自己的博客地址或者公司网址之类
Source0:               %{name}-%{version}.tar.gz <===源代码包的名称(默认时rpmbuid回到SOURCES目录中去找),这里的name和version就是前两行定义的值。如果有其他配置或脚本则依次用Source1、Source2等等往后增加即可。
BuildRoot:             %{_topdir}/BUILDROOT <=== 这是make install时使用的“虚拟”根目录,最终制作rpm安装包的文件就来自这里。
BuildRequires:         <=== 在本机编译rpm包时需要的辅助工具,以逗号分隔。假如,要求编译myapp时,gcc的版本至少为4.4.2,则可以写成gcc >=4.2.2。还有其他依赖的话则以逗号分别继续写道后面。
Requires:              <=== 编译好的rpm软件在其他机器上安装时,需要依赖的其他软件包,也以逗号分隔,有版本需求的可以
%description           <=== 软件包的详细说明信息,但最多只能有80个英文字符

%{_tmppath}代表的路径为 /var/tmp

SPEC文件各阶段:

  • %prep
    源代码的解压和打补丁,最常见的指令
    %setup -q

    位于SOURCES目录下的源码包必须为name-version.tar.gz格式,会自动进行后续阶段的目录切换和设置

  • %build
    一般执行configure和make,常见指令
    %configure
    make %{?_smp_mflags}

    软件安装时路径默认设置(configure的默认设置):

  1. --build=x86_64-redhat-linux-gnu
  2. --host=x86_64-redhat-linux-gnu
  3. --program-prefix=
  4. --prefix=/usr
  5. --exec-prefix=/usr
  6. --bindir=/usr/bin
  7. --sbindir=/usr/sbin
  8. --sysconfdir=/etc
  9. --datadir=/usr/share
  10. --includedir=/usr/include   二次开发的头文件
  11. --libdir=/usr/lib64   库文件路径,32和64系统是不同的
  12. --libexecdir=/usr/libexec
  13. --localstatedir=/var
  14. --sharestatedir=/var/lib
  15. --mandir=/usr/share/man
  16. --infodir=/usr/share/info

  %configure是个宏常量,会自动设置上面的默认路径,可接受额外参数,可不使用%configure的宏,自定义configure的配置参数,同样可给make传递额外参数

  • %install
    这个阶段执行make install操作,会在%_buildrootdir中建好目录结构,将需要打包到rpm中的文件从%_builddir复制到%_buildrootdir对应目录中,常见指令
    1 rm -rf $RPM_BUILD_ROOT
    2 make install DESTDIR=$RPM_BUILD_ROOT

    $RPM_BUILD_ROOT即是buildroot变量,可写成%{buildroot},需小写.如果有额外的配置文件,启动脚本,可手动用copy,install拷贝到%{buildroot}目录中.

  • %clean
    编译完成后的清理工作,对%{buildroot}目录清空,make clean等
  • %files
    说明%{buildroot}目录下的哪些文件和目录打包到rpm中
    1 %files
    2 %defattr(-,root,root,-)
    3 %doc
    4 
    5 %defattr(文件权限,用户名,组名,目录权限)

    如果没有定制特殊权限,则使用默认%defattr(-,root,root,-)设置缺省权限
    %files
    %{_bindir}/*
    %{_libdir}/*
    %config(noreplace) %{_sysconfdir}/*.conf
    打包文件列表可以宏常量开头,也可以/开头,无区别,都表示从%{buildroot}中复制到rpm中,相对路径,表示复制的文件位于%{_builddir}目录,适用于在%install阶段没有复制到%{buildroot}目录中的文件,i.g. README,LICENSE
    不想将%{buildroot}中的文件或目录打包,则使用%exclude file_name.
    %{buildroot}所有文件都要显式指明是否打包到rpm中.
    %doc宏,所有跟在这个宏后面的文件都来自%{_builddir}目录,安装rpm时,此宏所指的的文件都会安装到/usr/share/doc/name-version/中

  • %changelog
    记录日志变更
    * date +"%a %b %d %Y" author mailbox version
    - something that has changed
  • %package
    定义子包
    %package -n openstack-dashboard
    Summary:    Openstack web user interface reference implementation
    Group:      Applications/System
    
    Requires:   httpd
    
    %description doc
    Documentation for the Django Horizon application for talking with Openstack

Group:

软件包所属类别,具体类别有:

  • Amusements/Games (娱乐/游戏)
  • Amusements/Graphics(娱乐/图形)
  • Applications/Archiving (应用/文档)
  • Applications/Communications(应用/通讯)
  • Applications/Databases (应用/数据库)
  • Applications/Editors (应用/编辑器)
  • Applications/Emulators (应用/仿真器)
  • Applications/Engineering (应用/工程)
  • Applications/File (应用/文件)
  • Applications/Internet (应用/因特网)
  • Applications/Multimedia(应用/多媒体)
  • Applications/Productivity (应用/产品)
  • Applications/Publishing(应用/印刷)
  • Applications/System(应用/系统)
  • Applications/Text (应用/文本)
  • Development/Debuggers (开发/调试器)
  • Development/Languages (开发/语言)
  • Development/Libraries (开发/函数库)
  • Development/System (开发/系统)
  • Development/Tools (开发/工具)
  • Documentation (文档)
  • System Environment/Base(系统环境/基础)
  • System Environment/Daemons (系统环境/守护)
  • System Environment/Kernel (系统环境/内核)
  • System Environment/Libraries (系统环境/函数库)
  • System Environment/Shells (系统环境/接口)
  • User Interface/Desktops(用户界面/桌面)
  • User Interface/X (用户界面/X窗口)
  • User Interface/X Hardware Support (用户界面/X硬件支持)

practice

一.libmad-0.15.1b.tar.gz
http://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz

  1. cd ~
  2. mkdir -pv rpmbuild/{BUILD,SOURCES,RPMS,SRPMS,SPECS}
  3. cd rpmbuild && rpmdev-newspec -o SPECS/libmad.spec
  4. libmad.spec
     1 Name:           libmad
     2 Version:        0.15.1b
     3 Release:        1%{?dist}
     4 Summary:        MP3 Codec
     5 
     6 Epoch:        1
     7 Provides:    libmad
     8 Packager:    occurence
     9 Vendor:        occurence
    10 Group:        System Environment/Base
    11 License:        GPL
    12 Distribution:    instrumentation
    13 URL:            http://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz
    14 BuildRoot:    %{_topdir}/BUILDROOT
    15 Source0:        %{name}-%{version}.tar.gz
    16 Source1:    mere_doc
    17 
    18 BuildRequires:  gcc,gcc-c++
    19 Requires:       gcc,gcc-c++
    20 #Conflicts:
    21 BuildArch:    x86_64
    22 
    23 %description
    24 libmad mp3 codec
    25 
    26 %package        devel
    27 Summary:        Development files for %{name}
    28 Group:        Development/Libraries
    29 Requires:       %{name}%{?_isa} = %{version}-%{release}
    30 
    31 %description    devel
    32 The %{name}-devel package contains libraries and header files for
    33 developing applications that use %{name}.
    34 
    35 
    36 %prep
    37 %setup -q
    38 install -pm 777 %{SOURCE1} .
    39 
    40 
    41 %build
    42 sed -i '/-fforce/d' configure
    43 sed -i '/-fforce-mem/d' configure
    44 %configure --enable-shared
    45 make %{?_smp_mflags}
    46 
    47 
    48 %install
    49 rm -rf $RPM_BUILD_ROOT
    50 make install DESTDIR=$RPM_BUILD_ROOT
    51 #%make_install
    52 #find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
    53 
    54 %clean
    55 #rm -rf $RPM_BUILD_ROOT
    56 
    57 %post -p /sbin/ldconfig
    58 
    59 %postun -p /sbin/ldconfig
    60 
    61 
    62 %files
    63 %defattr(-,root,root,-)
    64 %doc
    65 %{_libdir}/
    66 %{_includedir}/*
    67 
    68 %files devel
    69 %doc mere_doc
    70 %{_includedir}/*
    71 %{_libdir}/*.so
    72 
    73 
    74 %changelog
    75 * Fri Jun 05 2020  margin <margin@margin.margin.com> 0.15.1b
    76 - Initail version
    View Code
  5. mere_doc仅为测试观察其位置

  6. 打包过程
      1 [root@pend3 rpmbuild]# rpmbuild -ba SPECS/libmad-0.15.1b.spec 
      2 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wpRYaU
      3 + umask 022
      4 + cd /root/rpmbuild/BUILD
      5 + cd /root/rpmbuild/BUILD
      6 + rm -rf libmad-0.15.1b
      7 + /usr/bin/gzip -dc /root/rpmbuild/SOURCES/libmad-0.15.1b.tar.gz
      8 + /usr/bin/tar -xf -
      9 + STATUS=0
     10 + '[' 0 -ne 0 ']'
     11 + cd libmad-0.15.1b
     12 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
     13 + install -pm 777 /root/rpmbuild/SOURCES/mere_doc .
     14 + exit 0
     15 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.PYGwYR
     16 + umask 022
     17 + cd /root/rpmbuild/BUILD
     18 + cd libmad-0.15.1b
     19 + sed -i /-fforce/d configure
     20 + sed -i /-fforce-mem/d configure
     21 + CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic'
     22 + export CFLAGS
     23 + CXXFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic'
     24 + export CXXFLAGS
     25 + FFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
     26 + export FFLAGS
     27 + FCFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
     28 + export FCFLAGS
     29 + LDFLAGS='-Wl,-z,relro '
     30 + export LDFLAGS
     31 + '[' 1 == 1 ']'
     32 + '[' x86_64 == ppc64le ']'
     33 ++ find . -name config.guess -o -name config.sub
     34 + for i in '$(find . -name config.guess -o -name config.sub)'
     35 ++ basename ./config.guess
     36 + '[' -f /usr/lib/rpm/redhat/config.guess ']'
     37 + /usr/bin/rm -f ./config.guess
     38 ++ basename ./config.guess
     39 + /usr/bin/cp -fv /usr/lib/rpm/redhat/config.guess ./config.guess
     40 '/usr/lib/rpm/redhat/config.guess' -> './config.guess'
     41 + for i in '$(find . -name config.guess -o -name config.sub)'
     42 ++ basename ./config.sub
     43 + '[' -f /usr/lib/rpm/redhat/config.sub ']'
     44 + /usr/bin/rm -f ./config.sub
     45 ++ basename ./config.sub
     46 + /usr/bin/cp -fv /usr/lib/rpm/redhat/config.sub ./config.sub
     47 '/usr/lib/rpm/redhat/config.sub' -> './config.sub'
     48 + ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared
     49 checking for a BSD-compatible install... /usr/bin/install -c
     50 checking whether build environment is sane... yes
     51 checking for gawk... gawk
     52 checking whether make sets $(MAKE)... yes
     53 checking build system type... x86_64-redhat-linux-gnu
     54 checking host system type... x86_64-redhat-linux-gnu
     55 checking for x86_64-redhat-linux-gnu-gcc... no
     56 checking for gcc... gcc
     57 checking for C compiler default output file name... a.out
     58 checking whether the C compiler works... yes
     59 checking whether we are cross compiling... no
     60 checking for suffix of executables... 
     61 checking for suffix of object files... o
     62 checking whether we are using the GNU C compiler... yes
     63 checking whether gcc accepts -g... yes
     64 checking for gcc option to accept ANSI C... none needed
     65 checking for style of include used by make... GNU
     66 checking dependency style of gcc... none
     67 checking for a sed that does not truncate output... /usr/bin/sed
     68 checking for egrep... grep -E
     69 checking for ld used by gcc... /usr/bin/ld
     70 checking if the linker (/usr/bin/ld) is GNU ld... yes
     71 checking for /usr/bin/ld option to reload object files... -r
     72 checking for BSD-compatible nm... nm
     73 checking whether ln -s works... yes
     74 checking how to recognise dependent libraries... pass_all
     75 checking how to run the C preprocessor... gcc -E
     76 checking for ANSI C header files... yes
     77 checking for sys/types.h... yes
     78 checking for sys/stat.h... yes
     79 checking for stdlib.h... yes
     80 checking for string.h... yes
     81 checking for memory.h... yes
     82 checking for strings.h... yes
     83 checking for inttypes.h... yes
     84 checking for stdint.h... yes
     85 checking for unistd.h... yes
     86 checking dlfcn.h usability... yes
     87 checking dlfcn.h presence... yes
     88 checking for dlfcn.h... yes
     89 checking for x86_64-redhat-linux-gnu-g++... no
     90 checking for x86_64-redhat-linux-gnu-c++... no
     91 checking for x86_64-redhat-linux-gnu-gpp... no
     92 checking for x86_64-redhat-linux-gnu-aCC... no
     93 checking for x86_64-redhat-linux-gnu-CC... no
     94 checking for x86_64-redhat-linux-gnu-cxx... no
     95 checking for x86_64-redhat-linux-gnu-cc++... no
     96 checking for x86_64-redhat-linux-gnu-cl... no
     97 checking for x86_64-redhat-linux-gnu-FCC... no
     98 checking for x86_64-redhat-linux-gnu-KCC... no
     99 checking for x86_64-redhat-linux-gnu-RCC... no
    100 checking for x86_64-redhat-linux-gnu-xlC_r... no
    101 checking for x86_64-redhat-linux-gnu-xlC... no
    102 checking for g++... g++
    103 checking whether we are using the GNU C++ compiler... yes
    104 checking whether g++ accepts -g... yes
    105 checking dependency style of g++... none
    106 checking how to run the C++ preprocessor... g++ -E
    107 checking for x86_64-redhat-linux-gnu-g77... no
    108 checking for x86_64-redhat-linux-gnu-f77... no
    109 checking for x86_64-redhat-linux-gnu-xlf... no
    110 checking for x86_64-redhat-linux-gnu-frt... no
    111 checking for x86_64-redhat-linux-gnu-pgf77... no
    112 checking for x86_64-redhat-linux-gnu-fort77... no
    113 checking for x86_64-redhat-linux-gnu-fl32... no
    114 checking for x86_64-redhat-linux-gnu-af77... no
    115 checking for x86_64-redhat-linux-gnu-f90... no
    116 checking for x86_64-redhat-linux-gnu-xlf90... no
    117 checking for x86_64-redhat-linux-gnu-pgf90... no
    118 checking for x86_64-redhat-linux-gnu-epcf90... no
    119 checking for x86_64-redhat-linux-gnu-f95... no
    120 checking for x86_64-redhat-linux-gnu-fort... no
    121 checking for x86_64-redhat-linux-gnu-xlf95... no
    122 checking for x86_64-redhat-linux-gnu-ifc... no
    123 checking for x86_64-redhat-linux-gnu-efc... no
    124 checking for x86_64-redhat-linux-gnu-pgf95... no
    125 checking for x86_64-redhat-linux-gnu-lf95... no
    126 checking for x86_64-redhat-linux-gnu-gfortran... no
    127 checking for g77... no
    128 checking for f77... no
    129 checking for xlf... no
    130 checking for frt... no
    131 checking for pgf77... no
    132 checking for fort77... no
    133 checking for fl32... no
    134 checking for af77... no
    135 checking for f90... no
    136 checking for xlf90... no
    137 checking for pgf90... no
    138 checking for epcf90... no
    139 checking for f95... f95
    140 checking whether we are using the GNU Fortran 77 compiler... yes
    141 checking whether f95 accepts -g... yes
    142 checking the maximum length of command line arguments... 32768
    143 checking command to parse nm output from gcc object... ok
    144 checking for objdir... .libs
    145 checking for x86_64-redhat-linux-gnu-ar... no
    146 checking for ar... ar
    147 checking for x86_64-redhat-linux-gnu-ranlib... no
    148 checking for ranlib... ranlib
    149 checking for x86_64-redhat-linux-gnu-strip... no
    150 checking for strip... strip
    151 checking if gcc static flag  works... yes
    152 checking if gcc supports -fno-rtti -fno-exceptions... no
    153 checking for gcc option to produce PIC... -fPIC
    154 checking if gcc PIC flag -fPIC works... yes
    155 checking if gcc supports -c -o file.o... yes
    156 checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    157 checking whether -lc should be explicitly linked in... no
    158 checking dynamic linker characteristics... GNU/Linux ld.so
    159 checking how to hardcode library paths into programs... immediate
    160 checking whether stripping libraries is possible... yes
    161 checking if libtool supports shared libraries... yes
    162 checking whether to build shared libraries... yes
    163 checking whether to build static libraries... yes
    164 configure: creating libtool
    165 appending configuration tag "CXX" to libtool
    166 checking for ld used by g++... /usr/bin/ld -m elf_x86_64
    167 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    168 checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    169 checking for g++ option to produce PIC... -fPIC
    170 checking if g++ PIC flag -fPIC works... yes
    171 checking if g++ supports -c -o file.o... yes
    172 checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    173 checking dynamic linker characteristics... GNU/Linux ld.so
    174 checking how to hardcode library paths into programs... immediate
    175 checking whether stripping libraries is possible... yes
    176 appending configuration tag "F77" to libtool
    177 checking if libtool supports shared libraries... yes
    178 checking whether to build shared libraries... yes
    179 checking whether to build static libraries... yes
    180 checking for f95 option to produce PIC... -fPIC
    181 checking if f95 PIC flag -fPIC works... no
    182 checking if f95 supports -c -o file.o... no
    183 checking whether the f95 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    184 checking dynamic linker characteristics... GNU/Linux ld.so
    185 checking how to hardcode library paths into programs... immediate
    186 checking whether stripping libraries is possible... yes
    187 checking for ANSI C header files... (cached) yes
    188 checking for sys/wait.h that is POSIX.1 compatible... yes
    189 checking assert.h usability... yes
    190 checking assert.h presence... yes
    191 checking for assert.h... yes
    192 checking limits.h usability... yes
    193 checking limits.h presence... yes
    194 checking for limits.h... yes
    195 checking for unistd.h... (cached) yes
    196 checking for sys/types.h... (cached) yes
    197 checking fcntl.h usability... yes
    198 checking fcntl.h presence... yes
    199 checking for fcntl.h... yes
    200 checking errno.h usability... yes
    201 checking errno.h presence... yes
    202 checking for errno.h... yes
    203 checking for an ANSI C-conforming const... yes
    204 checking for inline... inline
    205 checking whether byte ordering is bigendian... no
    206 checking for pid_t... yes
    207 checking for int... yes
    208 checking size of int... 4
    209 checking for long... yes
    210 checking size of long... 8
    211 checking for long long... yes
    212 checking size of long long... 8
    213 checking for waitpid... yes
    214 checking for fcntl... yes
    215 checking for pipe... yes
    216 checking for fork... yes
    217 checking whether to optimize for speed or for accuracy... default
    218 checking for architecture-specific fixed-point math routines... DEFAULT
    219 configure: WARNING: default fixed-point math will yield limited accuracy
    220 checking for ISO/IEC interpretation... best accepted practices
    221 checking whether to enable profiling... no
    222 checking whether to enable debugging... default
    223 checking whether to enable experimental code... no
    224 configure: creating ./config.status
    225 config.status: creating Makefile
    226 config.status: creating msvc++/Makefile
    227 config.status: creating libmad.list
    228 config.status: creating config.h
    229 config.status: executing depfiles commands
    230 + make
    231 (sed -e '1s|.*|/*|' -e '1b' -e '$s|.*| */|' -e '$b'  \
    232     -e 's/^.*/ *&/' ./COPYRIGHT; echo;  \
    233 echo "# ifdef __cplusplus";  \
    234 echo 'extern "C" {';  \
    235 echo "# endif"; echo;  \
    236 if [ ".-DFPM_DEFAULT" != "." ]; then  \
    237     echo ".-DFPM_DEFAULT" | sed -e 's|^\.-D|# define |'; echo;  \
    238 fi;  \
    239 sed -ne 's/^# *define  *\(HAVE_.*_ASM\).*/# define \1/p'  \
    240     config.h; echo;  \
    241 sed -ne 's/^# *define  *OPT_\(SPEED\|ACCURACY\).*/# define OPT_\1/p'  \
    242     config.h; echo;  \
    243 sed -ne 's/^# *define  *\(SIZEOF_.*\)/# define \1/p'  \
    244     config.h; echo;  \
    245 for header in version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h; do  \
    246     echo;  \
    247     sed -n -f ./mad.h.sed ./$header;  \
    248 done; echo;  \
    249 echo "# ifdef __cplusplus";  \
    250 echo '}';  \
    251 echo "# endif") >mad.h
    252 make  all-recursive
    253 make[1]: Entering directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    254 make[2]: Entering directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    255 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o version.lo version.c
    256 mkdir .libs
    257  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c version.c  -fPIC -DPIC -o .libs/version.o
    258  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c version.c -o version.o >/dev/null 2>&1
    259 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o fixed.lo fixed.c
    260  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c fixed.c  -fPIC -DPIC -o .libs/fixed.o
    261  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c fixed.c -o fixed.o >/dev/null 2>&1
    262 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o bit.lo bit.c
    263  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c bit.c  -fPIC -DPIC -o .libs/bit.o
    264  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c bit.c -o bit.o >/dev/null 2>&1
    265 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o timer.lo timer.c
    266  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c timer.c  -fPIC -DPIC -o .libs/timer.o
    267  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c timer.c -o timer.o >/dev/null 2>&1
    268 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o stream.lo stream.c
    269  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c stream.c  -fPIC -DPIC -o .libs/stream.o
    270  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c stream.c -o stream.o >/dev/null 2>&1
    271 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o frame.lo frame.c
    272  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c frame.c  -fPIC -DPIC -o .libs/frame.o
    273  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c frame.c -o frame.o >/dev/null 2>&1
    274 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o synth.lo synth.c
    275  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c synth.c  -fPIC -DPIC -o .libs/synth.o
    276  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c synth.c -o synth.o >/dev/null 2>&1
    277 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o decoder.lo decoder.c
    278  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c decoder.c  -fPIC -DPIC -o .libs/decoder.o
    279  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c decoder.c -o decoder.o >/dev/null 2>&1
    280 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o layer12.lo layer12.c
    281  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c layer12.c  -fPIC -DPIC -o .libs/layer12.o
    282  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c layer12.c -o layer12.o >/dev/null 2>&1
    283 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o layer3.lo layer3.c
    284  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c layer3.c  -fPIC -DPIC -o .libs/layer3.o
    285  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c layer3.c -o layer3.o >/dev/null 2>&1
    286 /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT     -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c -o huffman.lo huffman.c
    287  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c huffman.c  -fPIC -DPIC -o .libs/huffman.o
    288  gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -c huffman.c -o huffman.o >/dev/null 2>&1
    289 /bin/sh ./libtool --mode=link gcc  -Wall -pipe -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -g -O -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2  -Wl,-z,relro  -o libmad.la -rpath /usr/lib64 -version-info 2:1:2 version.lo fixed.lo bit.lo timer.lo stream.lo frame.lo synth.lo decoder.lo layer12.lo layer3.lo huffman.lo    
    290 gcc -shared  .libs/version.o .libs/fixed.o .libs/bit.o .libs/timer.o .libs/stream.o .libs/frame.o .libs/synth.o .libs/decoder.o .libs/layer12.o .libs/layer3.o .libs/huffman.o   -m64 -mtune=generic -Wl,-z -Wl,relro -Wl,-soname -Wl,libmad.so.0 -o .libs/libmad.so.0.2.1
    291 (cd .libs && rm -f libmad.so.0 && ln -s libmad.so.0.2.1 libmad.so.0)
    292 (cd .libs && rm -f libmad.so && ln -s libmad.so.0.2.1 libmad.so)
    293 ar cru .libs/libmad.a  version.o fixed.o bit.o timer.o stream.o frame.o synth.o decoder.o layer12.o layer3.o huffman.o
    294 ranlib .libs/libmad.a
    295 creating libmad.la
    296 (cd .libs && rm -f libmad.la && ln -s ../libmad.la libmad.la)
    297 make[2]: Leaving directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    298 make[1]: Leaving directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    299 + exit 0
    300 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.J9HX5k
    301 + umask 022
    302 + cd /root/rpmbuild/BUILD
    303 + '[' /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64 '!=' / ']'
    304 + rm -rf /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    305 ++ dirname /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    306 + mkdir -p /root/rpmbuild/BUILDROOT
    307 + mkdir /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    308 + cd libmad-0.15.1b
    309 + rm -rf /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    310 + make install DESTDIR=/root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    311 make  install-recursive
    312 make[1]: Entering directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    313 make[2]: Entering directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    314 make[3]: Entering directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    315 mkdir -p -- . /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64
    316  /bin/sh ./libtool --mode=install /usr/bin/install -c  libmad.la /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.la
    317 /usr/bin/install -c .libs/libmad.so.0.2.1 /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.so.0.2.1
    318 (cd /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64 && rm -f libmad.so.0 && ln -s libmad.so.0.2.1 libmad.so.0)
    319 (cd /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64 && rm -f libmad.so && ln -s libmad.so.0.2.1 libmad.so)
    320 /usr/bin/install -c .libs/libmad.lai /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.la
    321 /usr/bin/install -c .libs/libmad.a /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.a
    322 ranlib /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.a
    323 chmod 644 /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.a
    324 libtool: install: warning: remember to run `libtool --finish /usr/lib64'
    325 mkdir -p -- . /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/include
    326  /usr/bin/install -c -m 644 mad.h /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/include/mad.h
    327 make[3]: Leaving directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    328 make[2]: Leaving directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    329 make[1]: Leaving directory `/root/rpmbuild/BUILD/libmad-0.15.1b'
    330 + /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /root/rpmbuild/BUILD/libmad-0.15.1b
    331 extracting debug info from /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/lib64/libmad.so.0.2.1
    332 dwz: Too few files for multifile optimization
    333 /usr/lib/rpm/sepdebugcrcfix: Updated 1 CRC32s, 0 CRC32s did match.
    334 symlinked /usr/lib/debug/usr/lib64/libmad.so.0.2.1.debug to /usr/lib/debug/usr/lib64/libmad.so.0.debug
    335 symlinked /usr/lib/debug/usr/lib64/libmad.so.0.2.1.debug to /usr/lib/debug/usr/lib64/libmad.so.debug
    336 516 blocks
    337 + /usr/lib/rpm/check-buildroot
    338 + /usr/lib/rpm/redhat/brp-compress
    339 + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
    340 + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
    341 + /usr/lib/rpm/redhat/brp-python-hardlink
    342 + /usr/lib/rpm/redhat/brp-java-repack-jars
    343 Processing files: libmad-0.15.1b-1.el7.x86_64
    344 Provides: libmad libmad = 1:0.15.1b-1.el7 libmad(x86-64) = 1:0.15.1b-1.el7 libmad.so.0()(64bit) libtool(/usr/lib64/libmad.la)
    345 Requires(interp): /sbin/ldconfig /sbin/ldconfig
    346 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    347 Requires(post): /sbin/ldconfig
    348 Requires(postun): /sbin/ldconfig
    349 Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libmad.so.0()(64bit) rtld(GNU_HASH)
    350 Processing files: libmad-devel-0.15.1b-1.el7.x86_64
    351 Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.fT70KP
    352 + umask 022
    353 + cd /root/rpmbuild/BUILD
    354 + cd libmad-0.15.1b
    355 + DOCDIR=/root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/share/doc/libmad-devel-0.15.1b
    356 + export DOCDIR
    357 + /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/share/doc/libmad-devel-0.15.1b
    358 + cp -pr mere_doc /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64/usr/share/doc/libmad-devel-0.15.1b
    359 + exit 0
    360 Provides: libmad-devel = 1:0.15.1b-1.el7 libmad-devel(x86-64) = 1:0.15.1b-1.el7
    361 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    362 Requires: libmad.so.0()(64bit)
    363 Processing files: libmad-debuginfo-0.15.1b-1.el7.x86_64
    364 Provides: libmad-debuginfo = 1:0.15.1b-1.el7 libmad-debuginfo(x86-64) = 1:0.15.1b-1.el7
    365 Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
    366 Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/libmad-0.15.1b-1.el7.x86_64
    367 Wrote: /root/rpmbuild/SRPMS/libmad-0.15.1b-1.el7.src.rpm
    368 Wrote: /root/rpmbuild/RPMS/x86_64/libmad-0.15.1b-1.el7.x86_64.rpm
    369 Wrote: /root/rpmbuild/RPMS/x86_64/libmad-devel-0.15.1b-1.el7.x86_64.rpm
    370 Wrote: /root/rpmbuild/RPMS/x86_64/libmad-debuginfo-0.15.1b-1.el7.x86_64.rpm
    371 Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.U1Yvwk
    372 + umask 022
    373 + cd /root/rpmbuild/BUILD
    374 + cd libmad-0.15.1b
    375 + exit 0
    View Code

二:nginx打包

  1.  建立nginx专用目录,注意使用%而不是$

  2. mkdir -pv nginx/{BUILD,SOURCES,RPMS,SRPMS,SPECS} && cd nginx && rpmdev-newspec -o SPECS/nginx.spec
  3.   

  

原文地址:https://www.cnblogs.com/dissipate/p/13050646.html