LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1852|回复: 3

glc系列脚本之glc_list,glc_sync_kw

[复制链接]
发表于 2004-12-23 17:27:45 | 显示全部楼层 |阅读模式
1.glc_list:
glc_list
查询glc的所有ebuild。
glc_list glc
查询glc自己的(官方没有的build)
glc_list new
glc没有升级的ebuild或者是缺少旧的build版本
glc_list old
过期的需要删除的glc ebuild
glc_list package1 package2 .....
列出package1 , package2的所有版本的ebuild
2.glc_sync_kw
因为glc cvs可能没有及时的更改ebuild的keywords,用这个脚本可以实现和官方的ebuild同步。
glc_sync_kw
同步所有的ebuild
glc_sync_kw [package list]
同步制定的ebuild。

[PHP]xiaosuo@center glc $ cat glc_sync_kw
#!/bin/bash
###
###sync KEYWORDS with the official portage
###

source /etc/glc.conf
if [ X${PORTAGE} = X ]
then
        PORTAGE="/usr/portage"
fi

function re_sync_kw()
{
        local ebuild
        local glcebuild
        local keywords
        local glckeywords
        while read glcebuild
        do
                ebuild=${glcebuild/${GLCPORTAGE}/${PORTAGE}}
                if [ -f $ebuild ]
                then
                        keywords=`grep ^KEYWORDS $ebuild`
                        glckeywords=`grep ^KEYWORDS $glcebuild`
                        if [ "X$glckeywords" = "X" ]
                        then
                                echo "KEYWORDS of $glcebuild not defined"
                        fi
                        if [ "X$keywords" = "X" ]
                        then
                                echo "KEYWORDS of $ebuild not defined"
                        fi
                        if [[  X$keywords != X$glckeywords ]]
                        then
                                echo $glcebuild
                                sed -i "s/^KEYWORDS.*$/$keywords/" $glcebuild
                        fi
                fi
        done
}

if [ $# -eq 0 ]
then
        find ${GLCPORTAGE} -name "*.ebuild" -maxdepth 3 -mindepth 3 \
        | re_sync_kw
else
        for ebuild in $@
        do
                find ${GLCPORTAGE} -name "$ebuild-[0-9]*.ebuild" -maxdepth 3 -mindepth 3 \
                | re_sync_kw
        done
fi[/PHP]
  1. xiaosuo@center glc $ cat glc_list
  2. #!/bin/bash
  3. ###
  4. ###list the glc portage
  5. ###

  6. source /etc/glc.conf
  7. if [ X${PORTAGE} = X ]
  8. then
  9.         PORTAGE="/usr/portage"
  10. fi

  11. if [ -z ${GLCPORTAGE} ]
  12. then
  13.         echo /etc/glc.conf need to be configured
  14.         exit
  15. fi

  16. #list the glc ebuilds not include in official
  17. function list_glc_ebuilds()
  18. {
  19.         local ebuild
  20.         while read ebuild
  21.         do
  22.                 ebuild=${ebuild/${GLCPORTAGE}/${PORTAGE}}
  23.                 if [ ! -d $ebuild ]
  24.                 then
  25.                         echo ${ebuild##*/}
  26.                 fi
  27.         done
  28. }

  29. #list the ebuilds not include in official
  30. #old ? newer ?
  31. function list_old_ebuilds()
  32. {
  33.         local ebuild
  34.         local ebuildpath
  35.         while read ebuild_orig
  36.         do
  37.                 ebuild=${ebuild_orig/${GLCPORTAGE}/${PORTAGE}}
  38.                 ebuildpath=${ebuild%/*}
  39.                 if [ -d $ebuildpath ]
  40.                 then
  41.                         if [ ! -f $ebuild ]
  42.                         then
  43.                                 echo ${ebuild_orig}
  44.                         fi
  45.                 fi
  46.         done
  47. }

  48. #list the ebuilds not include in glc portage
  49. #update ? not need glc ?
  50. function list_new_ebuilds()
  51. {
  52.         local ebuild
  53.         local ebuildpath
  54.         while read ebuild_orig
  55.         do
  56.                 ebuildpath=${ebuild_orig/${GLCPORTAGE}/${PORTAGE}}
  57.                 if [ -d $ebuildpath ]
  58.                 then
  59.                         for ebuild in $ebuildpath/*.ebuild
  60.                         do
  61.                                 ebuild=${ebuild/${PORTAGE}/${GLCPORTAGE}}
  62.                                 if [ ! -f $ebuild ]
  63.                                 then
  64.                                         echo $ebuild
  65.                                 fi
  66.                         done
  67.                 fi
  68.         done
  69. }

  70. #start this scripts
  71. if [ $# -gt 0 ]
  72. then
  73.         if [ $1 = "glc" ]
  74.         then
  75.                 find ${GLCPORTAGE} -type d -maxdepth 2 -mindepth 2 \
  76.                 | list_glc_ebuilds
  77.         elif [ $1 = "old" ]
  78.         then
  79.                 find ${GLCPORTAGE} -name "*.ebuild" -maxdepth 3 -mindepth 3  \
  80.                 | list_old_ebuilds
  81.         elif [ $1 = "new" ]
  82.         then
  83.                 find ${GLCPORTAGE} -type d -maxdepth 2 -mindepth 2  \
  84.                 | list_new_ebuilds
  85.         else
  86.                 for ebuild in $*
  87.                 do
  88.                         find ${GLCPORTAGE} -name "$ebuild-[0-9]*.ebuild" -maxdepth 3 -mindepth 3 -printf "%f\n"
  89.                 done
  90.         fi
  91. else
  92.         find ${GLCPORTAGE} -type d -maxdepth 2 -mindepth 2 -printf "%f\n"
  93. fi
复制代码
发表于 2004-12-24 07:53:52 | 显示全部楼层
建议出一个glc all in one吧。   

因为我用esearch查软件包的。

有更新和同步的功能就好了。


:p  :p
 楼主| 发表于 2004-12-24 09:31:30 | 显示全部楼层
哈哈,我也正在考虑能,就是还没有想好怎么实现,等都齐了,放到glc里面,虎兄有什么好的想法嘛?
维护glc也是比较繁琐的工作啊,如果能自动化再好不过了。
发表于 2004-12-24 11:05:12 | 显示全部楼层
Post by 小锁
哈哈,我也正在考虑能,就是还没有想好怎么实现,等都齐了,放到glc里面,虎兄有什么好的想法嘛?
维护glc也是比较繁琐的工作啊,如果能自动化再好不过了。


做一个ebuild,叫glctoolkit之类的,负责处理以后的东东。

以后也好更新。

:2cool  :2cool
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表