#!/usr/bin/ruby #prefix = "/home/xtakei/cvs/emacsen-common/apel-sample" prefix ="/" if $DEBUG ENV["PRIORITY"]="20" def system(string) print string print "\n" end end # variables # installed emacs flavors = ARGV[0] # installed elisp package elpackages = Array.new lib_dir = prefix+"/usr/lib/emacsen-common" var_dir = prefix+"/var/lib/emacsen-common" $action = "install" if $0 =~ /remove/ then $action = "remove" end #print "actionscript:"+actionscript+"\n" def getflavors(var_dir = "/") return open(var_dir+"/installed-flavors").readlines end def getelisp(var_dir = "/") return open(var_dir+"/installed-elisp").readlines end def install_alternatives(flavor) if flavor =~/^xemacs/ comand_options="/sbin/update-alternatives --install /usr/b\in/xemacs xemacs /usr/bin/#{flavor} #{ENV['PRIORITY'].to_i} ;" else comand_options="" end comand_options=comand_options+"/sbin/update-alternatives --install /usr/bin/emacs emacs /usr/bin/#{flavor} #{ENV['PRIORITY'].to_i} " open("/var/lib/emacs/alternative-filelist","r").each{ |src| unless src =~/\/usr\/bin\/emacs$/ then src.chomp! file=src.dup # if src =~/\/man\/man[0-9]/ then # file.gsub!(/([^\/^\.]+)\.([0-9])\.gz/){ # "#{$1}.#{flavor.to_s}.#{$2}" # } # else file+="."+flavor # end comand_options=comand_options+" --slave "+src+" "+File.basename(src) +" "+file end } system(comand_options) end def change_flavor(flavors) @number = "" alternatives_config = open("|/sbin/update-alternatives --config emacs") alternatives_config.each{ |line| if line=~/.#{flavor}/ then line.scan(/^[\*\+ ]+([1-9]+)/){ @number = $1.to_s } break end } alternatives.close system("echo #{@number} | /sbin/update-alternatives --config emacs") end def reverse_flavor system("/sbin/update-alternatives --auto emacs") end def remove_flavor(flavor) system("/sbin/update-alternatives --remove emacs /usr/bin/#{flavor}") if flavor =~/xemacs/ system("/sbin/update-alternatives --remove xemacs /usr/bin/#{flavor} ") end end def update_flavor(flavor) system("/sbin/update-alternatives --auto emacs ") if flavor =~/xemacs/ system("/sbin/update-alternatives --auto xemacs ") end end elisp = getelisp(var_dir) if $action =~/remove/ then elisp.reverse! remove_flavor(flavors) else install_alternatives(flavors) end update_flavor(flavors) #system2("#{lib_dir}/change-temporary-flavor #{flavors}") #change_flavor(flavors) elisp.each{ |el| el.chomp! actionscript = lib_dir+"/packages/"+$action+"/"+el _eprefix=ENV["EPREFIX"] ENV["EPREFIX"]=prefix system("#{actionscript} #{flavors}\n") ENV["EPREFIX"]=_eprefix } #system2("#{lib_dir}/reverse-default-flavor") #reverse_flavor