The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

builddpendencies (3)
  • >> builddpendencies (3) ( Linux man: Библиотечные вызовы )
  •  

    NAME

    builddpendencies - Generating buiild dependencies automatically
    
     As we start updating packages for the next Red Hat distro, 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/RPM/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.


     

    Index

    NAME


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру