Add builddependenciees.
authorjbj <devnull@localhost>
Sat, 13 May 2000 19:06:41 +0000 (19:06 +0000)
committerjbj <devnull@localhost>
Sat, 13 May 2000 19:06:41 +0000 (19:06 +0000)
CVS patchset: 3728
CVS date: 2000/05/13 19:06:41

doc/manual/Makefile.am
doc/manual/builddependencies [new file with mode: 0644]

index b1164fc..6362e7e 100644 (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
 
diff --git a/doc/manual/builddependencies b/doc/manual/builddependencies
new file mode 100644 (file)
index 0000000..0d6dca6
--- /dev/null
@@ -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.