aboutsummaryrefslogtreecommitdiffhomepage
path: root/setup/rbuild
diff options
context:
space:
mode:
Diffstat (limited to 'setup/rbuild')
-rw-r--r--setup/rbuild646
1 files changed, 646 insertions, 0 deletions
diff --git a/setup/rbuild b/setup/rbuild
new file mode 100644
index 00000000..315f3a34
--- /dev/null
+++ b/setup/rbuild
@@ -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