== JinLiveCD/RookeryBuildSystem == * The rookery is a build system * you can use to take a collection of source rpms and turn it into a distribution * It takes care of figuring out the build order and seeing the build through to completion * http://www.web-insights.net/rookery/index.html * http://www.graphviz.org/ * rookery-setup * rookery next * edit /etc/fstab * cd /home/build * cp cp ~/rookery-0.8.5/build/rpmrc .rpmrc * cp ~/rookery-0.8.5/build/bashrc .bashrc * cp ~/rookery-0.8.5/build/rpmmacros .rpmmacros * chown build.build .* * mkdir working * chown build.build working * cp -Rp ~/rookery-0.8.5/build/checks . * chown -R build.build checks * cd /opt/repo/seed/bak * mv ~/Desktop/gettext-0.14.3-1.i386.rpm . * mv ~/Desktop/glibc-devel-2.3.5-10.i386.rpm . * mv ~/Desktop/texinfo-4.8-4.i386.rpm . * mv ~/Desktop/libselinux-devel-1.23.10-2.i386.rpm . * cd /opt/repo/tools {{{ [root@localhost tools]# ls autoconf-2.59-5.noarch.rpm m4-1.4.3-1.i386.rpm automake-1.9.5-1.noarch.rpm make-3.80-7.i386.rpm diffutils-2.8.1-15.i386.rpm pam-0.79-8.i386.rpm file-4.13-4.i386.rpm patch-2.5.4-24.i386.rpm findutils-4.2.20-1.i386.rpm pcre-5.0-4.i386.rpm gdbm-1.8.0-25.i386.rpm perl-5.8.6-15.i386.rpm glibc-kernheaders-2.4-9.1.94.i386.rpm perl-Filter-1.30-7.i386.rpm gnupg-1.4.1-3.i386.rpm rpm-build-4.4.1-21.i386.rpm grep-2.5.1-48.i386.rpm sed-4.1.4-1.i386.rpm gzip-1.3.5-6.i386.rpm tar-1.15.1-5.i386.rpm }}} * cd /opt/repo/setup {{{ [root@localhost setup]# ls bash-3.0-31.i386.rpm libacl-2.2.23-8.i386.rpm bzip2-1.0.2-16.i386.rpm libattr-2.4.16-5.i386.rpm bzip2-libs-1.0.2-16.i386.rpm libselinux-1.23.10-2.i386.rpm coreutils-5.2.1-48.i386.rpm libtermcap-2.0.8-41.i386.rpm db4-4.3.27-3.i386.rpm mktemp-1.5-23.i386.rpm db4-utils-4.3.27-3.i386.rpm popt-1.10.1-21.i386.rpm elfutils-0.108-1.i386.rpm rpm-4.4.1-21.i386.rpm elfutils-libelf-0.108-1.i386.rpm rpm-libs-4.4.1-21.i386.rpm gawk-3.1.4-5.i386.rpm shadow-utils-4.0.7-9.i386.rpm glibc-2.3.5-10.i686.rpm termcap-5.4-4.noarch.rpm glibc-common-2.3.5-10.i386.rpm tzdata-2005i-2.noarch.rpm info-4.8-4.i386.rpm zlib-1.2.2.2-3.i386.rpm }}} * chmod 770 /etc/rookery === menu === * CONFIG * EDIT * TEST * REPO * SNAP * QUIT * ANALYZE * DEP * ONE * ALL * QUIT * BUILD * PREP * CHECK * TOOLS * BEGIN * STATUS * REVIEW * RESTORE * QUIT * INSTALL * LIVECD * TEST * QUIT * QUIT === analyze dependency === * ÇÊ¿äÇÑ ¼Ò½º rpm À» /opt/repo/source/core/srpms ¹Ø¿¡ ÀúÀåÇÑ´Ù. * rookery-0.8.5/scripts/mksindex ¸¦ ½ÇÇàÇÑ´Ù. * /etc/rookery ¹Ø¿¡ source.index °¡ »ý¼ºµÈ´Ù. {{{ 4Suite core/srpms/4Suite-1.0-3.src.rpm Canna core/srpms/Canna-3.7p3-7.EL4.src.rpm ElectricFence core/srpms/ElectricFence-2.2.2-19.src.rpm FreeWnn core/srpms/FreeWnn-1.10pl020-5.src.rpm }}} * rookery-0.8.5/scripts/mkdepindex ¸¦ ½ÇÇàÇÑ´Ù. * /etc/rookery ¹Ø¿¡ dep.index °¡ »ý¼ºµÈ´Ù. {{{ 4Suite /opt/repo/source/core/srpms/4Suite-1.0-3.src.rpm Distutils any any 4Suite /opt/repo/source/core/srpms/4Suite-1.0-3.src.rpm python-devel any any 4Suite /opt/repo/source/core/srpms/4Suite-1.0-3.src.rpm PyXML >= 0.7 Canna /opt/repo/source/core/srpms/Canna-3.7p3-7.EL4.src.rpm XFree86-devel any Canna /opt/repo/source/core/srpms/Canna-3.7p3-7.EL4.src.rpm cpp any Canna /opt/repo/source/core/srpms/Canna-3.7p3-7.EL4.src.rpm gawk any Canna-devel /opt/repo/source/core/srpms/Canna-3.7p3-7.EL4.src.rpm XFree86-devel any }}} * rookery-0.8.5/rpmbuild_deps/analyze-deps ¸¦ ½ÇÇàÇÑ´Ù. * analyze-deps [-i] * file °ú perl modules ¿¡ ´ëÇÑ dependency ¸¦ Ãâ·Â * completemess ¸¦ À§ÇÑ dependency ¸¦ Ãâ·Â * dependency loop ¸¦ Ãâ·Â * -i ¿É¼ÇÀ» »ç¿ëÇÑ °æ¿ì * ¿À·¡µÈ autoconf ¿Í automake ¿ÍÀÇ dependency Ãâ·Â * kernel headers ¿¡ ´ëÇÑ dependency Ãâ·Â * kernel ¿¡ ´ëÇÑ dependency Ãâ·Â {{{ Analyzing dependencies for file names & perl modules ==================================================== Error: gettext depends on a file (/usr/bin/fastjar) Error: gettext-devel depends on a file (/usr/bin/fastjar) Error: iptables depends on a file (/usr/bin/perl) Error: iptables-ipv6 depends on a file (/usr/bin/perl) Error: iptables-devel depends on a file (/usr/bin/perl) Error: isdn4k-utils depends on a file (/usr/bin/sgml2txt) Analyzing dependencies for completeness ======================================= NetworkManager has missing dependency (gtk2-devel) NetworkManager has missing dependency (libglade2-devel) NetworkManager has missing dependency (openssl-devel) Analyzing dependencies for loops ================================ Error: Loop detected for /NetworkManager/dbus-devel/libxml2-devel/python/db4-devel/perl/db4-devel Error: Loop detected for /NetworkManager-gnome/dbus-devel/libxml2-devel/python/db4-devel/perl/db4-devel Error: Loop detected for /at/pam-devel/perl/db4-devel/perl Analyzing dependencies for old autoconf & automake ================================================== Warning: gmp has build dependency on automake16 Warning: gmp-devel has build dependency on automake16 Warning: nss_db has build dependency on automake15 Warning: nss_db-compat has build dependency on automake15 Warning: pam_ccreds has build dependency on automake16 Warning: stunnel has build dependency on automake14 Analyzing dependencies for kernel headers ========================================= Info: audit has build dependency on glibc-kernheaders Info: audit-libs has build dependency on glibc-kernheaders Info: audit-libs-devel has build dependency on glibc-kernheaders Info: iputils has build dependency on glibc-kernheaders Info: tcpdump has build dependency on glibc-kernheaders Info: libpcap has build dependency on glibc-kernheaders Info: arpwatch has build dependency on glibc-kernheaders Analyzing dependencies on the kernel ==================================== No problems detected }}} * rookery ¸¦ »ç¿ëÇϱâ À§Çؼ­´Â analyze-deps ¿¡¼­ ¹ß»ýÇÏ´Â ¿À·ù¸¦ ¸ðµÎ Á¦°ÅÇÏ¿©¾ß ÇÑ´Ù. ÇÏÁö¸¸ ÀÌ ÀÏÀº ¸¸¸¸Ä¡ ¾Ê´Ù. * complete ¿¡ ÇØ´çÇÏ´Â ¿À·ù¸¸À¸·Î ÆÄÀÏÀ» ¸¸µç´Ù. (kk) * awk '{print $5}' kk > kk1 * ¿¡µðÅ͸¦ »ç¿ëÇÏ¿© ¾çÂÊ () ¸¦ ¾ø¾Ø´Ù. * vi ÀÇ °æ¿ì :1,$s/(//, :1,$s/)// * sort -u kk1 > kk2 * kk2 ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© virtual dependency ¸¦ ¸¸µé¾î¼­ dep.index ¿¡ Ãß°¡ * ´ÙÀ½ÀÇ ¼Ò½º rpm µéÀ» Á¦°ÅÇÑ´Ù.( Tri and Error ¹æ½ÄÀÓ ) * fedora core 4 ÀÇ °æ¿ì {{{ [root@localhost rookery]# diff source.index source.index.4 > ant core/srpms/ant-1.6.2-3jpp_8fc.src.rpm > autoconf core/srpms/autoconf-2.59-5.src.rpm > automake core/srpms/automake-1.9.5-1.src.rpm > beecrypt core/srpms/beecrypt-4.1.2-8.src.rpm > binutils core/srpms/binutils-2.15.94.0.2.2-2.src.rpm > dejagnu core/srpms/dejagnu-1.4.4-4.src.rpm > expect core/srpms/expect-5.43.0-1.src.rpm > gcc core/srpms/gcc-4.0.0-8.src.rpm > gettext core/srpms/gettext-0.14.3-1.src.rpm > glibc core/srpms/glibc-2.3.5-10.src.rpm > glibc-kernheaders core/srpms/glibc-kernheaders-2.4-9.1.94.src.rpm > kdelibs core/srpms/kdelibs-3.4.0-6.src.rpm > libtool core/srpms/libtool-1.5.16.multilib2-1.src.rpm > openldap core/srpms/openldap-2.2.23-5.src.rpm > perl core/srpms/perl-5.8.6-15.src.rpm > qt core/srpms/qt-3.3.4-14.src.rpm > rpm core/srpms/rpm-4.4.1-21.src.rpm > tcl core/srpms/tcl-8.4.9-3.src.rpm > texinfo core/srpms/texinfo-4.8-4.src.rpm > xorg-x11 core/srpms/xorg-x11-6.8.2-31.src.rpm }}} * centos 4.2 ÀÇ °æ¿ì {{{ > autoconf core/srpms/autoconf-2.59-5.src.rpm > autoconf213 core/srpms/autoconf213-2.13-9.src.rpm > automake core/srpms/automake-1.9.2-3.src.rpm > automake14 core/srpms/automake14-1.4p6-12.src.rpm > automake15 core/srpms/automake15-1.5-13.src.rpm > automake16 core/srpms/automake16-1.6.3-5.src.rpm > automake17 core/srpms/automake17-1.7.9-5.src.rpm > binutils core/srpms/binutils-2.15.92.0.2-15.src.rpm > dejagnu core/srpms/dejagnu-1.4.4-2.src.rpm > doxygen core/srpms/doxygen-1.3.9.1-1.src.rpm > expect core/srpms/expect-5.42.1-1.src.rpm > gcc core/srpms/gcc-3.4.4-2.src.rpm > gcc4 core/srpms/gcc4-4.0.1-4.EL4.2.src.rpm > gettext core/srpms/gettext-0.14.1-13.src.rpm > gimp core/srpms/gimp-2.0.5-5.src.rpm > gimp-data-extras core/srpms/gimp-data-extras-1.2.0-12.src.rpm > gimp-gap core/srpms/gimp-gap-2.0.2-2.src.rpm > gimp-help core/srpms/gimp-help-2-0.1.0.3.src.rpm > gimp-print core/srpms/gimp-print-4.2.7-2.src.rpm > glibc core/srpms/glibc-2.3.4-2.13.src.rpm > glibc-kernheaders core/srpms/glibc-kernheaders-2.4-9.1.98.EL.src.rpm > libtool core/srpms/libtool-1.5.6-4.EL4.1.src.rpm > perl core/srpms/perl-5.8.5-16.RHEL4.src.rpm > python core/srpms/python-2.3.4-14.1.src.rpm > qt core/srpms/qt-3.3.3-9.3.src.rpm > tcl core/srpms/tcl-8.4.7-2.src.rpm > tetex core/srpms/tetex-2.0.2-22.EL4.4.src.rpm > texinfo core/srpms/texinfo-4.7-5.src.rpm > xemacs core/srpms/xemacs-21.4.15-10.EL.1.src.rpm > xemacs-sumo core/srpms/xemacs-sumo-20040818-2.src.rpm > xorg-x11 core/srpms/xorg-x11-6.8.2-1.EL.13.20.src.rpm > xsane core/srpms/xsane-0.92-13.src.rpm }}} * ´ÙÀ½ÀÇ virtual À» Ãß°¡ (º¹»çÇÒ °æ¿ì ÅÇÀ¸·Î ¹Ù²ã¾ß ÇÏ´Â °ÍÀ» ÀØÁö ¸»°Í) {{{ desktop-file-install virtual missfile any any missfile virtual none any any glibc virtual glibcdev any any glibc-common virtual glibcdev any any glibc-devel virtual glibcdev any any glibcdev virtual none any any glibc-kernheaders virtual kerneldev any any kernel-headers virtual kerneldev any any kerneldev virtual none any any binutils virtual devtool any any tcl virtual devtool any any tcl-devel virtual devtool any any dejagnu virtual devtool any any expect virtual devtool any any gcc virtual devtool any any gcc-c++ virtual devtool any any gcc-g77 virtual devtool any any gcc-java virtual devtool any any cpp virtual devtool any any libf2c virtual devtool any any libgcc virtual devtool any any libgcj virtual devtool any any libstdc++ virtual devtool any any libstdc++-devel virtual devtool any any devtool virtual none any any gettext virtual basedev any any gettext-devel virtual basedev any any texinfo virtual basedev any any basedev virtual none any any perl virtual perldev any any perl(Digest::MD5) virtual perldev any any perl(HTML::Entities) virtual perldev any any perl(HTML::Parser) virtual perldev any any perl(MIME::Base64) virtual perldev any any perl(Net::DNS) virtual perldev any any perl(Time::HiRes) virtual perldev any any perldev virtual none any any python virtual pythondev any any python-devel virtual pythondev any any python2 virtual pythondev any any python2-devel virtual pythondev any any pythondev virtual none any any autoconf virtual devtool any any autoconf213 virtual devtool any any automake virtual devtool any any automake14 virtual devtool any any automake15 virtual devtool any any automake16 virtual devtool any any automake17 virtual devtool any any libtool virtual devtool any any fileutils virtual utildev any any sh-utils virtual utildev any any utildev virtual none any any qt-MySQL virtual qtdev any any qt-ODBC virtual qtdev any any qt-PostgreSQL virtual qtdev any any qt-designer virtual qtdev any any qt-devel virtual qtdev any any qtdev virtual none any any XFree86-devel virtual xdev any any XFree86-libs virtual xdev any any xorg-x11-deprecated-libs-devel virtual xdev any any xorg-x11-devel virtual xdev any any xorg-x11-font-utils virtual xdev any any xorg-x11-sdk virtual xdev any any xdev virtual none any any tetex virtual tetexdev any any tetex-dvips virtual tetexdev any any tetex-fonts virtual tetexdev any any tetex-latex virtual tetexdev any any tetexdev virtual none any any docbook-dtd31-sgml virtual miscdev any any docbook-xsl virtual miscdev any any gimp-devel virtual miscdev any any nautilus-devel virtual miscdev any any bonobo-activation-devel virtual miscdev any any jade virtual miscdev any any openldap-evolution-devel virtual miscdev any any smtpdaemon virtual miscdev any any xauth virtual miscdev any any xemacs virtual miscdev any any Distutils virtual miscdev any any doxygen virtual miscdev any any fam-devel virtual miscdev any any miscdev virtual none any any }}} {{{ [build@localhost rookery]$ analyze-deps -i ./dep.index.0308 Analyzing dependencies for file names & perl modules ==================================================== Error: perl-Digest-HMAC depends on a perl module (perl(Digest::MD5)) Error: perl-URI depends on a perl module (perl(MIME::Base64)) Error: perl-libwww-perl depends on a perl module (perl(MIME::Base64)) Error: perl-libwww-perl depends on a perl module (perl(HTML::Entities)) Error: spamassassin depends on a perl module (perl(Net::DNS)) Error: spamassassin depends on a perl module (perl(Time::HiRes)) Error: spamassassin depends on a perl module (perl(HTML::Parser)) Analyzing dependencies for completeness ======================================= No problems detected Analyzing dependencies for loops ================================ No problems detected Analyzing dependencies for old autoconf & automake ================================================== Warning: VFlib2 has build dependency on automake14 Warning: VFlib2-devel has build dependency on automake14 Warning: VFlib2-VFjfm has build dependency on automake14 Warning: VFlib2-conf-ja has build dependency on automake14 Warning: amanda has build dependency on automake16 Warning: amanda-client has build dependency on automake16 Warning: amanda-server has build dependency on automake16 Warning: amanda-devel has build dependency on automake16 Warning: control-center has build dependency on automake14 Warning: emacs has build dependency on autoconf213 Warning: emacs-nox has build dependency on autoconf213 Warning: emacs-common has build dependency on autoconf213 Warning: emacs-el has build dependency on autoconf213 Warning: emacs-leim has build dependency on autoconf213 Warning: firefox has build dependency on autoconf213 Warning: gdk-pixbuf has build dependency on automake14 Warning: gdk-pixbuf-devel has build dependency on automake14 Warning: gdk-pixbuf-gnome has build dependency on automake14 Warning: gdm has build dependency on automake14 Warning: gmp has build dependency on automake16 Warning: gmp-devel has build dependency on automake16 Warning: gnome-libs has build dependency on automake14 Warning: gnome-libs-devel has build dependency on automake14 Warning: gnome-mag has build dependency on automake14 Warning: gnome-mag-devel has build dependency on automake14 Warning: gnome-media has build dependency on automake14 Warning: gnome-session has build dependency on automake14 Warning: gnome-spell has build dependency on automake14 Warning: gnome-system-monitor has build dependency on automake16 Warning: gnome-themes has build dependency on automake17 Warning: gnome-vfs2 has build dependency on automake16 Warning: gnome-vfs2-devel has build dependency on automake16 Warning: gnome-vfs2-smb has build dependency on automake16 Warning: gtk+ has build dependency on automake14 Warning: gtk+ has build dependency on autoconf213 Warning: gtk+-devel has build dependency on automake14 Warning: gtk+-devel has build dependency on autoconf213 Warning: gtk-engines has build dependency on automake14 Warning: gtk2 has build dependency on automake17 Warning: gtk2-devel has build dependency on automake17 Warning: iiimf-le-xcin has build dependency on automake16 Warning: im-sdk has build dependency on automake16 Warning: iiimf-csconv has build dependency on automake16 Warning: iiimf-docs has build dependency on automake16 Warning: iiimf-emacs has build dependency on automake16 Warning: iiimf-gnome-im-switcher has build dependency on automake16 Warning: iiimf-gtk has build dependency on automake16 Warning: iiimf-libs has build dependency on automake16 Warning: iiimf-libs-devel has build dependency on automake16 Warning: iiimf-server has build dependency on automake16 Warning: iiimf-x has build dependency on automake16 Warning: iiimf-le-canna has build dependency on automake16 Warning: iiimf-le-hangul has build dependency on automake16 Warning: iiimf-le-unit has build dependency on automake16 Warning: iiimf-le-sun-thai has build dependency on automake16 Warning: imlib has build dependency on automake14 Warning: imlib-devel has build dependency on automake14 Warning: krbafs has build dependency on automake16 Warning: krbafs-utils has build dependency on automake16 Warning: krbafs-devel has build dependency on automake16 Warning: libIDL has build dependency on automake14 Warning: libIDL-devel has build dependency on automake14 Warning: libbonobo has build dependency on automake16 Warning: libbonobo-devel has build dependency on automake16 Warning: libgnomeprint22 has build dependency on automake16 Warning: libgnomeprint22-devel has build dependency on automake16 Warning: libgnomeprintui22 has build dependency on automake16 Warning: libgnomeprintui22-devel has build dependency on automake16 Warning: libgtop2 has build dependency on automake16 Warning: libgtop2-devel has build dependency on automake16 Warning: librsvg2 has build dependency on automake14 Warning: librsvg2-devel has build dependency on automake14 Warning: libwmf has build dependency on automake14 Warning: libwmf-devel has build dependency on automake14 Warning: metacity has build dependency on automake14 Warning: mozilla has build dependency on autoconf213 Warning: mozilla-nspr has build dependency on autoconf213 Warning: mozilla-nspr-devel has build dependency on autoconf213 Warning: mozilla-nss has build dependency on autoconf213 Warning: mozilla-nss-devel has build dependency on autoconf213 Warning: mozilla-devel has build dependency on autoconf213 Warning: mozilla-mail has build dependency on autoconf213 Warning: mozilla-chat has build dependency on autoconf213 Warning: mozilla-js-debugger has build dependency on autoconf213 Warning: mozilla-dom-inspector has build dependency on autoconf213 Warning: nss_db has build dependency on automake15 Warning: nss_db-compat has build dependency on automake15 Warning: pam_ccreds has build dependency on automake16 Warning: pkgconfig has build dependency on autoconf213 Warning: pkgconfig has build dependency on automake14 Warning: planner has build dependency on automake17 Warning: stunnel has build dependency on automake14 Warning: thunderbird has build dependency on autoconf213 Warning: xmms has build dependency on automake14 Warning: xmms has build dependency on autoconf213 Warning: xmms-devel has build dependency on automake14 Warning: xmms-devel has build dependency on autoconf213 Warning: xmms-skins has build dependency on automake14 Warning: xmms-skins has build dependency on autoconf213 Analyzing dependencies for kernel headers ========================================= Info: arptables_jf has build dependency on glibc-kernheaders Info: audit has build dependency on glibc-kernheaders Info: audit-libs has build dependency on glibc-kernheaders Info: audit-libs-devel has build dependency on glibc-kernheaders Info: bind has build dependency on glibc-kernheaders Info: bind-libs has build dependency on glibc-kernheaders Info: bind-utils has build dependency on glibc-kernheaders Info: bind-devel has build dependency on glibc-kernheaders Info: bind-chroot has build dependency on glibc-kernheaders Info: iputils has build dependency on glibc-kernheaders Info: tcpdump has build dependency on glibc-kernheaders Info: libpcap has build dependency on glibc-kernheaders Info: arpwatch has build dependency on glibc-kernheaders Analyzing dependencies on the kernel ==================================== Info: glibc-kernheaders has build dependency on the kernel Info: kernel-headers has build dependency on the kernel Info: dvd+rw-tools has build dependency on the kernel Info: lm_sensors has build dependency on the kernel Info: lm_sensors-devel has build dependency on the kernel }}} * perlmodule virtual À» ¸¸µé¾ú´ø°Í °°Àºµ¥..... * rookery-0.8.5/rpmbuild_deps/mkgraph ½ÇÇà * rookery-0.8.5/rpmbuild_deps/mkgraph_one ½ÇÇà * mkgraph_one -up|-down|-both package * mkgraph ¸¦ ½ÇÇà ½ÃÅ°±â À§Çؼ­´Â graphviz °¡ ÇÊ¿äÇÔ * http://www.graphviz.org/ * http://www.graphviz.org/Download_source.php ÀÇ graphviz-2.8.tar.gz ¸¦ ÀÌ¿ëÇÏ¿© ¸¸µë * ÀÌ¿¡ ÀÇÇØ »ý¼ºµÇ´Â ÆÄÀÏÀº ps ÆÄÀÏÀÓ. * À̸¦ º¸±â À§ÇØ gsview-4.8-1.i386.rpm »ç¿ëÇÔ === grookery === * garnome ¿¡ ÀÌ Áß rpmbuild_deps ¹ØÀÇ analyze-deps, calc_one, mkgraph, mkgraph_one À» »ç¿ëÇÔ. * /home/build/garnome-2.12.3.1 ¿¡¼­ ´ÙÀ½ ¼öÇà * grep LIBDEPS */*/Makefile > kk * 1,$s/\/Makefile:LIBDEPS// * 1,$s/=// * shell test ¿¡ ÀÇÇØ Ãß°¡µÇ´Â °æ¿ì¸¦ Á¦°Å * 1,$s/=// * awkfile {{{ { if (NF == 1) print $1 "\tnone" for (x=2; x<=NF; x++ ) { print $1 "\t" $x } } }}} * awk -f awkfile kk1 > kk2 * kk2 ¿¡¼­ # ¸¦ ã¾Æ ÇØ´ç ÁÙÀ» ¾ø¾Ù °Í * À̸¦ dep.index ·Î »ç¿ë * mkgraph_one À» ¼öÇàÇϱâ À§Çؼ­´Â µð·ºÅ丮¸¦ ¾ø¾Ö°í, '-' ¹®ÀÚ¸¦ '_' ·Î ¹Ù²Ù¾î¾ß ÇÔ. {{{ [root@localhost rpmbuild_deps]# diff analyze-deps.c /root/Desktop/grookery/analyze-deps.c 41d40 < static void check_for_file(llist *e); 44,46d42 < static void check_for_auto_dep(llist *e); < static void check_for_kernel_header_dep(llist *e); < static void check_kernel_dep(llist *e); 62c58 < int info = 0, i; --- > int i; 68,72d63 < if (getuid() == 0) < { < puts("FAILED: You should be a normal user, not root."); < exit(1); < } 75,77c66 < if (strcmp(argv[i], "-i") == 0) < info = 1; < else if (strstr(argv[i], "dep.index")) --- > if (strstr(argv[i], "dep.index")) 95d83 < check_for_file(entries); 98,104d85 < if (info) < { < check_for_auto_dep(entries); < check_for_kernel_header_dep(entries); < check_kernel_dep(entries); < } < 132,133c113 < item.src = strtok(NULL, "\t"); < item.dep = strtok(NULL, "\t"); --- > item.dep = strtok(NULL, "\n"); 141,172d120 < static void check_for_file(llist *e) < { < printf("Analyzing dependencies for file names & perl modules\n"); < printf("====================================================\n"); < problems = 0; < list_first(e); < do < { < const char *s = list_dep(e); < if (s && strchr(s, '/')) < { < printf("Error: %s depends on a file (%s)\n", < list_package(e), s); < problems++; < } < /* < else if (s && (strcasestr(s, "perl(") || strstr(s, "::"))) < { < printf("Error: %s depends on a perl module (%s)\n", < list_package(e), s); < problems++; < } < < */ < } while(list_next(e)); < if (problems) < puts(" \n"); < else < puts("No problems detected\n"); < } < < 264,347d211 < static void check_for_auto_dep(llist *e) < { < printf("Analyzing dependencies for old autoconf & automake\n"); < printf("==================================================\n"); < problems = 0; < list_first(e); < do < { < const char *s = list_dep(e); < if (s == NULL) < continue; < if (strstr(s, "autoconf2")) < { < printf("Warning: %s has build dependency on %s\n", < list_package(e), s); < problems++; < } < else if (strstr(s, "automake1")) < { < printf("Warning: %s has build dependency on %s\n", < list_package(e), s); < problems++; < } < < } while(list_next(e)); < if (problems) < puts(" \n"); < else < puts("No problems detected\n"); < } < < < static void check_for_kernel_header_dep(llist *e) < { < printf("Analyzing dependencies for kernel headers\n"); < printf("=========================================\n"); < problems = 0; < list_first(e); < do < { < const char *s = list_dep(e); < if (s == NULL) < continue; < if (strstr(s, "glibc-kernheaders")) < { < printf( < "Info: %s has build dependency on glibc-kernheaders\n",< list_package(e)); < problems++; < } < } while(list_next(e)); < if (problems) < puts(" "); < else < puts("No problems detected\n"); < } < < static void check_kernel_dep(llist *e) < { < printf("Analyzing dependencies on the kernel\n"); < printf("====================================\n"); < problems = 0; < list_first(e); < do < { < const char *s = list_dep(e); < if (s == NULL) < continue; < if (strstr(s, "kernel")) < { < if (strstr(s, "kernel-util")) < continue; < printf( < "Info: %s has build dependency on the kernel\n", < list_package(e)); < problems++; < } < } while(list_next(e)); < if (problems) < puts(" "); < else < puts("No problems detected\n"); < } < 455d318 < item.src = NULL; }}} {{{ [root@localhost rpmbuild_deps]# diff calc_one.c /root/Desktop/grookery/calc_one.c 121,122c121 < item.src = strtok(NULL, "\t"); < item.dep = strtok(NULL, "\t"); --- > item.dep = strtok(NULL, "\n"); 249d247 < item.src = NULL; }}} {{{ [root@localhost rpmbuild_deps]# diff llis.c /root/Desktop/grookery/llis.c 78,85d77 < const char *list_src(llist *l) < { < if (l->cur) < return l->cur->entry.src; < else < return NULL; < } < 127,131d118 < if (item->src) < newnode->entry.src = strdup(item->src); < else < newnode->entry.src = 0; < 164,165d150 < if (l->cur->entry.src) < free(l->cur->entry.src); 209,231d193 < const char *list_find_src(llist *l, const char *src) < { < register lnode* window; < < window = l->head; < while (window) < { < if (window->entry.src) < { < if (!strcmp(window->entry.src, src)) < { < l->cur = window; < return window->entry.package; < } < else < window = window->next; < } < else < return NULL; < } < return NULL; < } < 342,343d303 < if (current->entry.src) < free(current->entry.src); }}} {{{ [root@localhost rpmbuild_deps]# diff llis.h /root/Desktop/grookery/llis.h 27d26 < char *src; 53d51 < const char *list_src(llist *l); 65,67d62 < /* Given a src, return a package */ < const char *list_find_src(llist *l, const char *src); < }}} {{{ [root@localhost rpmbuild_deps]# diff mkgraph /root/Desktop/grookery/mkgraph 56c56 < cat $IDX_FILE | sed 's/-/\\-/g' | awk ' { printf("\t\"%s\" -> \"%s\";\n", $3, $1 ) ; } ' >> $DOT_FILE --- > cat $IDX_FILE | awk ' { printf("\t\"%s\" -> \"%s\";\n", $2, $1 ) ; } ' >> $DOT_FILE 61c61 < rm -f ./dep.ps.gz --- > rm -f ./dep.ps 68,70c68 < echo "Gzipping graph..." < gzip --best ./dep.ps < echo "Graph was written to dep.ps.gz" --- > echo "Graph was written to dep.ps" }}} {{{ [root@localhost rpmbuild_deps]# diff mkgraph_one /root/Desktop/grookery/mkgraph_one 64c64 < echo " \"$pkg\" [shape=box]" | sed 's/-/\\-/g' >> $DOT_FILE --- > echo " \"$pkg\" [shape=box]" >> $DOT_FILE 70d69 < #rm -f ./dep_one.ps.gz 78,79d76 < #echo "Gzipping graph..." < #gzip --best ./dep_one.ps }}}