Add builddependenciees.

CVS patchset: 3728
CVS date: 2000/05/13 19:06:41
This commit is contained in:
jbj 2000-05-13 19:06:41 +00:00
parent fa4fe81cb9
commit 3065159ad3
2 changed files with 167 additions and 2 deletions

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
EXTRA_DIST = \
dependencies macros queryformat spec buildroot format \
multiplebuilds relocatable signatures triggers
builddependencies buildroot dependencies format macros \
multiplebuilds queryformat spec relocatable signatures triggers

View File

@ -0,0 +1,165 @@
As we start updating packages for Red Hat 6.2, I'd like to see packages
start to make use of build dependencies. Basically build dependencies are
just like install dependencies, but they are resolved against the build system
just after parsing the spec file. Syntactically, build dependencies look just
like install dependencies in a spec file with "Build" prefixed:
BuildPrereqs:
BuildRequires:
BuildConflicts:
All the above dependencies include versions, files, existence/range tests, etc.
The build dependency checking can also be turned off with --nodeps if necessary
just like install dependency checking can. Eventually, build dependencies will
be automated in rpm, but the major impediment to that effort is the engineering
required to maintain the pretense that src rpm's are "noarch".
Meanwhile, I've added a package called "InDependence-1.0" to powertools-6.2
that may be of use in detecting build dependencies that can be added to
spec files as part of rebuilding packages for Red Hat 6.2.
Here's a short example of how to generate the package/file names that were used
while building gnorpm using InDependence:
rpm -U /mnt/redhat/comps/powertools/6.2/i386/InDependence-1.0-3.i386.rpm
rpm -i /mnt/redhat/comps/dist/6.2/SRPMS/gnorpm-0.9-11.src.rpm
cd /usr/src/redhat/SPECS
dep -detail rpm -ba gnorpm.spec >& xxx
...
(the build will take longer since both dep and strace are pigs)
...
grep -- '::' xxx > yyy
=========================================================================
Aside: The dep perl wrapper is a "pig" only because it's exec'ing
rpm -qf <filename>
in order to turn filenames into package names. There are easier/faster
ways to get this information...
There's no way to speed up the
/sbin/strace -q -etrace=open,execve -o ...
command itself. The eventual implementation in rpm will snatch the
same open/execve syscalls using LD_PRELOAD.
Patches cheerfully accepted :-)
=========================================================================
Here's what's in yyy (<packagename>::<filename> format):
ORBit-devel-0.4.95-2::/usr/bin/orbit-config
XFree86-libs-3.3.5-6::/usr/X11R6/lib/libICE.so.6
XFree86-libs-3.3.5-6::/usr/X11R6/lib/libSM.so.6
XFree86-libs-3.3.5-6::/usr/X11R6/lib/libX11.so.6
XFree86-libs-3.3.5-6::/usr/X11R6/lib/libXext.so.6
audiofile-0.1.9-1::/usr/lib/libaudiofile.so.0
autoconf-2.13-5::/usr/bin/autoconf
autoconf-2.13-5::/usr/bin/autoheader
autoconf-2.13-5::/usr/share/autoconf/acgeneral.m4
autoconf-2.13-5::/usr/share/autoconf/autoconf.m4f
automake-1.4-5::/usr/bin/aclocal
automake-1.4-5::/usr/bin/automake
bash-1.14.7-16::/bin/sh
bash-1.14.7-16::/etc/bashrc
binutils-2.9.1.0.23-7::/usr/bin/strip
binutils-2.9.1.0.23-7::/usr/lib/libbfd-2.9.1.0.24.so
binutils-2.9.1.0.23-7::/usr/lib/libopcodes-2.9.1.0.24.so
bzip2-0.9.5c-1::/usr/lib/libbz2.so.0
dev-2.7.10-2::/dev/null
diffutils-2.7-16::/usr/bin/cmp
egcs-1.1.2-25::/usr/bin/gcc
egcs-1.1.2-25::/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
esound-0.2.14-1::/usr/lib/libesd.so.0
file-3.27-3::/usr/bin/file
file-3.27-3::/usr/share/magic
fileutils-4.0-8::/bin/chgrp
fileutils-4.0-8::/bin/chmod
fileutils-4.0-8::/bin/chown
fileutils-4.0-8::/bin/cp
fileutils-4.0-8::/bin/ln
fileutils-4.0-8::/bin/ls
fileutils-4.0-8::/bin/mkdir
fileutils-4.0-8::/bin/mv
fileutils-4.0-8::/bin/rm
fileutils-4.0-8::/usr/bin/install
findutils-4.1-32::/usr/bin/xargs
gawk-3.0.4-1::/bin/awk
gawk-3.0.4-1::/bin/gawk
gettext-0.10.35-13::/usr/bin/xgettext
glib-1.2.5-1::/usr/lib/libglib-1.2.so.0
glib-1.2.5-1::/usr/lib/libgmodule-1.2.so.0
glib-devel-1.2.5-1::/usr/bin/glib-config
glibc-2.1.2-13::/etc/localtime
glibc-2.1.2-13::/etc/nsswitch.conf
glibc-2.1.2-13::/lib/ld-linux.so.2
glibc-2.1.2-13::/lib/libc.so.6
glibc-2.1.2-13::/lib/libcrypt.so.1
glibc-2.1.2-13::/lib/libdb.so.2
glibc-2.1.2-13::/lib/libdl.so.2
glibc-2.1.2-13::/lib/libm.so.6
glibc-2.1.2-13::/lib/libnsl.so.1
glibc-2.1.2-13::/lib/libnss_dns.so.2
glibc-2.1.2-13::/lib/libnss_files.so.2
glibc-2.1.2-13::/lib/libnss_nis.so.2
glibc-2.1.2-13::/lib/libnss_nisplus.so.2
glibc-2.1.2-13::/lib/libresolv.so.2
glibc-2.1.2-13::/usr/bin/ldd
gnome-libs-1.0.54-1::/usr/lib/libart_lgpl.so.2
gnome-libs-1.0.54-1::/usr/lib/libgnome.so.32
gnome-libs-1.0.54-1::/usr/lib/libgnomesupport.so.0
gnome-libs-1.0.54-1::/usr/lib/libgnomeui.so.32
gnome-libs-devel-1.0.54-1::/usr/bin/gnome-config
grep-2.3-2::/bin/egrep
grep-2.3-2::/bin/fgrep
grep-2.3-2::/bin/grep
gtk+-1.2.5-2::/usr/lib/libgdk-1.2.so.0
gtk+-1.2.5-2::/usr/lib/libgtk-1.2.so.0
imlib-1.9.7-1::/usr/lib/libgdk_imlib.so.1
libghttp-1.0.4-1::/usr/lib/libghttp.so.1
libtool-1.3.3-1::/usr/bin/libtoolize
libtool-1.3.3-1::/usr/share/libtool/config.guess
libtool-1.3.3-1::/usr/share/libtool/config.sub
libtool-1.3.3-1::/usr/share/libtool/ltconfig
libtool-1.3.3-1::/usr/share/libtool/ltmain.sh
libxml-1.4.0-1::/usr/lib/libxml.so.1
libxml-devel-1.4.0-1::/usr/bin/xml-config
m4-1.4-12::/usr/bin/m4
make-3.77-6::/usr/bin/make
mktemp-1.5-1::/bin/mktemp
net-tools-1.53-1::/bin/hostname
patch-2.5-9::/usr/bin/patch
rootfiles-5.2-5::/root/.bashrc
rpm-3.0.4-0.16::/bin/rpm
rpm-3.0.4-0.16::/usr/lib/librpm.so.0
rpm-3.0.4-0.16::/usr/lib/rpm/find-provides
rpm-3.0.4-0.16::/usr/lib/rpm/find-requires
rpm-3.0.4-0.16::/usr/lib/rpm/macros
rpm-3.0.4-0.16::/usr/lib/rpm/rpmpopt
rpm-3.0.4-0.16::/usr/lib/rpm/rpmrc
sed-3.02-4::/bin/sed
setup-2.0.5-1::/etc/group
setup-2.0.5-1::/etc/host.conf
setup-2.0.5-1::/etc/passwd
sh-utils-2.0-1::/bin/basename
sh-utils-2.0-1::/bin/false
sh-utils-2.0-1::/bin/sleep
sh-utils-2.0-1::/bin/true
sh-utils-2.0-1::/usr/bin/expr
sh-utils-2.0-1::/usr/bin/id
texinfo-3.12h-2::/usr/bin/makeinfo
textutils-2.0-2::/bin/cat
textutils-2.0-2::/bin/sort
textutils-2.0-2::/usr/bin/cut
textutils-2.0-2::/usr/bin/tr
zlib-1.1.3-5::/usr/lib/libz.so.1
The information can be used to generate build prerequisites. What is still
needed is a sensible approach on
1) eliminating obvious common dependencies (e.g. libtool, egcs).
2) identifying (and removing for now) per-platform build dependencies.
3) deciding on whether to add the build dependency on a file or on the
package that contains the file.
4) if adding a dependency on a package, choosing version ranges as
appropriate.
but that's up to individual packagers.