File Explorer

/proc/self/root/proc/self/root/proc/self/root/usr/share/doc/rpm

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

builddependencies6.3 KB · 179 lines
/*! \page builddependencies Generating build dependencies automatically As we start updating packages for the next Red Hat distro, I'd like to seepackages start to make use of build dependencies. Basically builddependencies are just like install dependencies, but they are resolvedagainst the build system just after parsing the spec file. Syntactically,build dependencies look just like install dependencies in a spec file with"Build" prefixed: \verbatim	BuildPreReq:	BuildRequires:	BuildConflicts:\endverbatim All the above dependencies include versions, files, existence/range tests, etc.The build dependency checking can also be turned off with --nodeps if necessaryjust like install dependency checking can. Eventually, build dependencies willbe automated in rpm, but the major impediment to that effort is the engineeringrequired to maintain the pretense that src rpm's are "noarch". Meanwhile, I've added a package called "InDependence-1.0" to powertools-6.2that may be of use in detecting build dependencies that can be added tospec 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 usedwhile building gnorpm using InDependence: \verbatim	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 rpmbuild -ba gnorpm.spec >& xxx	...	(the build will take longer since both dep and strace are pigs)	...	grep -- '::' xxx > yyy\endverbatim \verbatimAside:	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 :-)\endverbatim Here's what's in yyy (\<packagename\>::\<filename\> format): \verbatim	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 \endverbatim The information can be used to generate build prerequisites. What is stillneeded is a sensible approach on \verbatim	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.\endverbatim but that's up to individual packagers. */