· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Jin LiveCD/Rookery Build System

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 <path to dep.index>
    • 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 °¡ ÇÊ¿äÇÔ

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



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-03-09 02:57:37
Processing time 0.0115 sec