On Wed, 8 Jul 2009, Luigi Iotti wrote:
I usually rebuild some CentOS rpm packges with some changes I need. I noticed that I obtain slightly larger packages than the ones found in the centOS distribution, even if I rebuild a source rpm without changing anything. I looked in it, and it turned out that my shared libraries are not stripped, where the ones found in your packages are. For example, I just rebuilt the openldap packages, and obtained a package that is about 3 times larger: -rw-r--r-- 1 root root 10899106 Jul 7 22:42 my/openldap-servers-2.3.43-3.el5.lux.2.i386.rpm -rw-r--r-- 1 root root 3202917 Jul 8 16:38 orig/openldap-servers-2.3.43-3.el5.i386.rpm
I extracted the packages with rpm2cpio, and the difference in size are in the shared libraries, for example: # ls -l */usr/lib/libslapd_db-4.4.so -rwxr-xr-x 1 root root 6518365 Jul 8 16:42 my/usr/lib/libslapd_db-4.4.so -rwxr-xr-x 1 root root 1032880 Jan 21 10:00 orig/usr/lib/libslapd_db-4.4.so # file */usr/lib/libslapd_db-4.4.so my/usr/lib/libslapd_db-4.4.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped orig/usr/lib/libslapd_db-4.4.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
Maybe the CentOS build system contains some macros that strip libraries, and the distributed macros do not.
I put this in /etc/rpm/macros (the line calling brp-strip-shared was added to the analogous macro taken from /usr/lib/rpm/redhat): %__os_install_post \ /usr/lib/rpm/redhat/brp-compress \ %{!?__debug_package:/usr/lib/rpm/redhat/brp-strip %{__strip}} \ %{!?__debug_package:/usr/lib/rpm/redhat/brp-strip-shared %{__strip}} \ /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \ /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \ /usr/lib/rpm/brp-python-bytecompile \ /usr/lib/rpm/redhat/brp-java-repack-jars \ %{nil}
Do you see any problems doing so? Why there is this difference between packages distributed by CentOS and the same packages rebuilt in a CentOS environment?
You need to install redhat-rpm-config for building packages, then a lot of additional macros are included by default.