atfa
发表于 2006-4-20 10:46:18
不会吧,这也太夸张了,stdlib.h是系统的根啊
再说其他的都可以编译,就是这个不能编译
嗯
奇了怪了
无双TM
发表于 2006-4-21 11:35:31
我的脚本 你试试看
或是直接在 edje目录下直接运行 autogen.sh; make
看出错情况
你的这种错误基本上不会有吧 除非在autogen.sh里面出了什么问题或是make中前面已经出现了什么问题
#!/usr/bin/perl
#
use strict;
use FileHandle;
my$autobuilddir = 1; # if true,then auto build all directory
my$autobuild = 1; # if true,auto build all packages in a directory
my$autocvs = 0; # if true, auto download source code from CVS
my$usedeb = 0; # if true, will create deb and install deb package,else use "make install" to install
my @e17objs =(
['e17/libs','../..',
'eet',
'evas',
'ecore',
'embryo',
'edje'
],
['e17/apps','../..',
'e'
],
);
my @eflobjs =(
['e17/libs','../..',
'eet',
'edb',
'evas',
'ecore',
'embryo',
'imlib2',
'edje',
'epeg',
'epsilon',
'esmart',
'emotion',# (note that you'll need to have xine-lib installed as emotion uses it)
'engrave',# (this is currently needed for e_utils only)
'ewl', # (this is needed for some apps only)
'etox'
],
['e17/proto','../..',
'etk' # (this is needed for some apps only)
],
['e17/apps','../..',
'e',
'entice', # (image viewer)
'entrance',# (login manager)
'eclair', # (media player)
'elicit' # (color picker/screen magnifier)
],
['misc','..',
'engage', # (standalone dockbar and E17 module)
'erss', # (RSS feed application that does not work correctly in E17)
'embrace' # (mail checker and E17 module)
],
['misc','..',
'entropy',# (file manager)
'exhibit' # (image viwer)
],
);
my$fd_build = new FileHandle ">build.log";
my$fd_screen= new FileHandle ">screen.log";
check_debbuildenv(); # if you don't want to build deb package, comment this line
get_cvs() if($autocvs);
do_install(@e17objs);
close($fd_build);
close($fd_screen);
sub do_install(){
my @compileobjs = @_;
log_screen("\n\nstart build debian packages\n\n");
my $objs;
foreach $objs (@compileobjs){
my @objarray = @$objs;
my $dir = shift(@objarray);
my $back_dir = shift(@objarray);
if( ! -d $dir ){
log_screen("dir:$dir not exist,will skip compile it\n");
next;
}
next if( (!$autobuilddir)
&& (!choseact("are you want to build dir:$dir\n")) );
log_screen("start parse:<<<<< $dir>>>>>: back:$back_dir\n");
chdir $dir;
system('rm -f *.deb *.dsc *.tar.gz *.changes');
my $subdir;
foreach $subdir (@objarray){
if( !(-d $subdir) ){
log_screen("dir:$subdir not exist,skip compile it\n");
next;
}
chdir($subdir);
while( parsedir($subdir) ){}
$fd_build->autoflush(1);
log_screen("\n");
chdir("../");
system('rm -f *.dsc *.tar.gz *.changes');
}
chdir $back_dir;
}
}
sub parsedir()
{
my $pkg = $_[0];
log_screen("\n\nenter directory:".$pkg."\n");
return 0 if((!$autobuild) && (!choseact("are you want to build:$pkg\n")) );
my $curpwd = qx(pwd);
chomp($curpwd);
$fd_build->autoflush(0);
log_screen("\tcur dir is:\n\t$curpwd\n");
log_screen("\trun: dpkg-buildpackage -us -uc -rfakeroot 2>&1\n");
chmod 755,'debian/rules' if(! -x 'debian/rules');
chmod 755,'autogen.sh' if(! -x 'autogen.sh');
system("make distclean >/dev/null 2>&1");
if(!$usedeb){
#if you don't use deb,then you can call these line
run_cmd('./autogen.sh --prefix=/usr');
run_cmd('make');
run_cmd('make uninstall');
run_cmd('make install');
return ;
}
system('cp debian/changelog.in debian/changelog >/dev/null 2>&1') if(! -f 'debian/changelog');
open(MAKEFI,"dpkg-buildpackage -us -uc -rfakeroot 2>&1|") || die "exec fail\n";
log_screen( 'dpkg-buildpackage -us -uc -rfakeroot 2>&1'."\n");
my @pkgs;
my $line;
while($line=<MAKEFI>){
my $notlog = 1;
if($line=~m/\berror\b/i){
if($line!~m/dpkg-genchanges:\s+error:\s+cannot\s+open\s+\.dsc/){
$notlog = 0;
log_screen($line);
}
}
log_build( $line) if($notlog);
if($line=~m/\bUnmet\s+build\s+dependencies\b/i){
log_screen($line);
log_screen("are you want to install missing dependence then rebuild this package or skip build this package(default:skip)\n");
log_screen("press n to skip,else you press 'Y' after finish install missing packages\n");
return choseact("") ;
}
next if($line!~m/dpkg-deb:\s+building\s+package\s+\`([^']+)\'\s+in\s+\`([^']+)\'/);
log_screen("\tpkg:[$1:\t$2]\n");
push(@pkgs,$2);
}
close(MAKEFI);
if($#pkgs < 0){
log_screen("error no package found,build message is write to build.log file\n");
}
else{
my $pkgfile = join(" ",@pkgs);
log_screen( "\n>>>>>>>>>\n\tdpkg -i $pkgfile\n\n");
run_cmd("dpkg -i $pkgfile");
}
log_screen("\n");
return 0;
}
#
# choose user select
#
sub choseact()
{
log_screen( $_[0]."\nplease input yes or no [Y]\n");
my $in=<STDIN>;
if($in=~m/n/i){
log_screen( "cancel\n");
return 0;
}
log_screen( "\n");
return 1;
}
#
# downlaod E17 source code from CVS
#
sub get_cvs()
{
print "get CVS source code\n";
print "login CVS:,when need you input password,press return directly\n";
print 'cvs -d:pserver:
[email protected]:/cvsroot/enlightenment login'."\n";
system('cvs -d:pserver:
[email protected]:/cvsroot/enlightenment login');
print 'chech out E17:'."\n";
print 'cvs -z3 -d:pserver:
[email protected]:/cvsroot/enlightenment co e17'."\n";
system('cvs -z3 -d:pserver:
[email protected]:/cvsroot/enlightenment co e17');
print 'chech out Misc:'."\n";
print 'cvs -z3 -d:pserver:
[email protected]:/cvsroot/enlightenment co misc'."\n";
system('cvs -z3 -d:pserver:
[email protected]:/cvsroot/enlightenment co misc');
}
#
# check debian build env
#
sub check_debbuildenv()
{
my @pkglist = qx(dpkg --get-selections);
my $lines = join(':',@pkglist);
check_pkg($lines,"autoconf",1);
check_pkg($lines,"automake",1,"(version >=1.7)");
check_pkg($lines,"libtool",1);
check_pkg($lines,"pkg-config",1);
if($usedeb){
check_pkg($lines,"fakeroot",1);
check_pkg($lines,"dpkg-dev",1);
}
check_pkg($lines,"libxcursor-dev",0,"(it may need by ecore,if link ecore fail, please install it)");
log_screen("if you use xorg,then build script report xlibs-dev not install, you need to modify the {directory}/debian/control file, change xlibs-dev to libx11-dev\n");
}
sub check_pkg()
{
my($pkglists,$pkgname,$exitmode,$version)=@_;
my$exit = 0;
$exit = 1 if( $pkglists!~m/\b$pkgname[^:]*\s+install/);
if( $exit ){
log_screen("WARNNING: ") if(! $exitmode );
log_screen("you don't install $pkgname, please use \n\tapt-get install $pkgname\n to install it.$version \n");
die if( $exitmode );
}
}
#
# run a command,and log command output to screen.log
#
sub run_cmd()
{
my $cmd = $_[0];
my $fd;
open($fd,"$cmd 2>&1 |");
if( ! $fd ){
log_screen("exec $cmd fail,check if this command exist\n");
die;
}
my $line;
while($line=<$fd>){
log_screen($line);
}
}
#
# log screen output
#
sub log_screen()
{
print @_;
print $fd_screen @_;
log_build(@_);
}
#
# log build result to build.log
#
sub log_build()
{
print $fd_build @_;
}
atfa
发表于 2006-4-21 14:23:16
我尝试直接emerge libc6
都可以报错,说是没有安装或者版本太低的gcc
cao!
无双TM
发表于 2006-4-21 16:56:32
不会吧:shock:
不过现在gcc默认好像是要3.4的
3.3的可能不支持了
atfa
发表于 2006-4-21 22:38:54
不想了,过段时间忙完了把系统重新装一次
有了上一次的经验
这一次可以少走很多弯路
再次告诫大家:不要安装太多不稳定的包
无双TM
发表于 2006-4-23 12:21:05
我一般是过一段时间后会重装一次系统 如内核或是其它重要的包修改的比较多的时候 或是觉得系统不够稳定了
反正系统里面没有什么重要的东西 常用的脚本和文件等都放在其它分区上
另外debian重装也方便 debootstrap一下就可以了 :)
最新的E17 start模块放出来了 E17里面的基本模块是放在一个栏上面 这个栏会一直在最前 但是没有办法隐藏它
看来是还没有改好
另外修改了一下border的大小没有修改成功
http://static.flickr.com/56/133227816_a742c574ed_o.png
无双TM
发表于 2006-4-23 13:48:56
最新版本的E17下面的停靠栏位置不可以改变 (难道是模仿最新的mac?? )
但是在其它程序全屏时这个停靠栏会在后面(运行了一下星际没问题,看来比fcitx好多了 :))
恢复engage滚轮切换应用程序的方法
现在E17中滚轮时会切换桌面
而engage中也定义了在一个图标上滚轮时在这个程序的多个窗口间切换的功能
这两个事件只能用一个
如果你喜欢用enagage的事件处理 那可以这样操作
1得到当前滚轮事件的处理者
enlightenment_remote -binding-wheel-lenlightenment_remote -binding-wheel-list | grep CONTEXT=CONTAINER >wheel.sh
这时文件wheel.sh内容如下
REPLY <- BEGIN
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=0 Z=-1 MODIFIERS=NONE ANY_MOD=1 ACTION="desk_linear_flip_by" PARAMS="-1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=1 Z=-1 MODIFIERS=NONE ANY_MOD=1 ACTION="desk_linear_flip_by" PARAMS="-1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=0 Z=1 MODIFIERS=NONE ANY_MOD=1 ACTION="desk_linear_flip_by" PARAMS="1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=1 Z=1 MODIFIERS=NONE ANY_MOD=1 ACTION="desk_linear_flip_by" PARAMS="1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=1 Z=-1 MODIFIERS=ALT ANY_MOD=0 ACTION="desk_linear_flip_by" PARAMS="-1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=0 Z=1 MODIFIERS=ALT ANY_MOD=0 ACTION="desk_linear_flip_by" PARAMS="1"
REPLY: BINDING CONTEXT=CONTAINER DIRECTION=1 Z=1 MODIFIERS=ALT ANY_MOD=0 ACTION="desk_linear_flip_by" PARAMS="1"
REPLY <- END
2 编辑wheel.sh,删除这些事件
vi -g wheel.sh
先把REPLY->BEGIN与REPLY->end去掉然后
:%s/\w\+=//genlightenment_remote -binding-wheel-delCONTAINER 0 -1 NONE 1 "desk_linear_flip_by" "-1"
enlightenment_remote -binding-wheel-delCONTAINER 0 1 NONE 1 "desk_linear_flip_by" "1"
enlightenment_remote -binding-wheel-delCONTAINER 1 1 NONE 1 "desk_linear_flip_by" "1"
enlightenment_remote -binding-wheel-delCONTAINER 0 -1 ALT 0 "desk_linear_flip_by" "-1"
enlightenment_remote -binding-wheel-delCONTAINER 1 -1 ALT 0 "desk_linear_flip_by" "-1"
enlightenment_remote -binding-wheel-delCONTAINER 0 1 ALT 0 "desk_linear_flip_by" "1"
enlightenment_remote -binding-wheel-delCONTAINER 1 1 ALT 0 "desk_linear_flip_by" "1
执行一下就可以
sh wheel.sh
这时engage的滚轮功能应该就可以用了
:%s/^R.\{-1,}G/enlightenment_remote -binding-wheel-del/g
这时文件内容应该如下
cobranail
发表于 2006-4-24 00:23:50
事件可以用erme设置,还是比较强大的。
啥时候把engage也提前就好了。
无双TM
发表于 2006-4-24 12:03:31
现在是只有放在那个面板里面的内容才可以提前
我也希望engage或是每个module都可以设置是不是要提前 这样就方便了
cobranail
发表于 2006-4-24 14:07:25
我更新了一下e17,还是没有systray的模块。
现在的systray怎么处理的?仍然用engage的?
也许能通过edc代码,把其它的模块swallow到那个面板里
有空看看它的edc是怎么写的
无双TM
发表于 2006-4-24 17:44:32
现在的theme好像改的比较多
systray的问题 你在module里面enable它了吗?
我因为使用engage的systray没试过systray模块 (这两个好像有冲突, 如果engage的tray功能使用后 systray捕不到图标 一个多月前试过是这样子 后面engage的tray功能改善了后就一直用engage的了)
cobranail
发表于 2006-4-24 22:59:01
现在有systray模块了?
我的怎么没有,属于哪个部分的?
无双TM
发表于 2006-4-25 12:52:18
engage里面的还是E里面的
E里面的叫itray
engage里面是有systray功能的
打开d4x或是gaim时会在engage的右方有个小图标
cobranail
发表于 2006-4-25 13:43:05
我说的是e里的itray,不是已经不再支持了么?
j11050
发表于 2006-4-26 11:26:48
为什么我编译安装后,没有文件管理器