设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 发行版讨论区 —— LinuxSir.cn
›
LFS(LinuxfromScratch)
›
ebuild-lfs
返回列表
查看:
788
|
回复:
7
ebuild-lfs
[复制链接]
crazythink
crazythink
当前离线
积分
33
IP卡
狗仔卡
发表于 2003-3-8 16:18:42
|
显示全部楼层
|
阅读模式
即将第二次安装LFS,就搞点新鲜的玩意吧。
注:下面的代码是抄袭了gentoo的代码和下面这篇文章,并非原创!
http://www-900.ibm.com/developerWorks/cn/linux/shell/bash/bash-3/index.shtml
ebuild脚本:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Please specify ebuild file and unpack, compile, clean or all"
exit 1
fi
source ./ebuild.conf
if [ -z "$DISTDIR" ]
then
DISTDIR=`pwd`
fi
export DISTDIR
unpack() {
local x
local y
local myfail
for x in $@
do
myfail="failure unpacking ${x}"
echo ">>> Unpacking ${x} to $(pwd)"
y="$(echo $x | sed 's:.*\.\(tar\)\.[a-zA-Z0-9]*:\1:')"
case "${x##*.}" in
tar)
tar x --no-same-owner -f ${DISTDIR}/${x} || exit 1
;;
tgz)
tar xz --no-same-owner -f ${DISTDIR}/${x} || exit 1
;;
tbz2)
tar xj --no-same-owner -f ${DISTDIR}/${x} || exit 1
;;
ZIP|zip)
unzip -qo ${DISTDIR}/${x} || exit 1
;;
gz|Z|z)
if [ "${y}" == "tar" ]; then
tar xz --no-same-owner -f ${DISTDIR}/${x} || exit 1
else
gzip -dc ${DISTDIR}/${x} > ${x%.*} || exit 1
fi
;;
bz2)
if [ "${y}" == "tar" ]; then
tar xj --no-same-owner -f ${DISTDIR}/${x} || exit 1
else
bzip2 -dc ${DISTDIR}/${x} > ${x%.*} || exit 1
fi
;;
*)
echo "unpack ${x}: file format not recognized. Ignoring."
;;
esac
done
}
econf() {
if [ -x ./configure ] ; then
./configure \
--prefix=/usr \
"$@" || exit 1
else
echo "no configure script found"
fi
}
emake() {
if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
make "$@" || exit 1
else
echo "no Makefile found"
fi
}
einstall() {
if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then
make "$@" install || exit 1
else
echo "no Makefile found"
fi
}
src_unpack() {
#make sure we're in the right directory
cd ${ORIGDIR}
if [ -d ${WORKDIR} ]
then
rm -rf ${WORKDIR}
fi
mkdir ${WORKDIR}
cd ${WORKDIR}
if [ ! -e ${DISTDIR}/${A} ]
then
echo "${DISTDIR}/${A} does not exist. Please download first."
exit 1
fi
unpack ${A}
echo "Unpacked ${DISTDIR}/${A}."
#source is now correctly unpacked
}
src_compile() {
if [ ! -d "${SRCDIR}" ]
then
echo "${SRCDIR} does not exist -- please unpack first."
exit 1
fi
#make sure we're in the right directory
cd ${SRCDIR}
econf
emake
einstall
return
}
src_clean() {
cd ${ORIGDIR}
if [ -d ${WORKDIR} ]
then
rm -rf ${WORKDIR}
fi
}
export ORIGDIR=`pwd`
export WORKDIR=${ORIGDIR}/work
if [ -e "$1" ]
then
source $1
else
echo "Ebuild file $1 not found."
exit 1
fi
export SRCDIR=${WORKDIR}/${P}
case "${2}" in
unpack)
src_unpack
;;
compile)
src_compile
;;
clean)
src_clean
;;
all)
src_unpack
src_compile
src_clean
;;
*)
echo "Please specify unpack, compile, clean or all as the second arg"
exit 1
;;
esac
复制代码
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
crazythink
crazythink
当前离线
积分
33
IP卡
狗仔卡
楼主
|
发表于 2003-3-8 16:20:28
|
显示全部楼层
ebuild.conf
LFS=/mnt/lfs
CC='gcc -s'
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer -ffast-math -funroll-loops -fforce-addr -falign-functions=4"
CXXFLAGS="${CFLAGS}"
export LFS CC CHOST CFLAGS CXXFLAGS
复制代码
回复
支持
反对
使用道具
举报
显身卡
crazythink
crazythink
当前离线
积分
33
IP卡
狗仔卡
楼主
|
发表于 2003-3-8 16:27:45
|
显示全部楼层
bash-2.05b-static.ebuild
P=bash-2.05b
A=${P}.tar.gz
econf() {
./configure --enable-static-link \
--prefix=$LFS/static --with-curses
}
复制代码
你可以按照上面的格式写你的ebuild文件。
如果源码需要打patch,就重写unpack()
如果make和make install 需要加上其他的选项的话,就重写emake()和einstall()。太体上就是这样。
回复
支持
反对
使用道具
举报
显身卡
crazythink
crazythink
当前离线
积分
33
IP卡
狗仔卡
楼主
|
发表于 2003-3-8 16:32:32
|
显示全部楼层
最后就是makestatic.sh:
./ebuild bash-2.05b-static.ebuild all &&
....#在这里加上其他的ebuild
复制代码
由于本人刚学linux,基础较差,如有错误之处,还望各位大侠多多包涵。
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-3-8 18:58:20
|
显示全部楼层
文件后缀名挺有意思的,呵呵!
回复
支持
反对
使用道具
举报
显身卡
crazythink
crazythink
当前离线
积分
33
IP卡
狗仔卡
楼主
|
发表于 2003-3-10 12:25:09
|
显示全部楼层
为什么我不能修改我发表的帖子?已经过了时限了啊!
改正一下错误之处:
先是ebuild脚本,在src_clean()中的if语句前加上cd ${ORIGDIR}确保在正确的目录。
再是ebuild.conf里面要export LFS CC CHOST CFLAGS CXXFLAGS才能使用优化参数。
还有就是makestatic.sh里调用./ebuild时少了个参数,改为
./ebuild bash-2.05b-static.ebuild all &&
错误多多,望各位老兄不要见怪。呵呵~
不过,各位老兄好象不喜欢的说~郁闷!
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-3-10 12:52:15
|
显示全部楼层
不是啊,以前flaboy写过一个,和你的不太一样,不过想法差不多的,呵呵,我们都记下来了!
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-3-11 13:34:31
|
显示全部楼层
crazythink兄,你说说我们能不能把你的脚本和flaboy的脚本结合一下,把各种情况考虑好,比如:编译时出错,还有编译的记录,编译的顺序。把这些做好,咱们就能推出自己的小发行版了,呵呵!
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表