LinuxSir.cn,穿越时空的Linuxsir!

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

刚刚用来编译lfs的脚本

[复制链接]
发表于 2002-12-29 23:21:32 | 显示全部楼层 |阅读模式
我用来以后自动编译lfs的脚本
这是刚刚用来编译static部分的,改一改就能用来编译lfs系统了
看来应该把trem兄的解压缩脚本加进去,我这个弱弱的....还弄不好容易出错...
总体思路就是这样子的,本人技术太滥,写的东西也乱乱的..



  1. #! /bin/bash

  2. CHROOT=0
  3. umask 022
  4. source config

  5. unset LC_ALL
  6. unset CXXFLAGS
  7. unset LANG
  8. unset CFLAGS
  9. export CC='gcc -s'
  10. export LDFLAGS=-static
  11. export CPPFLAGS="-Dre_max_failures=re_max_failures2 -D_GNU_SOURCE"

  12. if (CHROOT=0)
  13.     then
  14.     WORK_PATH=${TATGET_PATH}${BUILD_PATH}
  15. else
  16.     WORK_PATH=${BUILD_PATH}
  17. fi

  18. mkdir -p $WORK_PATH
  19. cd  $WORK_PATH

  20. file_ready()
  21. {
  22.     FILE_NOW=$*
  23.     if [ -e $FILE_NOW ]
  24.         then
  25.         if [ -d $FILE_NOW ]
  26.             then
  27.             cp -r $FILE_NOW ${TATGET_PATH}${BUILD_PATH}/ &&
  28.             NOW_PATH=${WORK_PATH}/$(basename $FILE_NOW)
  29.         else
  30.             case ${FILE_NOW##*.} in
  31.                     
  32.                     tgz)
  33.                 tar -xzvf $FILE_NOW &&
  34.                 PATH_TMP=${FILE_NOW%*.tgz} &&
  35.                 NOW_PATH=${WORK_PATH}/${PATH_TMP##*/}
  36.                     ;;
  37.                
  38.                 gz)
  39.                 tar -xzvf $FILE_NOW &&
  40.                 PATH_TMP=${FILE_NOW%*.tar.gz} &&
  41.                 NOW_PATH=${WORK_PATH}/${PATH_TMP##*/}
  42.                     ;;
  43.                
  44.                 bz2)
  45.                 tar -xjvf $FILE_NOW &&
  46.                 PATH_TMP=${FILE_NOW%*.tar.bz2} &&
  47.                 NOW_PATH=${WORK_PATH}/${PATH_TMP##*/}
  48.                     ;;
  49.                
  50.                 *)
  51.                 echo "Unknow file type:${FILE_NOW}!!"
  52.                 echo "Please check again!"
  53.             esac
  54.         fi
  55.     else
  56.         echo "Can't find ${FILE_NOW}!!"
  57.     fi
  58. }

  59. begin_build()
  60. {
  61.     file_ready $*
  62.     cd $NOW_PATH
  63. }

  64. end_build()
  65. {
  66.         cd  $WORK_PATH
  67. }

  68. #*************************************************************************************

  69. build_Bash ()
  70. {
  71.     begin_build $PATH_Bash &&

  72.     ./configure --enable-static-link --prefix=${TATGET_PATH}/ --with-curses &&
  73.     make &&
  74.     make install &&

  75.     end_build
  76. }

  77. build_Binutils ()
  78. {
  79.     begin_build $PATH_Binutils &&

  80.     ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  81.     make LDFLAGS=-all-static &&
  82.     make install &&

  83.     end_build
  84. }

  85. build_Bzip2 ()
  86. {
  87.     begin_build $PATH_Bzip2 &&

  88.     make CC="gcc -static -s" &&
  89.     make PREFIX=${TATGET_PATH}/ install

  90.     end_build
  91. }

  92. build_Diffutils ()
  93. {
  94.     begin_build $PATH_Diffutils &&

  95.     ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  96.     make &&
  97.     make install &&

  98.     end_build
  99. }

  100. build_Fileutils ()
  101. {
  102.     begin_build $PATH_Fileutils &&

  103.         ./configure --disable-nls --prefix=${TATGET_PATH}/ &&
  104.         make &&
  105.         make install &&

  106.     end_build
  107. }

  108. build_Findutils ()
  109. {
  110.     begin_build $PATH_Findutils &&

  111.         ./configure --prefix=${TATGET_PATH}/ &&
  112.         make LDFLAGS=-static &&
  113.         make install &&

  114.     end_build
  115. }

  116. build_Gawk ()
  117. {
  118.     begin_build $PATH_Gawk &&

  119.         ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  120.         make LDFLAGS=-static &&
  121.         make install &&

  122.     end_build
  123. }

  124. build_GCC ()
  125. {
  126.     begin_build $PATH_GCC &&

  127.         ./configure --prefix=/bin --disable-nls --disable-shared &&
  128.         echo "#define HAVE_GAS_HIDDEN 1" >> gcc/auto-host.h &&
  129.         make BOOT_LDFLAGS=-static bootstrap &&
  130.         make prefix=${TATGET_PATH}/ install

  131.     end_build
  132. }

  133. build_Grep ()
  134. {
  135. echo $PWD
  136.     begin_build $PATH_Grep &&

  137.         ./configure --prefix=${TATGET_PATH}/ --disable-nls --disable-perl-regexp &&
  138.         make &&
  139.         make install &&

  140.     end_build
  141. }

  142. build_Gzip ()
  143. {
  144.         begin_build $PATH_Gzip &&

  145.         ./configure --prefix=${TATGET_PATH}/ &&
  146.         make LDFLAGS=-static &&
  147.         make install &&l

  148.     end_build
  149. }

  150. build_Make ()
  151. {
  152.     begin_build $PATH_Make

  153.         ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  154.         make LDFLAGS=-static &&
  155.         make install &&

  156.     end_build
  157. }

  158. build_Patch ()
  159. {
  160.     begin_build $PATH_Patch &&

  161.     ./configure --prefix=${TATGET_PATH}/ &&
  162.         make LDFLAGS=-static &&
  163.         make install &&

  164.     end_build
  165. }

  166. build_Sed ()
  167. {
  168.     begin_build $PATH_Sed &&

  169.         ./configure --prefix=${TATGET_PATH}/ &&
  170.         make LDFLAGS=-static &&
  171.         make install &&

  172.     end_build
  173. }

  174. build_Sh_utils ()
  175. {
  176.     begin_build $PATH_Sh_utils &&

  177.         ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  178.         make LDFLAGS=-static &&
  179.         make install &&

  180.     end_build
  181. }

  182. build_Tar ()
  183. {
  184.     begin_build $PATH_Tar &&

  185.         ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  186.         make LDFLAGS=-static &&
  187.         make install &&

  188.     end_build
  189. }

  190. build_Texinfo ()
  191. {
  192.     begin_build $PATH_Texinfo &&

  193.         ./configure --prefix=${TATGET_PATH}/ --disable-nls &&
  194.         make &&
  195.         make install &&

  196.     end_build
  197. }

  198. build_Textutils ()
  199. {
  200.     begin_build $PATH_Textutils &&

  201.     ./configure --enable-static-link --prefix=${TATGET_PATH}/ --with-curses &&
  202.     make &&
  203.     make install &&

  204.     end_build
  205. }

  206. build_Util_linux ()
  207. {
  208.     begin_build $PATH_Util_linux &&

  209.         ./configure --enable-static-link --prefix=${TATGET_PATH}/&&
  210.         make HAVE_SLN=yes &&
  211.         make HAVE_SLN=yes install

  212.     end_build
  213. }

  214. build_Sysvinit()
  215. {
  216.     begin_build $PATH_Sysvinit &&

  217.         cp src/init.c{,.backup} &&
  218.         sed 's/Sending processes/Sending processes started by init/g' src/init.c.backup > src/init.c
  219.         make -C src &&
  220.         make -C src install

  221.     end_build
  222. }

  223. build_Glibc()
  224. {
  225.     begin_build $PATH_Glibc &&

  226.     end_build
  227. }

  228. #*******************************************************************************

  229. build_Bash &&
  230. build_Binutils &&
  231. build_Bzip2 &&
  232. build_Diffutils &&
  233. build_Fileutils &&
  234. build_Findutils &&
  235. build_Gawk &&
  236. build_GCC &&
  237. build_Grep &&
  238. build_Gzip &&
  239. build_Make &&
  240. build_Patch &&
  241. build_Sed &&
  242. build_Sh_utils &&
  243. build_Tar &&
  244. build_Texinfo &&
  245. build_Textutils &&
  246. #build_Util_linux &&
  247. #build_Sysvinit
  248. #build_Glibc
  249. echo "ALL DONE!!"
复制代码
 楼主| 发表于 2002-12-29 23:23:20 | 显示全部楼层

config

file: config

  1. TATGET_PATH="/mnt/hda6"
  2. #*********************************************************************### File Path set### IT's can be a tar,tgz,tar.gz,tar.bz2 file or a Dircty#
  3. #PATH_Filename="/usr/src/file.tar.gz:/usr/src/file.patch.bz2"

  4. PATH_Autoconf="/root/src/autoconf-2.54.tar.bz2"
  5. PATH_Automake="/root/src/1.7.2.tar.bz2"
  6. PATH_Bash="/root/src/bash-2.05b.tar.gz"
  7. PATH_Bin86="/root/src/bin86-0.15.5.tar.gz"
  8. PATH_Binutils="/root/src/binutils-2.13.tar.bz2"
  9. PATH_Bison="/root/src/bison-1.35.tar.gz"
  10. PATH_Bzip2="/root/src/bzip2-1.0.2.tar.gz"
  11. PATH_Diffutils="/root/src/diffutils-2.8.4.tar.gz"
  12. PATH_E2fsprogs="/root/src/e2fsprogs-1.32.tar.gz"
  13. PATH_Ed="/root/src/ed-0.2.tar.gz"
  14. PATH_File="/root/src/file-3.39.tar.gz"
  15. PATH_Fileutils="/root/src/fileutils-4.1.11.tar.gz"
  16. PATH_Findutils="/root/src/findutils-4.1.7.tar.gz"
  17. PATH_Flex="/root/src/flex-2.5.4a.tar.gz"
  18. PATH_Gawk="/root/src/gawk-3.1.1.tar.gz"
  19. PATH_GCC="/root/src/gcc-3.2.1.tar.bz2"
  20. PATH_Gettext="/root/src/gettext-0.11.5.tar.gz"
  21. PATH_Glibc="/root/src/glibc-2.3.1.tar.gz"
  22. PATH_Glibc_linuxthreads="/root/src/glibc-linuxthreads-2.3.1.tar.gz"
  23. PATH_Grep="/root/src/grep-2.5.tar.gz"
  24. PATH_Groff="/root/src/groff-1.17.2.tar.gz"
  25. PATH_Gzip="/root/src/gzip-1.3.3.tar.gz"
  26. PATH_Kbd="/root/src/kbd-1.08.tar.bz2"
  27. PATH_Less="/root/src/less-378.tar.gz"
  28. PATH_Bootscripts="/root/src/lfs-bootscripts-1.10.tar.bz2"
  29. PATH_Libtool="/root/src/libtool-1.4.3.tar.gz"
  30. PATH_Lilo="/root/src/lilo"
  31. PATH_Linux="/root/src/linux-2.4.20.tar.bz2"
  32. PATH_M4="/root/src/m4-1.4.tar.gz"
  33. PATH_Make="/root/src/make-3.80.tar.gz"
  34. PATH_MAKEDEV="/root/src/MAKEDEV-1.7.bz2"
  35. PATH_Man="/root/src/man-1.5k.tar.gz"
  36. PATH_Man_pages="/root/src/man-pages-1.52.tar.bz2"
  37. PATH_Modutils="/root/src/modutils-2.4.22.tar.bz2"
  38. PATH_Ncurses="/root/src/ncurses-5.3.tar.gz"
  39. PATH_Netkit_base="/root/src/netkit-base-0.17.tar.gz"
  40. PATH_Net_tools="/root/src/net-tools-1.60.tar.bz2"
  41. PATH_Patch="/root/src/patch-2.5.4.tar.gz"
  42. PATH_Perl="/root/src/perl-5.8.0.tar.gz"
  43. PATH_Procinfo="/root/src/procinfo-18.tar.bz2"
  44. PATH_Procps="/root/src/procps-3.0.4.tar.bz2"
  45. PATH_Psmisc="/root/src/psmisc-21.2.tar.bz2"
  46. PATH_Sed="/root/src/sed-4.0.1.tar.gz"
  47. PATH_Shadow="/root/src/shadow-4.0.3.tar.gz"
  48. PATH_Sh_utils="/root/src/sh-utils-2.0.15.tar.gz"
  49. PATH_Sysklogd="/root/src/sysklogd-1.4.1.tar.gz"
  50. PATH_Sysvinit="/root/src/sysvinit-2.84.tar.gz"
  51. PATH_Tar="/root/src/tar-1.13.25.tar.gz"
  52. PATH_Texinfo="/root/src/texinfo-4.3.tar.gz"
  53. PATH_Textutils="/root/src/textutils-2.1.tar.gz"
  54. PATH_Util_linux="/root/src/util-linux-2.11y.tar.bz2"
  55. PATH_Vim="/root/src/vim"
  56. PATH_Zlib="/root/src/zlib-1.1.4.tar.bz2"

  57. ##*The work dir********
  58. BUILD_PATH="/usr/src/builder"
复制代码


我想用PATH_Filename="/usr/src/file.tar.gz:/usr/src/file.patch.bz2"
这种形式自动patch文件,思绪还在混乱中....不知怎么下手
都是这几天adsl停了闹心闹的(找借口ing... )
发表于 2002-12-30 17:23:49 | 显示全部楼层
出错了怎么处理?我也考虑过编写脚本来实现LFS的自动化安装,但是要加上出错处理的部分就比较困难了。在这方面,应该向gentoo好好学习。
发表于 2002-12-30 17:27:47 | 显示全部楼层
我觉得可以做多个脚本,一个main的来调用,main来处理错误,如何?也可以做一个通用的脚本,然后这个脚本来读许多相同格式的profile,每个包一个。
 楼主| 发表于 2002-12-30 17:42:51 | 显示全部楼层
是啊
出错处理是最麻烦的....
用很多的 profile感觉就 核 ebuilde很象了
想的越多就越象gentoo了
现在正在改 处理方式什么的都在改
我想以后再作个前端程序 可以设置断点 可以设置cpu加编译参数生成config文件等等
发表于 2004-5-11 16:01:48 | 显示全部楼层
呵呵,我也打算开始尝试一下了
不过SHELL还不熟悉。。
慢慢来
大家共同研究一下……
发表于 2004-5-11 18:41:42 | 显示全部楼层
用shell来控制lfs安装进程的意义不大,除了效率低下之外,还须使用许多繁杂的命令组合,倒不如用perl来处理恰当。现在的alfs其中一个版本就是用perl来实现的。兄弟如果想在lfs方面搞自动化,不妨先看看alfs的c源码或者perl版本。
发表于 2004-5-22 16:14:06 | 显示全部楼层
home兄,哪里有ALFS FOR 5。0的下载?
我找了半天都没找到。。谁能提供一个?
发表于 2004-5-22 16:53:13 | 显示全部楼层
有啊。
www.linuxfromscratch.org
官方网站就有,不过可能要用cvs下载。
发表于 2004-5-22 19:53:10 | 显示全部楼层
我到官方网站找了,连接失效
怎么用CVS下载?
可以说清楚一点么。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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