setup/ (start using) Rakefile Rantfile link to setup/rbuild
authorRalph Amissah <ralph@amissah.com>
Fri, 29 Aug 2014 23:26:17 +0000 (19:26 -0400)
committerRalph Amissah <ralph@amissah.com>
Fri, 29 Aug 2014 23:26:17 +0000 (19:26 -0400)
Rakefile
Rantfile
rbuild [deleted file]
setup/rbuild [new file with mode: 0644]
setup/rbuild_help.rb [new file with mode: 0644]
setup/rbuild_libs.rb [new file with mode: 0644]
setup/sisu_version.rb [new file with mode: 0644]
version [new symlink]

index 3ace5013552e6f411146fe3d03bbf954ab67d4bb..20d910144e7cbb237360c415113cba49e02a0570 120000 (symlink)
--- a/Rakefile
+++ b/Rakefile
@@ -1 +1 @@
-rbuild
\ No newline at end of file
+setup/rbuild
\ No newline at end of file
index 3ace5013552e6f411146fe3d03bbf954ab67d4bb..20d910144e7cbb237360c415113cba49e02a0570 120000 (symlink)
--- a/Rantfile
+++ b/Rantfile
@@ -1 +1 @@
-rbuild
\ No newline at end of file
+setup/rbuild
\ No newline at end of file
diff --git a/rbuild b/rbuild
deleted file mode 100644 (file)
index 32b45dc..0000000
--- a/rbuild
+++ /dev/null
@@ -1,990 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- Common Rakefile, Rantfile installer for SiSU
-   softlink Rakefile and Rantfile to this file
-
- * Homepage: <http://www.jus.uio.no/sisu/SiSU>
-             <http://search.sisudoc.org>
- * Download: <http://www.jus.uio.no/sisu/download>
-
- Copyright (C) 2007 Ralph Amissah
-
- * License: LGPL - GNU Lesser General Public License
-     [same license as Rant provided within the Rant package]
-
- * Ralph Amissah <ralph@amissah.com>
-   Ralph Amissah <ralph.amissah@gmail.com>
-
- Rake is a Ruby build program by Jim Weirich
- * Rake may be downloaded and installed from:
-     <http://rake.rubyforge.org/>
-
- Rant is a Ruby build program by Stefan Lang
- * Rant may be downloaded and installed from:
-     <http://make.rubyforge.org/>
-
- Notes on use:
-   [if rake is preferred and installed]
-     rake -T
-   [if rant is preferred and installed]
-     rant -T
-
- SiSU can also be Setup/Installation using:
- * Minero Aoki's setup.rb, provided along with SiSU, or
-
-=end
-#%% produce a makefile suitable for the target platform
-#require 'mkmf'
-#create_makefile("sisu")
-#% manual settings, edit/update as required (note current default settings are obtained from sisu version yml file)
-SiSU_version_next_stable     = '5.6.3' #% set version stable current
-SiSU_version_next_unstable   = '6.2.4' #% set version unstable dev
-#% rake file
-SiSU_version_generic_next_stable     = '5.4.x'
-SiSU_version_generic_next_unstable   = '6.0.x'
-SiSU_version_dir_stable            = 'v5'
-SiSU_version_dir_unstable          = 'v6'
-require 'find'
-require 'fileutils'
-#require 'ftools'
-require 'rbconfig.rb'
-require 'yaml'
-include FileUtils
-module Project_details
-  def self.name
-    'SiSU'
-  end
-  def self.rake_rant
-    "Rakefile/Rantfile for the installation/setup of #{name}"
-  end
-  def self.platform_notice
-    "[#{name} is for Linux/Unix Platforms]"
-  end
-  def self.env
-    RbConfig::CONFIG
-  end
-  def self.host
-    env['host']
-  end
-  def self.dir
-    def self.proj
-      Project_details.name.downcase
-    end
-    def self.arch
-      env['archdir']
-    end
-    def self.sitearch
-      env['sitearchdir']
-    end
-    def self.bin
-      env['bindir']
-    end
-    def self.lib
-      env['sitelibdir']
-    end
-    def self.data
-      env['datadir']
-    end
-    def self.share
-      "#{env['datadir']}/sisu"
-    end
-    def self.conf
-      env['sysconfdir']
-    end
-    def self.man
-      env['mandir']
-    end
-    def self.vim
-      "#{env['datadir']}/sisu/vim"
-    end
-    def self.out
-      "#{env['localstatedir']}/#{proj}"
-    end
-    def self.rubylib
-      env['LIBRUBYARG_SHARED']
-    end
-    def self.pwd
-      Dir.pwd #ENV['PWD']
-    end
-    self
-  end
-  def self.version
-    stamp={}
-    v="#{dir.pwd}/conf/sisu/version.yml"
-    if File.exist?(v)
-      stamp=YAML::load(File::open(v))
-      stamp[:version]
-    else ''
-    end
-  end
-  def self.system_info
-    ##{Project_details.platform_notice}
-    puts <<-WOK
-  Host
-    host:             #{Project_details.host}
-    arch:             #{Project_details.dir.arch}
-    sitearch:         #{Project_details.dir.sitearch}
-  Directories for installation
-    bin:                                          #{Project_details.dir.bin}
-    lib (site-ruby):                              #{Project_details.dir.lib}/#{Project_details.dir.proj}/v*
-    conf [etc]:                                   #{Project_details.dir.conf}/#{Project_details.dir.proj}
-    data (odf, shared images):                    #{Project_details.dir.share}
-    vim  (vim syntax, highlighting, ftplugin):    #{Project_details.dir.data}/sisu/vim
-    data (README, version_manifest):              #{Project_details.dir.data}/doc/#{Project_details.dir.proj}
-    man (manual pages):                           #{Project_details.dir.man}
-    output:                                       #{Project_details.dir.out}
-      processing:                                 #{Project_details.dir.out}/processing
-      www:                                        #{Project_details.dir.out}/www
-    rubylib:                                      #{Project_details.dir.rubylib}
-
-    WOK
-  end
-  def self.gem_env
-    system("gem env")
-  end
-end
-module Utils
-  def self.answer?(ask)
-    resp='redo'
-    print ask + " ['yes', 'no' or 'quit']: "
-    resp=File.new('/dev/tty').gets.strip #resp=gets.strip
-    if    resp == 'yes'        then true
-    elsif resp == 'no'         then false
-    elsif resp =~/^quit|exit$/ then exit
-    else                       puts "[please type: 'yes', 'no' or 'quit']"
-                               answer?(ask)
-    end
-  end
-  def self.default_notice
-    ans= %{#{Project_details.rake_rant}
-    Information on alternative actions is available using:
-    [if rake (or rant) is installed:]
-      "rake help" or "rake -T" (or "rant help" or "rant -T")
-    Default action selected - "install #{Project_details.name}" proceed? }
-    resp=answer?(ans)
-    exit unless resp
-  end
-  def self.chmod_file(place)
-    if place =~/\/bin/; File.chmod(0755,place)
-    else                File.chmod(0644,place)
-    end
-  end
-  def self.chmod_util(place)
-    if place =~/\/bin/; chmod(0755,place)
-    else                chmod(0644,place)
-    end
-  end
-  def self.system_date
-    `date "+%Y-%m-%d"`.strip
-  end
-  def self.system_date_stamp
-    `date "+%Yw%W/%u"`.strip
-  end
-  def self.program_found?(prog)
-    found=`which #{prog}` #`whereis #{make}`
-    (found =~/bin\/#{prog}\b/) ? :true : :false
-  end
-end
-module Install
-                                                           #%% using a directory and its mapping
-  def self.setup_find_create(dir_get,dir_put,exclude_files=[''])               #primary,
-    begin
-    Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f|
-      stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join
-      place="#{dir_put}/#{stub}"
-      action=case
-      when File.file?(f)
-        unless f =~/#{exclude_files.inspect}/
-          cp(f,place)
-          Utils.chmod_file(place)
-          "->  #{dir_put}/"
-        end
-      when File.directory?(f)
-        FileUtils.mkpath(place) unless FileTest.directory?(place)
-        "./#{dir_get}/"
-      else '?'
-      end
-      puts "#{action}#{stub}"
-    end
-    rescue
-      puts "\n\n<< are you root? required for install >>"
-    end
-  end
-  def self.setup_find_cp_r(dir_get,dir_put)                                    #secondary, using recursive copy
-    Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f|
-      stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join
-      place="#{dir_put}/#{stub}"
-      case
-      when File.file?(f)
-        cp_r(f,place)
-        Utils.chmod_util(place)
-      when File.directory?(f)
-        mkdir(place) unless FileTest.directory?(place)
-      end
-    end
-  end
-end
-module Version_info
-  def self.contents(vi)
-    <<-WOK
----
-:project: #{vi[:project]}
-:version: #{vi[:version]}
-:date_stamp: #{vi[:date_stamp]}
-:date: "#{vi[:date]}"
-    WOK
-  end
-  module Current
-    def self.yml_file_path(version)
-      "data/sisu/#{version}/v/version.yml"
-    end
-    def self.settings(file)
-      v="#{Dir.pwd}/#{file}"
-      if File.exist?(v)
-        YAML::load(File::open(v))
-      else ''
-      end
-    end
-    def self.file_stable
-      yml_file_path(SiSU_version_dir_stable)
-    end
-    def self.file_unstable
-      yml_file_path(SiSU_version_dir_unstable)
-    end
-    def self.setting_stable
-      settings(file_stable)
-    end
-    def self.setting_unstable
-      settings(file_unstable)
-    end
-    def self.content_stable
-      Version_info.contents(setting_stable)
-    end
-    def self.content_unstable
-      Version_info.contents(setting_unstable)
-    end
-  end
-  module Next
-    def self.settings(v)
-      {
-        project:        "#{Project_details.name}",
-        version:        "#{v}",
-        date:           "#{Utils.system_date}",
-        date_stamp:     "#{Utils.system_date_stamp}",
-      }
-    end
-    def self.setting_stable
-      settings(SiSU_version_next_stable)
-    end
-    def self.setting_unstable
-      settings(SiSU_version_next_unstable)
-    end
-    def self.content_stable
-      Version_info.contents(setting_stable)
-    end
-    def self.content_unstable
-      Version_info.contents(setting_unstable)
-    end
-  end
-  module Update
-    def self.version_info_update_commit(filename,vi_hash_current,vi_content_current,vi_hash_next,vi_content_next)
-      ans=%{update #{Project_details.name.downcase} version info replacing:
-  #{vi_hash_current.sort}
-with:
-  #{vi_hash_next.sort}
-
-#{vi_content_current} becoming:
-#{vi_content_next}
-proceed? }
-      resp=Utils.answer?(ans)
-      if resp
-        fn="#{Dir.pwd}/#{filename}"
-        if File.writable?("#{Dir.pwd}/.")
-          file_version=File.new(fn,'w+')
-          file_version << vi_content_next
-          file_version.close
-        else
-          puts %{*WARN* is the file or directory writable? could not create #{filename}}
-        end
-      end
-    end
-    def self.update_stable
-      version_info_update_commit(Version_info::Current.file_stable,Version_info::Current.setting_stable,Version_info::Current.content_stable,Version_info::Next.setting_stable,Version_info::Next.content_stable)
-    end
-    def self.update_unstable
-      version_info_update_commit(Version_info::Current.file_unstable,Version_info::Current.setting_unstable,Version_info::Current.content_unstable,Version_info::Next.setting_unstable,Version_info::Next.content_unstable)
-    end
-    def self.changelog_header(vi)
-      <<-WOK
-%% #{vi[:version]}.orig.tar.xz (#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')})
-http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_#{vi[:version]}
-http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_#{vi[:version]}-1
-http://www.jus.uio.no/sisu/pkg/src/sisu_#{vi[:version]}.orig.tar.xz
-  sisu_#{vi[:version]}.orig.tar.xz
-  sisu_#{vi[:version]}-1.dsc
-      WOK
-    end
-    def self.changelog_header_stable
-      changelog_header(Version_info::Current.setting_stable)
-    end
-    def self.changelog_header_unstable
-      changelog_header(Version_info::Current.setting_unstable)
-    end
-  end
-  self
-end
-module GitExtractTaggedVersionBuild
-  def upstream
-    system(%{ git checkout upstream })
-  end
-  def self.git_tagged_versions(vb=nil)
-    if vb.tag
-      v=if vb.tag =~/sisu_[0-9](?:\.[0-9]){0,2}$/ then vb.tag
-      elsif vb.tag =~/^[0-9](?:\.[0-9]){0,2}$/    then 'sisu_' + vb.tag
-      else                                             'sisu_'
-      end
-      system(%{ git tag -l | ag --nocolor '^#{v}' })
-    end
-  end
-  def self.git_checkout_and_build_version(vb)
-    begin
-      ver=if vb.tag =~/sisu_[0-9]\.[0-9]+\.[0-9]+/ then vb.tag
-      elsif  vb.tag =~/^[0-9]\.[0-9]+\.[0-9]+/     then 'sisu_' + vb.tag
-      else                                               vb.branch
-      end
-      install_branch=case vb.branch
-      when /^(?:stable|unstable)$/
-        "gem_create_build_install_#{vb.branch}"
-      when /^(?:all)/
-        'gem_create_build_install'
-      else
-        'gem_create_build_install_stable'
-      end
-      commands =<<-WOK
-        git checkout #{ver} &&
-        rake #{install_branch};
-      WOK
-      puts commands
-      system(commands)
-    ensure
-      system(%{
-        git checkout upstream
-      })
-    end
-  end
-end
-module Gemspecs
-  def self.info(vi)
-    puts <<-WOK
---
-name:       #{vi[:project].downcase}
-version:    #{vi[:version]}
-date:       #{vi[:date]}
-summary:    #{vi[:project]}
-    WOK
-  end
-  def self.contents(vi,version)
-    <<-WOK
-Gem::Specification.new do |s|
-  s.name           = '#{vi[:project].downcase}'
-  s.version        = '#{vi[:version]}'
-  s.date           = '#{vi[:date]}'
-  s.summary        = '#{vi[:project]}'
-  s.description    = '#{Project_details.name} gem'
-  s.authors        = ["Ralph Amissah"]
-  s.email          = 'ralph.amissah@gmail.com'
-  s.files          = Dir['lib/#{Project_details.name.downcase}/#{version}/*.rb'] +
-                     Dir['data/#{Project_details.name.downcase}/#{version}/v/version.yml'] +
-                     Dir['data/#{Project_details.name.downcase}/image/*'] +
-                     Dir['bin/#{Project_details.name.downcase}gem'] +
-                     Dir['bin/#{Project_details.name.downcase}']
-  s.license        = 'GPL3'
-  s.executables << '#{Project_details.name.downcase}gem' << '#{Project_details.name.downcase}'
-end
-    WOK
-  end
-  def self.create(filename,gemspec)
-    fn="#{Dir.pwd}/#{filename}.gemspec"
-    if File.writable?("#{Dir.pwd}/.")
-      file_sisu_gemspec=File.new(fn,'w+')
-      file_sisu_gemspec << gemspec
-      file_sisu_gemspec.close
-    else
-      puts %{*WARN* is the file or directory writable? could not create #{filename}}
-    end
-  end
-  def self.build(fn)
-    system(%{ gem build #{fn}.gemspec })
-  end
-  def self.install(fn)
-    system(%{
-      sudo gem install --no-document --verbose #{fn}.gem
-    })
-  end
-  module Current
-    def self.filename_stable
-      "#{Project_details.name.downcase}-#{Version_info::Current.setting_stable[:version]}"
-    end
-    def self.filename_unstable
-      "#{Project_details.name.downcase}-#{Version_info::Current.setting_unstable[:version]}"
-    end
-    def self.info_stable
-      Gemspecs.info(Version_info::Current.setting_stable)
-    end
-    def self.info_unstable
-      Gemspecs.info(Version_info::Current.setting_unstable)
-    end
-    def self.current_stable
-      Gemspecs.contents(Version_info::Current.setting_stable,SiSU_version_dir_stable)
-    end
-    def self.current_unstable
-      Gemspecs.contents(Version_info::Current.setting_unstable,SiSU_version_dir_unstable)
-    end
-    def self.create_stable
-      Gemspecs.create(filename_stable,current_stable)
-      Gemspecs.create("#{Project_details.name.downcase}-stable",current_stable)
-    end
-    def self.create_unstable
-      Gemspecs.create(filename_unstable,current_unstable)
-      Gemspecs.create("#{Project_details.name.downcase}-unstable",current_unstable)
-    end
-    def self.build_stable
-      Gemspecs.build(filename_stable)
-    end
-    def self.build_unstable
-      Gemspecs.build(filename_unstable)
-    end
-    def self.install_stable
-      Gemspecs.install(filename_stable)
-    end
-    def self.install_unstable
-      Gemspecs.install(filename_unstable)
-    end
-  end
-  module Next
-    def self.filename_stable
-      "#{Project_details.name.downcase}-#{Version_info::Next.setting_stable[:version]}"
-    end
-    def self.filename_unstable
-      "#{Project_details.name.downcase}-#{Version_info::Next.setting_unstable[:version]}"
-    end
-    def self.setting_stable
-      Gemspecs.contents(Version_info::Next.setting_stable,SiSU_version_dir_stable)
-    end
-    def self.setting_unstable
-      Gemspecs.contents(Version_info::Next.setting_unstable,SiSU_version_dir_unstable)
-    end
-    def self.create_stable
-      Gemspecs.create(filename_stable,setting_stable)
-    end
-    def self.create_unstable
-      Gemspecs.create(filename_unstable,setting_unstable)
-    end
-    def self.build_stable
-      Gemspecs.build(filename_stable)
-    end
-    def self.build_unstable
-      Gemspecs.build(filename_unstable)
-    end
-    def self.install_stable
-      Gemspecs.install(filename_stable)
-    end
-    def self.install_unstable
-      Gemspecs.install(filename_unstable)
-    end
-  end
-end
-module Help
-  def self.project_help
-    puts <<WOK
-
-#{Project_details.name}
-  #{Project_details.rake_rant}
-  #{Project_details.platform_notice}
-
-Commands quick start list
-  #{Project_details.name} Rake/Rant Help: (Rakefile or Rantfile)
-    rake (rake -T or rant -T)                  # a task list, (generated by Rake or Rant) for more complete and up to date help
-
-  Quick start install and remove project #{Project_details.name}, as root:
-    rake setup                                  # install #{Project_details.name}
-    rake resetup                                # reinstall #{Project_details.name}
-    rake remove_package                         # clobber/remove #{Project_details.name}, all versions
-  alternatively to install as a gem:
-    rake gem_create_build_install               # create gemspec; build gem, &; install gem, for #{Project_details.name}
-
-  NOTE: these install options DO NOT setup #{Project_details.name} dependencies for:
-  LaTeX(XeTeX) pdf output; or
-  databases (postgresql or sqlite3) for #{Project_details.name} search
-  should you wish to produce outputs that depend on them
-  (on Debian for example this is the work of the debian installer)
-
-WOK
-  end
-  def self.tasks(make='rake')
-    begin
-      system("#{make} -T")
-    rescue
-      puts 'is either rake or rant installed?'
-    end
-  end
-end
-#% tasks
-desc "show rake/rant tasks for sisu install, and sisu gem (create spec, build &) install"
-  task :default => [:note_sources,:tasks,:note_installation] #[:default_notice,:setup_base]
-desc "Setup/Install #{Project_details.name}"
-  task :setup_project=> [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_data_,:setup_man_,:setup_vim_,:src_note]
-  task :project=> [:setup_project]
-desc "Setup/Install #{Project_details.name}"
-  task :setup=> [:setup_bin_, :setup_lib_,:setup_conf_,:setup_share_,:setup_data_] #, :help]
-desc "Setup/Install #{Project_details.name}: bin, lib and conf (no data)"
-  task :setup_base=> [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_man_,:setup_vim_,:note_sources]
-  task :base=> [:setup_base]
-desc "Setup/Install #{Project_details.name}: bin, lib, conf & data"
-  task :setup_with_data=> [:setup_base,:setup_data]
-desc "check package version"
-  task :sisuversion => [:sisu_version]
-  task :version => [:sisu_version]
-#desc "set package version"
-  task :sisuversionset => [:sisu_version_set,:changelog_headers]
-desc "check gemspec info"
-  task :gem_spec => [:gemspec_info]
-desc "create sisu v_stable gemspec"
-  task :gem_create_spec_stable => [:gemspecs_stable_create_default_version]
-  task :gem5cs => [:gem_create_spec_stable]
-  task :gem5createspecs => [:gemspecs_stable_create_default_version]
-desc "create sisu v_unstable gemspec"
-  task :gem_create_spec_unstable => [:gemspecs_unstable_create_default_version]
-  task :gem6cs => [:gem_create_spec_unstable]
-  task :gem6createspecs => [:gemspecs_unstable_create_default_version]
-desc "create gemspec"
-  task :gem_create_spec => [:gemspecs_create_default_version]
-  task :gemcs => [:gemspecs_create_default_version]
-  task :gemc => [:gemspecs_create_default_version]
-  task :gemspecscreate => [:gemspecs_create_default_version]
-#---
-desc "build gem"
-  task :gem_build => [:gem_build_]
-  task :gemb => [:gem_build]
-  task :gembuild => [:gem_build]
-desc "build sisu v_stable gem"
-  task :gem_build_stable => [:gem_stable_build]
-  task :gem5b => [:gem_build_stable]
-  task :gem5build => [:gem_build_stable]
-desc "build sisu v_unstable gem"
-  task :gem_build_unstable => [:gem_unstable_build]
-  task :gem6b => [:gem_build_unstable]
-  task :gem6build => [:gem_build_unstable]
-#---
-desc "create, build & install sisu v_stable gem"
-  task :gem_create_build_install_stable => [:gemspecs_stable_create_default_version,:gem_stable_build,:gem_stable_install]
-  task :gem5cbi => [:gem_create_build_install_stable]
-desc "create, build & install sisu v_unstable gem"
-  task :gem_create_build_install_unstable => [:gemspecs_unstable_create_default_version,:gem_unstable_build,:gem_unstable_install]
-  task :gem6cbi => [:gem_create_build_install_unstable]
-desc "create, build & install sisu v_stable & v_unstable gem"
-  task :gem_create_build_install => [:gemspecs_create_default_version,:gem_build_,:gem_install_]
-  task :gemcbi => [:gem_create_build_install]
-#---
-desc "install gem"
-  task :gem_install => [:gem_install_]
-  task :gemi => [:gem_install]
-  task :geminstall => [:gem_install]
-desc "build & install sisu v_stable gem"
-  task :gem_build_install_stable => [:gem_stable_build,:gem_install_]
-  task :gem5bi => [:gem_build_install_stable]
-desc "build & install sisu v_unstable gem"
-  task :gem_build_install_unstable => [:gem_unstable_build,:gem_install_]
-  task :gem6bi => [:gem_build_install_unstable]
-desc "build & install gem"
-  task :gem_build_install => [:gem_build,:gem_install_]
-  task :gembi => [:gem_build_install]
-#-- manually set next version
-#desc "create sisu v_stable gemspec, manually set next version"
-  task :gem5csn => [:gemspecs_stable_create_next_version]
-#desc "create sisu v_unstable gemspec, manually set next version"
-  task :gem6csn => [:gemspecs_unstable_create_next_version]
-#desc "create gemspec, manually set next version"
-  task :gemcsn => [:gemspecs_create_next_version]
-  task :gemcn => [:gemspecs_create_next_version]
-#desc "build gem, manually set next version"
-  task :gembn => [:gem_build_next_version]
-#desc "build sisu v_stable gem, manually set next version"
-  task :gem5bn => [:gem_stable_build_next_version]
-#desc "build sisu v_unstable gem, manually set next version"
-  task :gem6bn => [:gem_unstable_build_next_version]
-#desc "install gem, manually set next version"
-  task :gemin => [:gem_install_next_version]
-#desc "build & install sisu v_stable gem, manually set next version"
-  task :gem5bin => [:gem_stable_build_next_version,:gem_install_next_version]
-#desc "build & install sisu v_unstable gem, manually set next version"
-  task :gem6bin => [:gem_unstable_build_next_version,:gem_install_next_version]
-#desc "build & install gem, manually set next version"
-  task :gembin => [:gem_build_next_version,:gem_install_next_version]
-#desc "create, build & install sisu v_stable gem, manually set next version"
-  task :gem5cbin => [:gemspecs_stable_create_next_version,:gem_stable_build_next_version,:gem_stable_install_next_version]
-#desc "create, build & install sisu v_unstable gem, manually set next version"
-  task :gem6cbin => [:gemspecs_unstable_create_next_version,:gem_unstable_build_next_version,:gem_unstable_install_next_version]
-#desc "create, build & install sisu v_stable & v_unstable gem, manually set next version"
-  task :gemcbin => [:gemspecs_create_next_version,:gem_build_next_version,:gem_install_next_version]
-#---
-#desc "check changelog headers"
-  task :changelogheaders => [:changelog_headers]
-  task :dev => [:note_developer]
-  task :developer_note => [:note_developer]
-if File.directory?('bin')
-  desc "Setup #{Project_details.name} bin only, synonym :bin"
-    task :setup_bin => [:setup_bin_]
-    task :bin => [:setup_bin]
-end
-if File.directory?('lib')
-  desc "Setup #{Project_details.name} lib only, synonym :lib"
-    task :setup_lib => [:setup_lib_]
-    task :lib => [:setup_lib]
-end
-if File.directory?('conf')
-  desc "Setup #{Project_details.name} conf only, synonyms :conf & :etc"
-    task :setup_conf => [:setup_conf_]
-    task :conf => [:setup_conf]
-    task :setup_etc => [:setup_conf]
-    task :etc => [:setup_conf]
-end
-if File.directory?('data')
-  desc "Setup #{Project_details.name} data only, synonyms :data & :examples"
-    task :setup_data => [:setup_data_]
-    task :data => [:setup_data]
-    task :setup_examples => [:setup_data]
-    task :examples => [:setup_data]
-end
-if File.directory?('data/sisu')
-  #desc "Setup #{Project_details.name} shared data only (odf & shared images)"
-    task :setup_share => [:setup_share_]
-    task :share => [:setup_share]
-end
-if File.directory?('man')
-  desc "Setup #{Project_details.name} man pages only, synonyms :man"
-    task :setup_man => [:setup_man_]
-    task :man => [:setup_man]
-end
-if File.directory?('data/vim')
-  desc "Setup #{Project_details.name} vim config files only, synonyms :vim"
-    task :setup_vim => [:setup_vim_]
-    task :vim => [:setup_vim]
-end
-desc "Remove #{Project_details.name} (all versions)"
-  task :remove_package => [:remove_bin, :remove_lib, :remove_conf]
-if File.directory?('bin')
-  #desc "Remove #{Project_details.name} bin only"
-    task :remove_bin => [:remove_bin]
-end
-if File.directory?('lib')
-  #desc "Remove #{Project_details.name} lib only"
-    task :remove_lib => [:remove_lib]
-end
-if File.directory?('conf')
-  #desc "Remove #{Project_details.name} conf only"
-    task :remove_conf => [:remove_conf]
-end
-desc "Re-setup #{Project_details.name}, synonym :reinstall"
-  task :resetup => [:remove, :setup]
-  task :reinstall => [:remove, :setup]
-#desc "Re-setup #{Project_details.name}: bin, lib, conf (ignore data), synonym :reinstall"
-  task :resetup_base => [:remove, :setup_base_]
-  task :reinstall_base => [:remove, :setup_base_]
-if File.directory?('bin')
-  #desc "Re-setup #{Project_details.name} bin, synonym :reinstall"
-    task :resetup_bin => [:remove_bin, :setup_bin_]
-    task :reinstall_bin => [:remove_bin, :setup_bin_]
-end
-if File.directory?('lib')
-  #desc "Re-setup #{Project_details.name} lib, synonym :reinstall_lib"
-    task :resetup_lib => [:remove_lib, :setup_lib_]
-    task :reinstall_lib => [:remove_lib, :setup_lib_]
-end
-if File.directory?('conf')
-  #desc "Re-setup #{Project_details.name} conf, synonyms :reinstall_conf & :resetup_etc"
-    task :resetup_conf => [:remove_conf, :setup_conf_]
-    task :reinstall_conf => [:remove_conf, :setup_conf_]
-    task :resetup_etc => [:remove_conf, :setup_conf_]
-    task :reinstall_etc => [:remove_conf, :setup_conf_]
-end
-if File.directory?('data/sisu')
-  #desc "Re-setup #{Project_details.name} shared data, (odf & images)"
-    task :resetup_share => [:remove_share, :setup_share_]
-    task :reinstall_share => [:remove_share, :setup_share_]
-end
-if File.directory?('man')
-  #desc "Re-setup #{Project_details.name} man, synonym :reinstall_man"
-    task :resetup_man => [:remove_man, :setup_man_]
-    task :reinstall_man => [:remove_man, :setup_man_]
-end
-desc 'Setup Note'
-  task :setup_note => [:help]
-desc "System information used by #{Project_details.name}"
-  task :system => [:system_info,:project_help,:note_sources]
-desc "show all system info available - parameters found"
-  task :system_param => [:system_param_]
-desc "Gem environment information used ruby gems for #{Project_details.name}"
-  task :gem_env => [:gem_env_]
-desc 'Help'
-  task :help => [:project_help,:system_info,:tasks]
-#desc "Setup/Install #{Project_details.name} (uses filelist)"
-  task :install => [:default_notice,:project]
-  task :install_bin => [:setup_bin_]
-#desc "search for a version tag e.g. 'tag[5.6.0]'"
-  task :tag, [:tag] do |t, args|
-    args.with_defaults(:tag => Version_info::Next.setting_stable[:version])
-    puts "Check for Version Tag: #{args.tag}"
-    print "Version Tag:           "
-    GitExtractTaggedVersionBuild::git_tagged_versions(args)
-  end
-#desc "build and install a specific git tagged version of sisu, e.g. 'build[5.6.0]'"
-  task :build, [:tag, :branch] => :done do |t, args|
-    args.with_defaults(:tag => '5.6.0', :branch => 'stable')
-    puts "Version Tag: #{args.tag}"
-    puts "Branch: #{args.branch}"
-    GitExtractTaggedVersionBuild::git_tagged_versions(args.tag)
-    ans= <<-WOK
-  Gem Install SiSU Version
-    WOK
-    resp=Utils.answer?(ans)
-    exit unless resp
-    GitExtractTaggedVersionBuild::git_checkout_and_build_version(args)
-  end
-  task :done do
-    puts 'done'
-  end
-                                                           #%% setup/install tasks
-task :rant_independence do                                 #notice
-  resp=''
-  while resp.length < 4
-    resp='sisu-install'                                     #default name install
-    print %{#{Project_details.rake_rant}
-  Create a rant dependency independent file
-  provide filename default name is "install"
-    [Warning, will overwrite file of name provided
-      provide name or "quit" to exit]: }
-    exit if resp =~/^(?:n|quit|exit)$/
-  end
-  remove='y' #remove='n'
- if remove =~/y/
-   system("rant-import --force --auto #{resp};
-     chmod 755 #{resp}
-   ")
- else #puts "#{resp} not replaced"
- end
-end
-
-task :default_notice do                                    #notice
-  Utils.default_notice
-end
-task :default2 do                                     #secondary
-  setup_find_cp_r('bin',Project_details.dir.bin) if File.directory?('bin')
-  setup_find_cp_r('lib',Project_details.dir.lib) if File.directory?('lib')
-  setup_find_cp_r('conf',Project_details.dir.conf) if File.directory?('conf')
-  setup_find_cp_r('data/sisu',Project_details.dir.share) if File.directory?('data/sisu') #
-  setup_find_cp_r('data',Project_details.dir.data) if File.directory?('data')
-  setup_find_cp_r('data/vim',"#{Project_details.dir.data}/vim") if File.directory?('data/vim')
-  setup_find_cp_r('man',Project_details.dir.man) if File.directory?('man')
-end
-task :setup_bin_ do
-  exclude_files=['sisugem']
-  Install.setup_find_create('bin',Project_details.dir.bin,exclude_files) if File.directory?('bin')
-end
-task :setup_lib_ do
-  Install.setup_find_create('lib',Project_details.dir.lib) if File.directory?('lib')
-end
-task :setup_conf_ do
-  Install.setup_find_create('conf',Project_details.dir.conf) if File.directory?('conf')
-end
-task :setup_share_ do
-  Install.setup_find_create('data/sisu',Project_details.dir.share) if File.directory?('data/sisu')
-end
-task :setup_data_ do
-  Install.setup_find_create('data',Project_details.dir.data) if File.directory?('data')
-end
-task :setup_man_ do
-  Install.setup_find_create('man',Project_details.dir.man) if File.directory?('man')
-  Install.setup_find_create('man.deb/man',Project_details.dir.man) if File.directory?('man.deb/man')
-end
-task :setup_vim_ do
-  Install.setup_find_create('data/vim',Project_details.dir.vim) if File.directory?('data/vim')
-end
-task :gemspec_info do
-  Gemspecs.info_stable
-  Gemspecs.info_unstable
-end
-task :gemspecs_stable_create_default_version do
-  Gemspecs::Current.create_stable
-end
-task :gemspecs_unstable_create_default_version do
-  Gemspecs::Current.create_unstable
-end
-task :gemspecs_create_default_version do
-  Gemspecs::Current.create_stable
-  Gemspecs::Current.create_unstable
-end
-task :gemspecs_stable_create_next_version do
-  Gemspecs::Next.create_stable
-end
-task :gemspecs_unstable_create_next_version do
-  Gemspecs::Next.create_unstable
-end
-task :gemspecs_create_next_version do
-  Gemspecs::Next.create_stable
-  Gemspecs::Next.create_unstable
-end
-task :gem_stable_build do
-  Gemspecs::Current.build_stable
-end
-task :gem_unstable_build do
-  Gemspecs::Current.build_unstable
-end
-task :gem_build_ do
-  Gemspecs::Current.build_stable
-  Gemspecs::Current.build_unstable
-end
-task :gem_stable_build_next_version do
-  Gemspecs::Next.build_stable
-end
-task :gem_unstable_build_next_version do
-  Gemspecs::Next.build_unstable
-end
-task :gem_build_next_version do
-  Gemspecs::Next.build_stable
-  Gemspecs::Next.build_unstable
-end
-task :gem_stable_install do
-  Gemspecs::Current.install_stable
-end
-task :gem_unstable_install do
-  Gemspecs::Current.install_unstable
-end
-task :gem_install_ do
-  Gemspecs::Current.install_stable
-  Gemspecs::Current.install_unstable
-end
-task :gem_stable_install_next_version do
-  Gemspecs::Next.install_stable
-end
-task :gem_unstable_install_next_version do
-  Gemspecs::Next.install_unstable
-end
-task :gem_install_next_version do
-  Gemspecs::Next.install_stable
-  Gemspecs::Next.install_unstable
-end
-task :changelog_headers do
-  puts '---'
-  puts Version_info::Update.changelog_header_stable
-  puts '---'
-  puts Version_info::Update.changelog_header_unstable
-end
-task :sisu_version do
-  puts Version_info::Next.setting_stable
-  puts Version_info::Next.setting_unstable
-  puts '---'
-  puts Version_info::Current.setting_stable[:project]
-  puts Version_info::Current.setting_stable[:version]
-  puts Version_info::Current.setting_stable[:date]
-  puts Version_info::Current.setting_stable[:date_stamp]
-  puts '---'
-  puts Version_info::Current.setting_unstable[:project]
-  puts Version_info::Current.setting_unstable[:version]
-  puts Version_info::Current.setting_unstable[:date]
-  puts Version_info::Current.setting_unstable[:date_stamp]
-end
-task :sisu_version_set do
-  Version_info::Update.update_stable
-  Version_info::Update.update_unstable
-end
-                                                           #%% post install
-                                                           #%% clobber/remove tasks
-task :remove_bin do
-  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
-end
-task :remove_lib do
-  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}")
-end
-task :remove_conf do
-  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
-end
-task :remove_man do
-  rm_r "#{Project_details.dir.man}/**/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.man}/man1/#{Project_details.dir.proj}")
-end
-task :remove_version do
-  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
-  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}")
-  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj} if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
-end
-task :remove_package do
-  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
-  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}")
-  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
-end
-task :note_sources do
-  puts <<-WOK
-
-  SiSU project:
-      <http://sisudoc.org>
-      <http://www.jus.uio.no/sisu>
-  sisu source code is available at:
-      <http://sources.sisudoc.org>
-      <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
-  sisu markup samples are provided/packaged separately as sisu-markup-samples:
-      <http://sources.sisudoc.org/gitweb/?p=doc/sisu-markup-samples.git;a=summary>
-  WOK
-end
-task :note_installation do
-  puts <<-WOK
-  alternative 0: distribution install, rather than this Rakefile
-    a distribution install pulls in the many dependencies used by sisu after
-    initial processing to generate and store output, significant amongst these are
-    XeTeX & databases (sqlite3 and postgresql)
-
-  alternative 1: gem install, you need to:
-    create the gemspec; build the gem (from the gemspec); install the gem
-  which can be done with the single command:
-    rake gem_create_build_install   # (to build and install sisu v5 & sisu v6, alias gemcbi)
-  separate gems are made/installed for sisu v5 & sisu v6 contained in source:
-    rake gem_create_build_install_stable   # (to build and install sisu v5, alias gem5cbi)
-    rake gem_create_build_install_unstable   # (to build and install sisu v6, alias gem6cbi)
-  for individual steps (create, build, install) see rake options, rake -T
-  to specify sisu version for sisu installed via gem
-    sisu _#{Version_info::Current.setting_stable[:version]}_ --version
-    sisu _#{Version_info::Current.setting_unstable[:version]}_ --version
-  to uninstall sisu installed via gem
-    sudo gem uninstall --verbose sisu
-  WOK
-end
-task :note_developer do
-  puts <<-WOK
-
-  changelogheaders
-
-  sisuversion
-  sisuversionset
-
-  gemcsn gem5csn gem6csn
-  gembn gem5bn gem6bn
-  gemin gem5in gem6in
-  gembin gem5bin gem6bin
-  gemcbin gem5cbin gem6cbin
-  WOK
-end
-                                                           #%% help & system info
-task :system_info do
-  Project_details.system_info
-end
-task :system_param_ do
-  Project_details.env.each {|c| puts c.inspect }
-end
-task :gem_env_ do
-  Project_details.gem_env
-end
-task :project_help do
-  Help.project_help
-end
-task :tasks do
-  Help.tasks
-end
diff --git a/setup/rbuild b/setup/rbuild
new file mode 100644 (file)
index 0000000..315f3a3
--- /dev/null
@@ -0,0 +1,646 @@
+#!/usr/bin/env ruby
+=begin
+ Common Rakefile, Rantfile installer for SiSU
+   softlink Rakefile and Rantfile to this file
+
+ * Homepage: <http://www.jus.uio.no/sisu/SiSU>
+             <http://search.sisudoc.org>
+ * Download: <http://www.jus.uio.no/sisu/download>
+
+ Copyright (C) 2007 Ralph Amissah
+
+ * License: LGPL - GNU Lesser General Public License
+     [same license as Rant provided within the Rant package]
+
+ * Ralph Amissah <ralph@amissah.com>
+   Ralph Amissah <ralph.amissah@gmail.com>
+
+ Rake is a Ruby build program by Jim Weirich
+ * Rake may be downloaded and installed from:
+     <http://rake.rubyforge.org/>
+
+ Rant is a Ruby build program by Stefan Lang
+ * Rant may be downloaded and installed from:
+     <http://make.rubyforge.org/>
+
+ Notes on use:
+   [if rake is preferred and installed]
+     rake -T
+   [if rant is preferred and installed]
+     rant -T
+
+ SiSU can also be Setup/Installation using:
+ * Minero Aoki's setup.rb, provided along with SiSU, or
+
+=end
+#%% produce a makefile suitable for the target platform
+#require 'mkmf'
+#create_makefile("sisu")
+#% manual settings, edit/update as required (note current default settings are obtained from sisu version yml file)
+require 'find'
+require 'fileutils'
+#require 'ftools'
+require 'rbconfig.rb'
+require 'yaml'
+include FileUtils
+require_relative 'sisu_version'                # sisu_version.rb
+  include SiSUversion
+require_relative 'rbuild_libs'                 # rbuild_libs.rb
+  include Project_details
+  include Utils
+  include Version_info
+  include Gemspecs
+  include GitExtractTaggedVersionBuild
+require_relative 'rbuild_help'                 # rbuild_help.rb
+  include Help
+#% tasks
+desc "show rake/rant tasks for sisu install, and sisu gem (create spec, build &) install"
+task :default =>
+  [:note_sources,:tasks,:note_installation] #[:default_notice,:setup_base]
+desc "Setup/Install #{Project_details.name}"
+task :setup_project=>
+  [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_data_,:setup_man_,:setup_vim_,:src_note]
+task :project=> \
+  [:setup_project]
+desc "Setup/Install #{Project_details.name}"
+task :setup=>
+  [:setup_bin_, :setup_lib_,:setup_conf_,:setup_share_,:setup_data_] #, :help]
+desc "Setup/Install #{Project_details.name}: bin, lib and conf (no data)"
+task :setup_base=>
+  [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_man_,:setup_vim_,:note_sources]
+task :base=>
+  [:setup_base]
+desc "Setup/Install #{Project_details.name}: bin, lib, conf & data"
+task :setup_with_data=>
+  [:setup_base,:setup_data]
+desc "check package version"
+task :sisuversion =>
+  [:sisu_version]
+task :version =>
+  [:sisu_version]
+#desc "set package version"
+task :sisuversionset =>
+  [:sisu_version_set,:changelog_headers]
+desc "check gemspec info"
+task :gem_spec =>
+  [:gemspec_info]
+desc "create sisu v_stable gemspec"
+task :gem_create_spec_stable =>
+  [:gemspecs_stable_create_default_version]
+task :gem5cs =>
+  [:gem_create_spec_stable]
+task :gem5createspecs =>
+  [:gemspecs_stable_create_default_version]
+desc "create sisu v_unstable gemspec"
+task :gem_create_spec_unstable =>
+  [:gemspecs_unstable_create_default_version]
+task :gem6cs =>
+  [:gem_create_spec_unstable]
+task :gem6createspecs =>
+  [:gemspecs_unstable_create_default_version]
+desc "create gemspec"
+task :gem_create_spec =>
+  [:gemspecs_create_default_version]
+task :gemcs =>
+  [:gemspecs_create_default_version]
+task :gemc =>
+  [:gemspecs_create_default_version]
+task :gemspecscreate =>
+  [:gemspecs_create_default_version]
+#---
+desc "build gem"
+task :gem_build =>
+  [:gem_build_]
+task :gemb =>
+  [:gem_build]
+task :gembuild =>
+  [:gem_build]
+desc "build sisu v_stable gem"
+task :gem_build_stable =>
+  [:gem_stable_build]
+task :gem5b =>
+  [:gem_build_stable]
+task :gem5build =>
+  [:gem_build_stable]
+desc "build sisu v_unstable gem"
+task :gem_build_unstable =>
+  [:gem_unstable_build]
+task :gem6b =>
+  [:gem_build_unstable]
+task :gem6build =>
+  [:gem_build_unstable]
+#---
+desc "create, build & install sisu v_stable gem"
+  task :gem_create_build_install_stable =>
+    [:gemspecs_stable_create_default_version,:gem_stable_build,:gem_stable_install]
+task :gem5cbi =>
+  [:gem_create_build_install_stable]
+desc "create, build & install sisu v_unstable gem"
+task :gem_create_build_install_unstable =>
+  [:gemspecs_unstable_create_default_version,:gem_unstable_build,:gem_unstable_install]
+task :gem6cbi =>
+  [:gem_create_build_install_unstable]
+desc "create, build & install sisu v_stable & v_unstable gem"
+task :gem_create_build_install =>
+  [:gemspecs_create_default_version,:gem_build_,:gem_install_]
+task :gemcbi =>
+  [:gem_create_build_install]
+#---
+desc "install gem"
+task :gem_install =>
+  [:gem_install_]
+task :gemi =>
+  [:gem_install]
+task :geminstall =>
+  [:gem_install]
+desc "build & install sisu v_stable gem"
+task :gem_build_install_stable =>
+  [:gem_stable_build,:gem_install_]
+task :gem5bi =>
+  [:gem_build_install_stable]
+desc "build & install sisu v_unstable gem"
+task :gem_build_install_unstable =>
+  [:gem_unstable_build,:gem_install_]
+task :gem6bi =>
+  [:gem_build_install_unstable]
+desc "build & install gem"
+task :gem_build_install =>
+  [:gem_build,:gem_install_]
+task :gembi =>
+  [:gem_build_install]
+#-- manually set next version
+#desc "create sisu v_stable gemspec, manually set next version"
+task :gem5csn =>
+  [:gemspecs_stable_create_next_version]
+#desc "create sisu v_unstable gemspec, manually set next version"
+task :gem6csn =>
+  [:gemspecs_unstable_create_next_version]
+#desc "create gemspec, manually set next version"
+task :gemcsn =>
+  [:gemspecs_create_next_version]
+task :gemcn =>
+  [:gemspecs_create_next_version]
+#desc "build gem, manually set next version"
+task :gembn =>
+  [:gem_build_next_version]
+#desc "build sisu v_stable gem, manually set next version"
+task :gem5bn =>
+  [:gem_stable_build_next_version]
+#desc "build sisu v_unstable gem, manually set next version"
+task :gem6bn =>
+  [:gem_unstable_build_next_version]
+#desc "install gem, manually set next version"
+task :gemin =>
+  [:gem_install_next_version]
+#desc "build & install sisu v_stable gem, manually set next version"
+task :gem5bin =>
+  [:gem_stable_build_next_version,:gem_install_next_version]
+#desc "build & install sisu v_unstable gem, manually set next version"
+task :gem6bin =>
+  [:gem_unstable_build_next_version,:gem_install_next_version]
+#desc "build & install gem, manually set next version"
+task :gembin =>
+  [:gem_build_next_version,:gem_install_next_version]
+#desc "create, build & install sisu v_stable gem, manually set next version"
+task :gem5cbin =>
+  [:gemspecs_stable_create_next_version,:gem_stable_build_next_version,:gem_stable_install_next_version]
+#desc "create, build & install sisu v_unstable gem, manually set next version"
+task :gem6cbin =>
+  [:gemspecs_unstable_create_next_version,:gem_unstable_build_next_version,:gem_unstable_install_next_version]
+#desc "create, build & install sisu v_stable & v_unstable gem, manually set next version"
+task :gemcbin =>
+  [:gemspecs_create_next_version,:gem_build_next_version,:gem_install_next_version]
+#---
+#desc "check changelog headers"
+task :changelogheaders =>
+  [:changelog_headers]
+task :dev =>
+  [:note_developer]
+task :developer_note =>
+  [:note_developer]
+if File.directory?('bin')
+  desc "Setup #{Project_details.name} bin only, synonym :bin"
+  task :setup_bin =>
+    [:setup_bin_]
+  task :bin =>
+    [:setup_bin]
+end
+if File.directory?('lib')
+  desc "Setup #{Project_details.name} lib only, synonym :lib"
+  task :setup_lib =>
+    [:setup_lib_]
+  task :lib =>
+    [:setup_lib]
+end
+if File.directory?('conf')
+  desc "Setup #{Project_details.name} conf only, synonyms :conf & :etc"
+  task :setup_conf =>
+    [:setup_conf_]
+  task :conf =>
+    [:setup_conf]
+  task :setup_etc =>
+    [:setup_conf]
+  task :etc =>
+    [:setup_conf]
+end
+if File.directory?('data')
+  desc "Setup #{Project_details.name} data only, synonyms :data & :examples"
+  task :setup_data =>
+    [:setup_data_]
+  task :data =>
+    [:setup_data]
+  task :setup_examples =>
+    [:setup_data]
+  task :examples =>
+    [:setup_data]
+end
+if File.directory?('data/sisu')
+  #desc "Setup #{Project_details.name} shared data only (odf & shared images)"
+  task :setup_share =>
+    [:setup_share_]
+  task :share =>
+    [:setup_share]
+end
+if File.directory?('man')
+  desc "Setup #{Project_details.name} man pages only, synonyms :man"
+  task :setup_man =>
+    [:setup_man_]
+  task :man =>
+    [:setup_man]
+end
+if File.directory?('data/vim')
+  desc "Setup #{Project_details.name} vim config files only, synonyms :vim"
+  task :setup_vim =>
+    [:setup_vim_]
+  task :vim =>
+    [:setup_vim]
+end
+desc "Remove #{Project_details.name} (all versions)"
+task :remove_package =>
+  [:remove_bin, :remove_lib, :remove_conf]
+if File.directory?('bin')
+  #desc "Remove #{Project_details.name} bin only"
+  task :remove_bin =>
+    [:remove_bin]
+end
+if File.directory?('lib')
+  #desc "Remove #{Project_details.name} lib only"
+  task :remove_lib =>
+    [:remove_lib]
+end
+if File.directory?('conf')
+  #desc "Remove #{Project_details.name} conf only"
+  task :remove_conf =>
+    [:remove_conf]
+end
+desc "Re-setup #{Project_details.name}, synonym :reinstall"
+task :resetup =>
+  [:remove, :setup]
+task :reinstall =>
+  [:remove, :setup]
+#desc "Re-setup #{Project_details.name}: bin, lib, conf (ignore data), synonym :reinstall"
+task :resetup_base =>
+  [:remove, :setup_base_]
+task :reinstall_base =>
+  [:remove, :setup_base_]
+if File.directory?('bin')
+  #desc "Re-setup #{Project_details.name} bin, synonym :reinstall"
+  task :resetup_bin =>
+    [:remove_bin, :setup_bin_]
+  task :reinstall_bin =>
+    [:remove_bin, :setup_bin_]
+end
+if File.directory?('lib')
+  #desc "Re-setup #{Project_details.name} lib, synonym :reinstall_lib"
+  task :resetup_lib =>
+    [:remove_lib, :setup_lib_]
+  task :reinstall_lib =>
+    [:remove_lib, :setup_lib_]
+end
+if File.directory?('conf')
+  #desc "Re-setup #{Project_details.name} conf, synonyms :reinstall_conf & :resetup_etc"
+  task :resetup_conf =>
+    [:remove_conf, :setup_conf_]
+  task :reinstall_conf =>
+    [:remove_conf, :setup_conf_]
+  task :resetup_etc =>
+    [:remove_conf, :setup_conf_]
+  task :reinstall_etc =>
+    [:remove_conf, :setup_conf_]
+end
+if File.directory?('data/sisu')
+  #desc "Re-setup #{Project_details.name} shared data, (odf & images)"
+  task :resetup_share =>
+    [:remove_share, :setup_share_]
+  task :reinstall_share =>
+    [:remove_share, :setup_share_]
+end
+if File.directory?('man')
+  #desc "Re-setup #{Project_details.name} man, synonym :reinstall_man"
+  task :resetup_man =>
+    [:remove_man, :setup_man_]
+  task :reinstall_man =>
+    [:remove_man, :setup_man_]
+end
+desc 'Setup Note'
+task :setup_note =>
+  [:help]
+desc "System information used by #{Project_details.name}"
+task :system =>
+  [:system_info,:project_help,:note_sources]
+desc "show all system info available - parameters found"
+task :system_param =>
+  [:system_param_]
+desc "Gem environment information used ruby gems for #{Project_details.name}"
+task :gem_env =>
+  [:gem_env_]
+desc 'Help'
+task :help =>
+  [:project_help,:system_info,:tasks]
+#desc "Setup/Install #{Project_details.name} (uses filelist)"
+task :install =>
+  [:default_notice,:project]
+task :install_bin =>
+  [:setup_bin_]
+#desc "search for a version tag e.g. 'tag[5.6.0]'"
+task :tag, [:tag] do |t, args|
+  args.with_defaults(:tag => Version_info::Next.setting_stable[:version])
+  puts "Check for Version Tag: #{args.tag}"
+  print "Version Tag:           "
+  GitExtractTaggedVersionBuild::git_tagged_versions(args)
+end
+#desc "build and install a specific git tagged version of sisu, e.g. 'build[5.6.0]'"
+task :build, [:tag, :branch] => :done do |t, args|
+  args.with_defaults(:tag => '5.6.0', :branch => 'stable')
+  puts "Version Tag: #{args.tag}"
+  puts "Branch: #{args.branch}"
+  GitExtractTaggedVersionBuild::git_tagged_versions(args.tag)
+  ans= <<-WOK
+Gem Install SiSU Version
+  WOK
+  resp=Utils.answer?(ans)
+  exit unless resp
+  GitExtractTaggedVersionBuild::git_checkout_and_build_version(args)
+end
+task :done do
+  puts 'done'
+end
+                                                           #%% setup/install tasks
+task :rant_independence do                                 #notice
+  resp=''
+  while resp.length < 4
+    resp='sisu-install'                                     #default name install
+    print %{#{Project_details.rake_rant}
+  Create a rant dependency independent file
+  provide filename default name is "install"
+    [Warning, will overwrite file of name provided
+      provide name or "quit" to exit]: }
+    exit if resp =~/^(?:n|quit|exit)$/
+  end
+  remove='y' #remove='n'
+ if remove =~/y/
+   system("rant-import --force --auto #{resp};
+     chmod 755 #{resp}
+   ")
+ else #puts "#{resp} not replaced"
+ end
+end
+
+task :default_notice do                                    #notice
+  Utils.default_notice
+end
+task :default2 do                                     #secondary
+  setup_find_cp_r('bin',Project_details.dir.bin) \
+    if File.directory?('bin')
+  setup_find_cp_r('lib',Project_details.dir.lib) \
+    if File.directory?('lib')
+  setup_find_cp_r('conf',Project_details.dir.conf) \
+    if File.directory?('conf')
+  setup_find_cp_r('data/sisu',Project_details.dir.share) \
+    if File.directory?('data/sisu') #
+  setup_find_cp_r('data',Project_details.dir.data) \
+    if File.directory?('data')
+  setup_find_cp_r('data/vim',"#{Project_details.dir.data}/vim") \
+    if File.directory?('data/vim')
+  setup_find_cp_r('man',Project_details.dir.man) \
+    if File.directory?('man')
+end
+task :setup_bin_ do
+  exclude_files=['sisugem']
+  Install.setup_find_create('bin',Project_details.dir.bin,exclude_files) \
+    if File.directory?('bin')
+end
+task :setup_lib_ do
+  Install.setup_find_create('lib',Project_details.dir.lib) \
+    if File.directory?('lib')
+end
+task :setup_conf_ do
+  Install.setup_find_create('conf',Project_details.dir.conf) \
+    if File.directory?('conf')
+end
+task :setup_share_ do
+  Install.setup_find_create('data/sisu',Project_details.dir.share) \
+    if File.directory?('data/sisu')
+end
+task :setup_data_ do
+  Install.setup_find_create('data',Project_details.dir.data) \
+    if File.directory?('data')
+end
+task :setup_man_ do
+  Install.setup_find_create('man',Project_details.dir.man) \
+    if File.directory?('man')
+  Install.setup_find_create('man.deb/man',Project_details.dir.man) \
+    if File.directory?('man.deb/man')
+end
+task :setup_vim_ do
+  Install.setup_find_create('data/vim',Project_details.dir.vim) \
+    if File.directory?('data/vim')
+end
+task :gemspec_info do
+  Gemspecs.info_stable
+  Gemspecs.info_unstable
+end
+task :gemspecs_stable_create_default_version do
+  Gemspecs::Current.create_stable
+end
+task :gemspecs_unstable_create_default_version do
+  Gemspecs::Current.create_unstable
+end
+task :gemspecs_create_default_version do
+  Gemspecs::Current.create_stable
+  Gemspecs::Current.create_unstable
+end
+task :gemspecs_stable_create_next_version do
+  Gemspecs::Next.create_stable
+end
+task :gemspecs_unstable_create_next_version do
+  Gemspecs::Next.create_unstable
+end
+task :gemspecs_create_next_version do
+  Gemspecs::Next.create_stable
+  Gemspecs::Next.create_unstable
+end
+task :gem_stable_build do
+  Gemspecs::Current.build_stable
+end
+task :gem_unstable_build do
+  Gemspecs::Current.build_unstable
+end
+task :gem_build_ do
+  Gemspecs::Current.build_stable
+  Gemspecs::Current.build_unstable
+end
+task :gem_stable_build_next_version do
+  Gemspecs::Next.build_stable
+end
+task :gem_unstable_build_next_version do
+  Gemspecs::Next.build_unstable
+end
+task :gem_build_next_version do
+  Gemspecs::Next.build_stable
+  Gemspecs::Next.build_unstable
+end
+task :gem_stable_install do
+  Gemspecs::Current.install_stable
+end
+task :gem_unstable_install do
+  Gemspecs::Current.install_unstable
+end
+task :gem_install_ do
+  Gemspecs::Current.install_stable
+  Gemspecs::Current.install_unstable
+end
+task :gem_stable_install_next_version do
+  Gemspecs::Next.install_stable
+end
+task :gem_unstable_install_next_version do
+  Gemspecs::Next.install_unstable
+end
+task :gem_install_next_version do
+  Gemspecs::Next.install_stable
+  Gemspecs::Next.install_unstable
+end
+task :changelog_headers do
+  puts '---'
+  puts Version_info::Update.changelog_header_stable
+  puts '---'
+  puts Version_info::Update.changelog_header_unstable
+end
+task :sisu_version do
+  puts Version_info::Next.setting_stable
+  puts Version_info::Next.setting_unstable
+  puts '---'
+  puts Version_info::Current.setting_stable[:project]
+  puts Version_info::Current.setting_stable[:version]
+  puts Version_info::Current.setting_stable[:date]
+  puts Version_info::Current.setting_stable[:date_stamp]
+  puts '---'
+  puts Version_info::Current.setting_unstable[:project]
+  puts Version_info::Current.setting_unstable[:version]
+  puts Version_info::Current.setting_unstable[:date]
+  puts Version_info::Current.setting_unstable[:date_stamp]
+end
+task :sisu_version_set do
+  Version_info::Update.update_stable
+  Version_info::Update.update_unstable
+end
+                                                           #%% post install
+                                                           #%% clobber/remove tasks
+task :remove_bin do
+  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" \
+    if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
+end
+task :remove_lib do
+  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" \
+    if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}")
+end
+task :remove_conf do
+  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" \
+    if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
+end
+task :remove_man do
+  rm_r "#{Project_details.dir.man}/**/#{Project_details.dir.proj}" \
+    if FileTest.directory?("#{Project_details.dir.man}/man1/#{Project_details.dir.proj}")
+end
+task :remove_version do
+  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" \
+    if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
+  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}" \
+    if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}")
+  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj} \
+    if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
+end
+task :remove_package do
+  rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" \
+    if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}")
+  rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" \
+    if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}")
+  rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" \
+    if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}")
+end
+task :note_sources do
+  puts <<-WOK
+
+  SiSU project:
+      <http://sisudoc.org>
+      <http://www.jus.uio.no/sisu>
+  sisu source code is available at:
+      <http://sources.sisudoc.org>
+      <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+  sisu markup samples are provided/packaged separately as sisu-markup-samples:
+      <http://sources.sisudoc.org/gitweb/?p=doc/sisu-markup-samples.git;a=summary>
+  WOK
+end
+task :note_installation do
+  puts <<-WOK
+  alternative 0: distribution install, rather than this Rakefile
+    a distribution install pulls in the many dependencies used by sisu after
+    initial processing to generate and store output, significant amongst these are
+    XeTeX & databases (sqlite3 and postgresql)
+
+  alternative 1: gem install, you need to:
+    create the gemspec; build the gem (from the gemspec); install the gem
+  which can be done with the single command:
+    rake gem_create_build_install   # (to build and install sisu v5 & sisu v6, alias gemcbi)
+  separate gems are made/installed for sisu v5 & sisu v6 contained in source:
+    rake gem_create_build_install_stable   # (to build and install sisu v5, alias gem5cbi)
+    rake gem_create_build_install_unstable   # (to build and install sisu v6, alias gem6cbi)
+  for individual steps (create, build, install) see rake options, rake -T
+  to specify sisu version for sisu installed via gem
+    sisu _#{Version_info::Current.setting_stable[:version]}_ --version
+    sisu _#{Version_info::Current.setting_unstable[:version]}_ --version
+  to uninstall sisu installed via gem
+    sudo gem uninstall --verbose sisu
+  WOK
+end
+task :note_developer do
+  puts <<-WOK
+
+  changelogheaders
+
+  sisuversion
+  sisuversionset
+
+  gemcsn gem5csn gem6csn
+  gembn gem5bn gem6bn
+  gemin gem5in gem6in
+  gembin gem5bin gem6bin
+  gemcbin gem5cbin gem6cbin
+  WOK
+end
+                                                           #%% help & system info
+task :system_info do
+  Project_details.system_info
+end
+task :system_param_ do
+  Project_details.env.each {|c| puts c.inspect }
+end
+task :gem_env_ do
+  Project_details.gem_env
+end
+task :project_help do
+  Help.project_help
+end
+task :tasks do
+  Help.tasks
+end
diff --git a/setup/rbuild_help.rb b/setup/rbuild_help.rb
new file mode 100644 (file)
index 0000000..fc56c2f
--- /dev/null
@@ -0,0 +1,36 @@
+module Help
+  def self.project_help
+    puts <<WOK
+
+#{Project_details.name}
+  #{Project_details.rake_rant}
+  #{Project_details.platform_notice}
+
+Commands quick start list
+  #{Project_details.name} Rake/Rant Help: (Rakefile or Rantfile)
+    rake (rake -T or rant -T)                  # a task list, (generated by Rake or Rant) for more complete and up to date help
+
+  Quick start install and remove project #{Project_details.name}, as root:
+    rake setup                                  # install #{Project_details.name}
+    rake resetup                                # reinstall #{Project_details.name}
+    rake remove_package                         # clobber/remove #{Project_details.name}, all versions
+  alternatively to install as a gem:
+    rake gem_create_build_install               # create gemspec; build gem, &; install gem, for #{Project_details.name}
+
+  NOTE: these install options DO NOT setup #{Project_details.name} dependencies for:
+  LaTeX(XeTeX) pdf output; or
+  databases (postgresql or sqlite3) for #{Project_details.name} search
+  should you wish to produce outputs that depend on them
+  (on Debian for example this is the work of the debian installer)
+
+WOK
+  end
+  def self.tasks(make='rake')
+    begin
+      system("#{make} -T")
+    rescue
+      puts 'is either rake or rant installed?'
+    end
+  end
+end
+
diff --git a/setup/rbuild_libs.rb b/setup/rbuild_libs.rb
new file mode 100644 (file)
index 0000000..5f4b8b0
--- /dev/null
@@ -0,0 +1,518 @@
+module Project_details
+  require_relative 'sisu_version'
+  include SiSUversion
+  def self.name
+    'SiSU'
+  end
+  def self.thor
+    "ruby-thor files for the installation/setup of #{name}"
+  end
+  def self.platform_notice
+    "[#{name} is for Linux/Unix Platforms]"
+  end
+  def self.env
+    RbConfig::CONFIG
+  end
+  def self.host
+    env['host']
+  end
+  def self.dir
+    def self.proj
+      Project_details.name.downcase
+    end
+    def self.arch
+      env['archdir']
+    end
+    def self.sitearch
+      env['sitearchdir']
+    end
+    def self.bin
+      env['bindir']
+    end
+    def self.lib
+      env['sitelibdir']
+    end
+    def self.data
+      env['datadir']
+    end
+    def self.share
+      "#{env['datadir']}/sisu"
+    end
+    def self.conf
+      env['sysconfdir']
+    end
+    def self.man
+      env['mandir']
+    end
+    def self.vim
+      "#{env['datadir']}/sisu/vim"
+    end
+    def self.out
+      "#{env['localstatedir']}/#{proj}"
+    end
+    def self.rubylib
+      env['LIBRUBYARG_SHARED']
+    end
+    def self.pwd
+      Dir.pwd #ENV['PWD']
+    end
+    self
+  end
+  def self.version
+    stamp={}
+    v="#{dir.pwd}/conf/sisu/version.yml"
+    if File.exist?(v)
+      stamp=YAML::load(File::open(v))
+      stamp[:version]
+    else ''
+    end
+  end
+  def self.system_info
+    ##{Project_details.platform_notice}
+    puts <<-WOK
+  Host
+    host:             #{Project_details.host}
+    arch:             #{Project_details.dir.arch}
+    sitearch:         #{Project_details.dir.sitearch}
+  Directories for installation
+    bin:                                          #{Project_details.dir.bin}
+    lib (site-ruby):                              #{Project_details.dir.lib}/#{Project_details.dir.proj}/v*
+    conf [etc]:                                   #{Project_details.dir.conf}/#{Project_details.dir.proj}
+    data (odf, shared images):                    #{Project_details.dir.share}
+    vim  (vim syntax, highlighting, ftplugin):    #{Project_details.dir.data}/sisu/vim
+    data (README, version_manifest):              #{Project_details.dir.data}/doc/#{Project_details.dir.proj}
+    man (manual pages):                           #{Project_details.dir.man}
+    output:                                       #{Project_details.dir.out}
+      processing:                                 #{Project_details.dir.out}/processing
+      www:                                        #{Project_details.dir.out}/www
+    rubylib:                                      #{Project_details.dir.rubylib}
+
+    WOK
+  end
+  def self.gem_env
+    system("gem env")
+  end
+end
+module Utils
+  def self.answer?(ask)
+    resp='redo'
+    print ask + " ['yes', 'no' or 'quit']: "
+    resp=File.new('/dev/tty').gets.strip #resp=gets.strip
+    if    resp == 'yes'        then true
+    elsif resp == 'no'         then false
+    elsif resp =~/^quit|exit$/ then exit
+    else                       puts "[please type: 'yes', 'no' or 'quit']"
+                               answer?(ask)
+    end
+  end
+  def self.default_notice # local help not implemented description incorrect
+    ans= %{#{Project_details.thor}
+    Information on alternative actions is available using:
+    [if ruby-thor is installed:]
+      "rake help")
+    Default action selected - "install #{Project_details.name}" proceed? }
+    resp=answer?(ans)
+    exit unless resp
+  end
+  def self.chmod_file(place)
+    if place =~/\/bin/; File.chmod(0755,place)
+    else                File.chmod(0644,place)
+    end
+  end
+  def self.chmod_util(place)
+    if place =~/\/bin/; chmod(0755,place)
+    else                chmod(0644,place)
+    end
+  end
+  def self.system_date
+    `date "+%Y-%m-%d"`.strip
+  end
+  def self.system_date_stamp
+    `date "+%Yw%W/%u"`.strip
+  end
+  def self.program_found?(prog)
+    found=`which #{prog}` #`whereis #{make}`
+    (found =~/bin\/#{prog}\b/) ? :true : :false
+  end
+end
+module Install
+                                                           #%% using a directory and its mapping
+  def self.setup_find_create(dir_get,dir_put,exclude_files=[''])               #primary,
+    begin
+      Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f|
+        stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join
+        place="#{dir_put}/#{stub}"
+        action=case
+        when File.file?(f)
+          unless f =~/#{exclude_files.inspect}/
+            cp(f,place)
+            Utils.chmod_file(place)
+            "->  #{dir_put}/"
+          end
+        when File.directory?(f)
+          FileUtils.mkpath(place) \
+            unless FileTest.directory?(place)
+          "./#{dir_get}/"
+        else '?'
+        end
+        puts "#{action}#{stub}"
+      end
+    rescue
+      puts "\n\n<< are you root? required for install >>"
+    end
+  end
+  def self.setup_find_cp_r(dir_get,dir_put)                                    #secondary, using recursive copy
+    begin
+      Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f|
+        stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join
+        place="#{dir_put}/#{stub}"
+        case
+        when File.file?(f)
+          cp_r(f,place)
+          Utils.chmod_util(place)
+        when File.directory?(f)
+          mkdir(place) \
+            unless FileTest.directory?(place)
+        end
+      end
+    rescue
+      puts "\n\n<< are you root? required for install >>"
+    end
+  end
+end
+module Version_info
+  def self.contents(vi)
+    <<-WOK
+---
+:project: #{vi[:project]}
+:version: #{vi[:version]}
+:date_stamp: #{vi[:date_stamp]}
+:date: "#{vi[:date]}"
+    WOK
+  end
+  module Current
+    def self.yml_file_path(version)
+      "data/sisu/#{version}/v/version.yml"
+    end
+    def self.settings(file)
+      v="#{Dir.pwd}/#{file}"
+      if File.exist?(v)
+        YAML::load(File::open(v))
+      else ''
+      end
+    end
+    def self.file_stable
+      yml_file_path(SiSU_version_dir_stable)
+    end
+    def self.file_unstable
+      yml_file_path(SiSU_version_dir_unstable)
+    end
+    def self.setting_stable
+      settings(file_stable)
+    end
+    def self.setting_unstable
+      settings(file_unstable)
+    end
+    def self.content_stable
+      Version_info.contents(setting_stable)
+    end
+    def self.content_unstable
+      Version_info.contents(setting_unstable)
+    end
+  end
+  module Next
+    def self.settings(v)
+      {
+        project:        "#{Project_details.name}",
+        version:        "#{v}",
+        date:           "#{Utils.system_date}",
+        date_stamp:     "#{Utils.system_date_stamp}",
+      }
+    end
+    def self.setting_stable
+      settings(SiSU_version_next_stable)
+    end
+    def self.setting_unstable
+      settings(SiSU_version_next_unstable)
+    end
+    def self.content_stable
+      Version_info.contents(setting_stable)
+    end
+    def self.content_unstable
+      Version_info.contents(setting_unstable)
+    end
+  end
+  module Update
+    def self.version_info_update_commit(filename,vi_hash_current,vi_content_current,vi_hash_next,vi_content_next)
+      ans=%{update #{Project_details.name.downcase} version info replacing:
+  #{vi_hash_current.sort}
+with:
+  #{vi_hash_next.sort}
+
+#{vi_content_current} becoming:
+#{vi_content_next}
+proceed? }
+      resp=Utils.answer?(ans)
+      if resp
+        fn="#{Dir.pwd}/#{filename}"
+        if File.writable?("#{Dir.pwd}/.")
+          file_version=File.new(fn,'w+')
+          file_version << vi_content_next
+          file_version.close
+        else
+          puts %{*WARN* is the file or directory writable? could not create #{filename}}
+        end
+      end
+    end
+    def self.update_stable
+      version_info_update_commit(
+        Version_info::Current.file_stable,
+        Version_info::Current.setting_stable,
+        Version_info::Current.content_stable,
+        Version_info::Next.setting_stable,
+        Version_info::Next.content_stable
+      )
+    end
+    def self.update_unstable
+      version_info_update_commit(
+        Version_info::Current.file_unstable,
+        Version_info::Current.setting_unstable,
+        Version_info::Current.content_unstable,
+        Version_info::Next.setting_unstable,
+        Version_info::Next.content_unstable
+      )
+    end
+    def self.changelog_header(vi)
+      <<-WOK
+%% #{vi[:version]}.orig.tar.xz (#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')})
+http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_#{vi[:version]}
+http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_#{vi[:version]}-1
+http://www.jus.uio.no/sisu/pkg/src/sisu_#{vi[:version]}.orig.tar.xz
+  sisu_#{vi[:version]}.orig.tar.xz
+  sisu_#{vi[:version]}-1.dsc
+      WOK
+    end
+    def self.changelog_header_stable
+      changelog_header(Version_info::Current.setting_stable)
+    end
+    def self.changelog_header_unstable
+      changelog_header(Version_info::Current.setting_unstable)
+    end
+  end
+  self
+end
+module GitExtractTaggedVersionBuild
+  def upstream
+    system(%{ git checkout upstream })
+  end
+  def self.git_tagged_versions(vb=nil)
+    if vb.tag
+      v=if  vb.tag =~/sisu_[0-9](?:\.[0-9]){0,2}$/ then vb.tag
+      elsif vb.tag =~/^[0-9](?:\.[0-9]){0,2}$/     then 'sisu_' + vb.tag
+      else                                              'sisu_'
+      end
+      system(%{ git tag -l | ag --nocolor '^#{v}' })
+    end
+  end
+  def self.git_checkout_and_build_version(vb)
+    begin
+      ver=if vb.tag =~/sisu_[0-9]\.[0-9]+\.[0-9]+/ then vb.tag
+      elsif  vb.tag =~/^[0-9]\.[0-9]+\.[0-9]+/     then 'sisu_' + vb.tag
+      else                                               vb.branch
+      end
+      install_branch=case vb.branch
+      when /^(?:stable|unstable)$/
+        "gem_create_build_#{vb.branch}"
+      when /^(?:all)/
+        'gem_create_build'
+      else
+        'gem_create_build_stable'
+        #'gem_create_build_install_stable'
+      end
+      commands =<<-WOK
+        git checkout #{ver} &&
+        rake #{install_branch};
+      WOK
+      puts commands
+      system(commands)
+    ensure
+      system(%{
+        git checkout upstream
+      })
+    end
+  end
+  def self.git_checkout_and_build_and_install_version(vb)
+    begin
+      ver=if vb.tag =~/sisu_[0-9]\.[0-9]+\.[0-9]+/ then vb.tag
+      elsif  vb.tag =~/^[0-9]\.[0-9]+\.[0-9]+/     then 'sisu_' + vb.tag
+      else                                               vb.branch
+      end
+      install_branch=case vb.branch
+      when /^(?:stable|unstable)$/
+        "gem_create_build_install_#{vb.branch}"
+      when /^(?:all)/
+        'gem_create_build_install'
+      else
+        'gem_create_build_install_stable'
+      end
+      commands =<<-WOK
+        git checkout #{ver} &&
+        rake #{install_branch};
+      WOK
+      puts commands
+      system(commands)
+    ensure
+      system(%{
+        git checkout upstream
+      })
+    end
+  end
+end
+module Gemspecs
+  def self.info(vi)
+    puts <<-WOK
+--
+name:       #{vi[:project].downcase}
+version:    #{vi[:version]}
+date:       #{vi[:date]}
+summary:    #{vi[:project]}
+    WOK
+  end
+  def self.contents(vi,version)
+    <<-WOK
+Gem::Specification.new do |s|
+  s.name           = '#{vi[:project].downcase}'
+  s.version        = '#{vi[:version]}'
+  s.date           = '#{vi[:date]}'
+  s.summary        = '#{vi[:project]}'
+  s.description    = '#{Project_details.name} gem'
+  s.authors        = ["Ralph Amissah"]
+  s.email          = 'ralph.amissah@gmail.com'
+  s.files          = Dir['lib/#{Project_details.name.downcase}/#{version}/*.rb'] +
+                     Dir['data/#{Project_details.name.downcase}/#{version}/v/version.yml'] +
+                     Dir['data/#{Project_details.name.downcase}/image/*'] +
+                     Dir['bin/#{Project_details.name.downcase}gem'] +
+                     Dir['bin/#{Project_details.name.downcase}']
+  s.license        = 'GPL3'
+  s.executables << '#{Project_details.name.downcase}gem' << '#{Project_details.name.downcase}'
+end
+    WOK
+  end
+  def self.create(filename,gemspec)
+    fn="#{Dir.pwd}/#{filename}.gemspec"
+    if File.writable?("#{Dir.pwd}/.")
+      file_sisu_gemspec=File.new(fn,'w+')
+      file_sisu_gemspec << gemspec
+      file_sisu_gemspec.close
+    else
+      puts %{*WARN* is the file or directory writable? could not create #{filename}}
+    end
+  end
+  def self.build(fn)
+    system(%{ gem build #{fn}.gemspec })
+  end
+  def self.install(fn)
+    system(%{
+      sudo gem install --no-document --verbose #{fn}.gem
+    })
+  end
+  module Current
+    def self.filename_stable
+      Project_details.name.downcase \
+      + '-' \
+      + Version_info::Current.setting_stable[:version]
+    end
+    def self.filename_unstable
+      Project_details.name.downcase \
+      + '-' \
+      + Version_info::Current.setting_unstable[:version]
+    end
+    def self.info_stable
+      Gemspecs.info(Version_info::Current.setting_stable)
+    end
+    def self.info_unstable
+      Gemspecs.info(Version_info::Current.setting_unstable)
+    end
+    def self.current_stable
+      Gemspecs.contents(
+        Version_info::Current.setting_stable,
+        SiSU_version_dir_stable
+      )
+    end
+    def self.current_unstable
+      Gemspecs.contents(
+        Version_info::Current.setting_unstable,
+        SiSU_version_dir_unstable
+      )
+    end
+    def self.create_stable
+      Gemspecs.create(filename_stable,current_stable)
+      Gemspecs.create(
+        "#{Project_details.name.downcase}-stable",
+        current_stable
+      )
+    end
+    def self.create_unstable
+      Gemspecs.create(filename_unstable,current_unstable)
+      Gemspecs.create(
+        "#{Project_details.name.downcase}-unstable",
+        current_unstable
+      )
+    end
+    def self.build_stable
+      Gemspecs.build(filename_stable)
+    end
+    def self.build_unstable
+      Gemspecs.build(filename_unstable)
+    end
+    def self.install_stable
+      Gemspecs.install(filename_stable)
+    end
+    def self.install_unstable
+      Gemspecs.install(filename_unstable)
+    end
+  end
+  module Next
+    def self.filename_stable
+      Project_details.name.downcase \
+      + '-' \
+      + Version_info::Next.setting_stable[:version]
+    end
+    def self.filename_unstable
+      Project_details.name.downcase \
+      + '-' \
+      + Version_info::Next.setting_unstable[:version]
+    end
+    def self.setting_stable
+      Gemspecs.contents(
+        Version_info::Next.setting_stable,
+        SiSU_version_dir_stable
+      )
+    end
+    def self.setting_unstable
+      Gemspecs.contents(
+        Version_info::Next.setting_unstable,
+        SiSU_version_dir_unstable
+      )
+    end
+    def self.create_stable
+      Gemspecs.create(filename_stable,setting_stable)
+    end
+    def self.create_unstable
+      Gemspecs.create(filename_unstable,setting_unstable)
+    end
+    def self.build_stable
+      Gemspecs.build(filename_stable)
+    end
+    def self.build_unstable
+      Gemspecs.build(filename_unstable)
+    end
+    def self.install_stable
+      Gemspecs.install(filename_stable)
+    end
+    def self.install_unstable
+      Gemspecs.install(filename_unstable)
+    end
+  end
+end
+
diff --git a/setup/sisu_version.rb b/setup/sisu_version.rb
new file mode 100644 (file)
index 0000000..1cb8adb
--- /dev/null
@@ -0,0 +1,13 @@
+#% constants
+module SiSUversion
+  SiSU_version_next_stable           = '5.6.3' #% set version stable current
+  SiSU_version_next_unstable         = '6.2.4' #% set version unstable dev
+  #% qi quick install file
+  SiSU_version_generic_next_stable   = '5.4.x'
+  SiSU_version_generic_next_unstable = '6.0.x'
+  SiSU_version_dir_stable            = 'v5'
+  SiSU_version_dir_unstable          = 'v6'
+end
+module Dev
+  GPGpubKey                          = '1BB4B289'
+end
diff --git a/version b/version
new file mode 120000 (symlink)
index 0000000..8502093
--- /dev/null
+++ b/version
@@ -0,0 +1 @@
+setup/sisu_version.rb
\ No newline at end of file