int install_help(int argc,char **argv,struct sub_command* cmd) { if(argc==1) { cond_printf(0,"Usage: %s install impl [OPTIONS]\n\nFor more details on impl specific options, type:\n %s help install impl\n\n" "Candidates impls for installation are:\n",argv_orig[0],argv_orig[0]); char* install=lispdir(); LVal d=directory(install),v=d; for(;v;v=Next(v)) { char* str=firsts(v); if(str[strlen(str)-1]!='/') { int p=position_char(".",str); if(p!=-1) { char *sub=subseq(str,0,p); if(p>=8/*strlen("install-")*/ && strncmp(str,"install-",8)==0) printf("%s\n",sub+8); s(sub); } } } sL(d); }else if(argc==2) { int i,j,argc_; char** tmp; char* install_ros=s_cat2(lispdir(),q("install.ros")); tmp=(char**)alloc(sizeof(char*)*(argc+9)); i=0; tmp[i++]=q("--"); tmp[i++]=install_ros; tmp[i++]=q("help"); tmp[i++]=q(argv[1]); for(j=2;j<argc;tmp[i++]=q(argv[j++])); argc_=i; for(i=0;i<argc_;i+=proccmd(argc_-i,&tmp[i],top_options,top_commands)); for(j=0;j<argc_;s(tmp[j++])); dealloc(tmp); } return 0; }
int cmd_version(int argc,char **argv,struct sub_command* cmd) { fprintf(stderr,"%s",PACKAGE_STRING); if(strlen(ROS_REVISION)>0) fprintf(stderr,"(%s)",ROS_REVISION); if(strcmp(argv[0],"--version")!=0) { char *c= configdir(),*l=lispdir(); fprintf(stderr,"\nbuild with %s",ROS_COMPILE_ENVIRONMENT); #ifdef HAVE_CURL_CURL_H fprintf(stderr,"\nlibcurl %s",LIBCURL_VERSION); #endif fprintf(stderr,"\nlispdir='%s'",l),s(l); if(c) fprintf(stderr,"\nconfigdir='%s'",c),s(c); } fprintf(stderr,"\n"); return 0; }
int cmd_setup(int argc,char **argv,struct sub_command* cmd) { char* v=verbose==1?"-v ":(verbose==2?"-v -v ":""); int ret=1; lock_apply("setup",0); char* sbcl_bin_version=get_opt("sbcl-bin.version",0); if(!sbcl_bin_version) { CMD_SETUP_SYSTEM(cat(argv_orig[0]," ",v,"install sbcl-bin",NULL),"Installing sbcl-bin...\n"); }else fprintf(stderr,"Already have sbcl-bin.\n"); CMD_SETUP_SYSTEM(cat(argv_orig[0]," ",v,"install quicklisp",NULL),"Installing Quicklisp...\n"); #ifdef HAVE_WINDOWS_H CMD_SETUP_SYSTEM(cat(argv_orig[0]," ",v,"install 7zip",NULL),"Installing 7zip...\n"); #endif if(argc==1) CMD_SETUP_SYSTEM(cat(argv_orig[0]," ",v,lispdir(),"setup.ros",NULL),"Making core for Roswell...\n"); lock_apply("setup",1); return ret; }
int cmd_install(int argc,char **argv,struct sub_command* cmd) { install_cmds *cmds=NULL; struct install_options param; quicklisp=1; param.os=uname(); param.arch=uname_m(); param.arch_in_archive_name=0; param.expand_path=NULL; if(argc!=1) { int ret=1,k; for(k=1;k<argc;++k) { int i,pos; param.impl=argv[k]; pos=position_char("/",param.impl); if(pos!=-1) { param.version=subseq(param.impl,pos+1,0); param.impl=subseq(param.impl,0,pos); }else { param.version=NULL; param.impl=q(param.impl); } for(install_impl=NULL,i=0;i<sizeof(impls_to_install)/sizeof(struct install_impls*);++i) { struct install_impls* j=impls_to_install[i]; if(strcmp(param.impl,j->name)==0) { install_impl=j; } } if(install_impl) { for(cmds=install_impl->call;*cmds&&ret;++cmds) ret=(*cmds)(¶m); if(ret) { // after install latest installed impl/version should be default for 'run' struct opts* opt=global_opt; struct opts** opts=&opt; char* home=configdir(); char* path=cat(home,"config",NULL); char* v=cat(param.impl,".version",NULL); char* version=param.version; if(!install_impl->util) { int i; for(i=0;version[i]!='\0';++i) if(version[i]=='-') version[i]='\0'; set_opt(opts,"default.lisp",param.impl,0); set_opt(opts,v,version,0); save_opts(path,opt); } s(home),s(path),s(v); } }else { char* lisp_path=lispdir(); int i,j,argc_; char** tmp; char* install_ros=s_cat2(lisp_path,q("install.ros")); if(verbose&1) { fprintf(stderr,"%s is not implemented internal. %s argc:%d\n",param.impl,install_ros,argc); for(i=0;i<argc;++i) fprintf(stderr,"%s:",argv[i]); fprintf(stderr,"\n"); } tmp=(char**)alloc(sizeof(char*)*(argc+9)); i=0; tmp[i++]=q("--"); tmp[i++]=install_ros; tmp[i++]=q("install"); tmp[i++]=q(argv[1]); for(j=2;j<argc;tmp[i++]=q(argv[j++])); argc_=i; if(verbose&1) { int j; fprintf(stderr,"argc_=%d",argc_); for(j=0;j<argc_;++j) fprintf(stderr,"argv[%d]=%s,",j,tmp[j]); } for(i=0;i<argc_;i+=proccmd(argc_-i,&tmp[i],top_options,top_commands)); for(j=0;j<argc_;s(tmp[j++])); dealloc(tmp); return 0; } if(param.version)s(param.version); s(param.impl),s(param.arch),s(param.os); s(param.expand_path); if(!ret) exit(EXIT_FAILURE); } }else { char* tmp[]={"help","install"}; proccmd(2,tmp,top_options,top_commands); exit(EXIT_SUCCESS); } return 0; }