Class: RBT::PostinstallationStep

Inherits:
CompileBase show all
Defined in:
lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb

Overview

RBT::PostinstallationStep

Constant Summary

Constants included from CompileBaseModule

CompileBaseModule::FILE_AUTOGEN

Constants inherited from LeanPrototype

LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CompileBaseModule

#always_show_dependencies?, #capitalize_program_names?, #cflags?, #check_whether_we_will_install_only_programs_from_the_bin_subdirectory, #cleanup_system_tag_directory, #config?, #consider_removing_libtool_la_files, #consider_symlinking_cmake_modules, #consider_symlinking_header_files_into_the_usr_include_hierarchy, #consider_symlinking_lib64_into_lib, #cookbook_dataset_autosymlink_lib64?, #cookbook_dataset_program_version?, #create_a_new_current_symlink_here, #create_architecture_file, #do_invoke_symlink_program, #do_play_song, #editor_to_use?, #email?, #exit_on_unregistered_cookbook_entries?, #has_an_error_occurred?, #host_cpu?, #install_only_binaries?, #installer_constant?, make_command?, #no_error_has_occurred?, #play_song?, #recipes_dir?, #register_program, #remove_compiling_is_in_progress, #report_to_developers, #reset_the_module, #return_build_type, #return_chained_programs, #return_files_from_the_profiles_directory, #return_these_programs, #run_ldconfig?, #shall_we_symlink_the_header_files_into_the_usr_include_hierarchy?, #store_full_configure_command_into_resources_directory, #symlink_into_tags, #symlink_into_usr_lib_dir?, #symlink_m4_macros, #symlink_program, #update_kde_apps, #use_ccache?, #use_gobolinux_symlinkprogram?, #use_mrxvt?, #use_porg?, #use_stow?, #uses_appdir_prefix?, #validate_the_cookbook_aliases

Methods inherited from Base

#cat, #cd_back_to_the_current_working_directory, #consider_reporting_how_many_programs_are_registered, #cookbook_files?, #copy_recursively, #delete_code_of_conduct?, #determine_appdir_prefix_from_this_input, #directory_validation?, #do_not_show_names, #fast_return_file_size_of_this_program, #file_last_symlinked_program?, #file_programs_version_url, #gem_version, #is_a_64bit_system?, #is_ccache_available?, #is_porg_available?, #is_this_binary_registered?, #is_this_program_included?, #make_command?, #make_install_command?, #new_cookbook_instance_for, #program_exists?, #publish_list_of_all_programs_version, #rcp, registered_binaries?, #remove_symlink, #rename_kde_konsole_tab, #repackage, #report_n_programs, #report_working_directory, #return_compile_time_statistics, #return_n_random_characters, #return_version_of_this_program, #run_make_then_make_install, #sanitize_url1_entry, #set_source_directory, #show_overview_over_available_utility_scripts, #symlink_all_files_from_this_directory_to_that_directory, #system_tags?, #upload_list_of_all_programs_version, #use_yaml_database_for_tags?, #warn_and_exit, #wget

Methods inherited from LeanPrototype

#a_or_an?, #abbreviations?, #absolute_path, #action, #add_to_the_commandline_arguments, #all_binaries?, #all_files_from, #all_libraries?, #allowed_cookbook_entries?, #appdir_location_of?, #append_onto_the_internal_hash, #append_what_into, #archive_type_of?, #available_programs?, #be_quiet?, #be_verbose?, #begins_with_a_comment?, #capitalize_first_alphabetical_character, #cd_to_the_log_directory, #cd_to_the_temp_directory, #change_directory, #change_permission, #cheering_person?, #chmod, #chop_off_archive, #clear_commandline_options, #cliner, #coloured_and_padded_e, #coloured_and_padded_esystem, #coloured_esystem, #colourize_directory_for_system_results, #colourize_this_error, #colourize_this_file_path, #colourize_this_warning, #commandline_arguments?, #commandline_arguments_without_hyphens?, #comment, #convert_dd_mm_yyyy_to_its_long_variant, #convert_env_variable, #copy_directory, #copy_files, #cpr, #create_directory, #current_hour?, #dd_mmm_yyy, #debug, #debug?, #directory_expanded_cookbooks?, #disable_colours, #display_md5sum?, #do_not_debug, #does_the_cookbook_include_this_program?, #does_this_expanded_cookbook_file_exist_for_this_program?, #does_this_file_exist?, #does_this_file_exist_and_is_it_a_file?, #e, #eblue, #ecomment, #ecrimson, #edir, #editor?, #efancy, #eimp, #enable_colours, #enable_debug, #ensure_main_encoding_for, #eparse, #esystem, #esystem_gold, #etomato, #ewarn, #exit_program, #expanded_cookbooks_directory_exists?, #extract_this_archive, #extract_to?, #file_compiled_programs?, #file_dirname_retaining_trailing_slash, #file_predefined_installation_instructions?, #file_specification_of_registered_cookbook_entries, #find_cookbook_alias_for, #find_this_yaml_file, #first_argument?, #first_non_hyphen_argument?, #get_all_directories_from, #get_all_files_from, #get_all_programs, #get_date, #get_extended_date, #get_files_and_directories_from, #go_to_base_dir, #home_dir?, #host_system?, #infer_the_namespace, #internal_hash?, #internal_hash_set_commandline_arguments, #is_an_archive?, #is_directory?, #is_file?, #is_github_url?, #is_make_available?, #is_on_gobolinux?, #is_on_windows?, #is_roebe?, #is_superuser?, #is_symlink?, #is_this_a_header?, #is_this_a_library?, #is_this_program_included?, #iso_encoding?, #load_dataset_from_this_expanded_cookbook, #load_yaml, #load_yaml_file_from_the_cookbook_directory_for_this_program, #log_directory?, #main_encoding?, #meson_build_file_exists?, #months?, #move_file, #n_programs_are_available?, #n_programs_available?, #namespace?, #no_directory_exists_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #packages_directory?, #path_to_this_expanded_cookbooks_dataset, #pkgconfig_directory?, #populate_the_internal_hash_with_default_values, #predefined_installation_instructions?, #prepend_this_commandline_argument, #program_version_of?, #project_base_directory?, #project_yaml_directory?, #query_path?, #rarrow?, #read_file, #read_file_in_default_encoding, #read_file_with_default_encoding, #readlines, #readlines_with_proper_encoding, #register_sigint, #registered_cookbook_entries?, #remove, #remove_archive_from_the_end, #remove_comments_from_each_line, #remove_directory, #remove_double_slashes, #remove_file, #remove_newlines, #remove_parens, #remove_symlink, #remove_this_commandline_argument, #remove_this_entry_from_the_commandline_arguments, #remove_trailing_ANSII_escape_code, #remove_unnecessary_data_from_url, #rename, #report_pwd, #require_the_rbt_aliases, #reset_the_internal_hash, #return_all_archives_from_this_directory, #return_appdir_prefix, #return_commandline_arguments_with_leading_hyphens, #return_current_hour_minutes_second, #return_date, #return_day_of_the_month_based_on_utc, #return_full_time, #return_hours_minutes_seconds_based_on_utc, #return_location_to_this_programs_yaml_file, #return_month_based_on_this_number, #return_month_based_on_utc, #return_opnn, #return_program_information, #return_program_name_for_gobolinux_systems, #return_pwd, #return_unicode_warning_symbol_or_empty_string, #return_utc, #return_utc_time_in_a_format_similar_to_slackware, #return_weekday_based_on_utc, #return_year_based_on_utc, #rev, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_opn, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #silently_create_this_directory_if_it_does_not_yet_exist, #simp, #source_base_directory?, #ssym, #stderr, #store_into_this_directory?, #string_right_arrow?, #swarn, #symlink, #sysbin_directory?, #sysetc_directory?, #sysinclude_directory?, #syslib_directory?, #sysshare_directory?, #system_directory?, #temp_directory?, #to_bool, #to_camelcase, #to_iso_encoding, #to_unicode, #today?, #touch, #try_to_require_beautiful_url, #try_to_require_the_environment_information_gem, #try_to_require_the_extracter_gem, #try_to_require_the_open_gem, #try_to_require_the_xorg_buffer, #try_to_require_wget, #try_to_return_a_special_compile_component, #unicode_cliner, #unicode_middle_cliner, #use_colours=, #use_colours?, #use_opn=, #use_opn?, #utf_encoding?, #verbose_truth, #word_wrap, #write_what_into, #write_what_into_via_unicode, #yes_or_no

Constructor Details

#initialize(hash = {}, run_already = true) ⇒ PostinstallationStep

#

initialize

#


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 29

def initialize(
    hash        = {},
    run_already = true
  )
  reset
  # ======================================================================= #
  # Append onto the main hash next, which will contain the full dataset.
  # ======================================================================= #
  if hash.is_a? String
    hash = { compile_which_program: hash }
  end
  append_onto_the_internal_hash(
    hash
  )
  # ======================================================================= #
  # === Handle blocks given to this class next
  # ======================================================================= #
  if block_given?
    yielded = yield
    if yielded.is_a? Hash
      # =================================================================== #
      # === :use_opn
      # =================================================================== #
      if yielded.has_key?(:use_opn) and
         (yielded[:use_opn] == false)
        disable_opn
      end
    else
      case yielded
      # =================================================================== #
      # === :do_not_run_yet
      # =================================================================== #
      when :do_not_run_yet
        run_already = false
      end
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::PostinstallationStep[]

#


371
372
373
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 371

def self.[](i = ARGV)
  new(i)
end

Instance Method Details

#compile_which_program?Boolean

#

compile_which_program?

#

Returns:

  • (Boolean)


102
103
104
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 102

def compile_which_program?
  @internal_hash[:compile_which_program]
end

#consider_symlinking_appdir_libraries_into_the_usr_lib_hierarchyObject

#

consider_symlinking_appdir_libraries_into_the_usr_lib_hierarchy

#


187
188
189
190
191
192
193
194
195
196
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 187

def consider_symlinking_appdir_libraries_into_the_usr_lib_hierarchy
  unless do_not_symlink?
    if is_on_roebe? and
      uses_appdir_approach? and
      no_error_has_occurred?
      target = prefix?+'lib/'
      RBT.symlink_appdir_libraries_into_usr_lib_directory(target)
    end
  end
end
#

This is only needed when the prefix is not traditional (i.e. Gobolinux prefix). It will be called via the method do_postinstall_actions().

#


355
356
357
358
359
360
361
362
363
364
365
366
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 355

def create_symlinks(
    i                               = compile_which_program?,
    shall_we_invoke_symlink_program = shall_we_invoke_symlink_program?,
    use_this_as_program_version     = program_version?
  )
  if shall_we_invoke_symlink_program
    opne "#{rev}Now running #{sfancy('RBT::SymlinkFromToCurrent')} "\
         "#{rev}to symlink"
    opne "the content of `#{sdir(i)}#{rev}`."
    do_invoke_symlink_program(i, use_this_as_program_version)
  end
end

#dataset_to_use?Boolean Also known as: cookbook_dataset?, dataset?

#

dataset_to_use?

Which dataset is to be used - this reader method returns that result.

#

Returns:

  • (Boolean)


83
84
85
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 83

def dataset_to_use?
  @internal_hash[:dataset_to_use]
end

#delete_libtool_files?Boolean

#

delete_libtool_files?

#

Returns:

  • (Boolean)


123
124
125
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 123

def delete_libtool_files?
  @internal_hash[:delete_libtool_files]
end

#do_not_symlink?Boolean

#
#

Returns:

  • (Boolean)


176
177
178
179
180
181
182
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 176

def do_not_symlink?
  if dataset_to_use?
    dataset_to_use?.do_not_symlink == true
  else
    false
  end
end

#do_register_the_program?Boolean

#

do_register_the_program?

#

Returns:

  • (Boolean)


109
110
111
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 109

def do_register_the_program?
  @internal_hash[:do_register_the_program]
end

#do_run_fetch_all_m4_macros?Boolean

#

do_run_fetch_all_m4_macros?

#

Returns:

  • (Boolean)


130
131
132
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 130

def do_run_fetch_all_m4_macros?
  @internal_hash[:do_run_fetch_all_m4_macros]
end

#ensure_that_useful_internal_values_existObject

#

ensure_that_useful_internal_values_exist (default tag, def tag)

This method will ensure that some default internal-values exist.

#


229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 229

def ensure_that_useful_internal_values_exist
  # ======================================================================= #
  # === :use_tags
  # ======================================================================= #
  unless @internal_hash.has_key? :use_tags
    @internal_hash[:use_tags] = false
  end
  # ======================================================================= #
  # === :do_register_the_program
  # ======================================================================= #
  unless @internal_hash.has_key? :do_register_the_program
    @internal_hash[:do_register_the_program] = true # This is the default.
  end
  # ======================================================================= #
  # === :do_run_fetch_all_m4_macros
  # ======================================================================= #
  unless @internal_hash.has_key? :do_run_fetch_all_m4_macros
    @internal_hash[:do_run_fetch_all_m4_macros] = true # This is the default.
  end
  # ======================================================================= #
  # === :symlink_program
  # ======================================================================= #
  @internal_hash[:symlink_program] = RBT::SymlinkFromToCurrent.new { :do_not_run_yet }
end

#full_configure_command?Boolean Also known as: return_full_configure_command

#

full_configure_command?

The @full_configure_command contains the full configure command that we will use. The advantage in using this is that we can easily copy/paste this at a later time, should we need to do so.

#

Returns:

  • (Boolean)


95
96
97
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 95

def full_configure_command?
  @internal_hash[:full_configure_command]
end

#postinstall?Boolean

#

postinstall?

#

Returns:

  • (Boolean)


153
154
155
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 153

def postinstall?
  @internal_hash[:postinstall]
end

#prefix?Boolean

#

prefix?

#

Returns:

  • (Boolean)


137
138
139
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 137

def prefix?
  real_prefix?.to_s
end

#program_version?Boolean

#

program_version?

#

Returns:

  • (Boolean)


201
202
203
204
205
206
207
208
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 201

def program_version?
  _ = internal_hash?
  if _.has_key? :dataset_to_use
    _ = _[:dataset_to_use]
  end
  _ = _.internal_hash? # Query the internal method in this case.
  _['program_version']
end

#resetObject

#

reset (reset tag)

#


72
73
74
75
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 72

def reset
  super()
  infer_the_namespace
end

#runObject

#

run (run tag)

#


257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 257

def run
  ensure_that_useful_internal_values_exist
  prefix = real_prefix?
  # ======================================================================= #
  # Consider removing the libtool .la files next
  # ======================================================================= #
  if use_appdir_prefix?
    symlink_program?.set_prefix(prefix?)
    # ===================================================================== #
    # First we must create a new 'Current' symlink - this will 
    # take a prefix such as "/home/Programs/Libfontenc/1.1.5/".
    # ===================================================================== #
    opnn; create_a_new_current_symlink_here(prefix.to_s)
    consider_removing_libtool_la_files # ← This will check whether we will remove .la files or not.
    consider_symlinking_cmake_modules
    if symlink_into_usr_lib_dir?
      RBT::SymlinkIntoUsrLibDirectory.new(
        rds("#{prefix}/lib/")
      )
    end
  end
  run_post_install_class_unless_postinstall_is_empty
  # ======================================================================= #
  # Eliminate stray symlinks from the /System/Tags/ directory, should
  # this directory exist.
  # ======================================================================= #
  cleanup_system_tag_directory
  # ======================================================================= #
  # Next, consider symlinking the .h files into the "/usr/include/"
  # hierarchy. This is, by default, NOT done; only some programs
  # may do so, and it will only happen for programs that are
  # installed via an AppDir way.
  # ======================================================================= #
  consider_symlinking_header_files_into_the_usr_include_hierarchy
  # ======================================================================= #
  # === Check as to whether we will instally only programs from the
  #     bin/ subdirectory. If so, we will delete the other files.
  # ======================================================================= #
  check_whether_we_will_install_only_programs_from_the_bin_subdirectory
  # ======================================================================= #
  # === The AppDir approach comes next
  #
  # If you need to tie actions related to the "/Programs/" directory
  # based installations, aka AppDirs, then this is the way to go.
  # ======================================================================= #
  if prefix.include? programs_directory?
    # ===================================================================== #
    # === Create the Architecture file on GoboLinux systems next
    # ===================================================================== #
    create_architecture_file
    create_symlinks(prefix)
    symlink_m4_macros(prefix)
    consider_symlinking_lib64_into_lib
    consider_symlinking_appdir_libraries_into_the_usr_lib_hierarchy
    register_program(prefix) # Register it into the AppDir-database.
    # ===================================================================== #
    # We next store into the "Resources/" directory, but only for
    # programs compiled via an AppDir prefix. This has to happen
    # after register_program() was called because we don't want to
    # keep track of these files in the database.
    # ===================================================================== #
    store_full_configure_command_into_resources_directory
  else
    # ===================================================================== #
    # Else we still may check for a few things, if we are on roebe that
    # is. For example, we will run the postinstallation step for bash
    # symlinking bin/bash towards bin/sh.
    # ===================================================================== #
    if is_on_roebe? and prefix.start_with?(home_dir?)
      run_post_install_class_unless_postinstall_is_empty
    end
  end
  # ======================================================================= #
  # Next, we symlink into /System/Tags.
  # ======================================================================= #
  symlink_into_tags(
    compile_which_program?,
    real_prefix?.to_s,
    cookbook_dataset?,
    use_tags?
  )
  # ======================================================================= #
  # Cleanup: We must get rid of special files.
  # ======================================================================= #
  remove_compiling_is_in_progress
  # ======================================================================= #
  # We may play a song, irrespective over as to whether we have used
  # an AppDir installation or not.
  # ======================================================================= #
  play_song if play_song?
end

#run_post_install_class_unless_postinstall_is_emptyObject

#

run_post_install_class_unless_postinstall_is_empty

#


161
162
163
164
165
166
167
168
169
170
171
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 161

def run_post_install_class_unless_postinstall_is_empty
  unless postinstall?.empty?
    # ===================================================================== #
    # Delegate to class RBT::PostInstall next, but only if the
    # postinstall setting in the cookbook .yml file is NOT empty.
    # ===================================================================== #
    RBT::PostInstall.new(dataset?) {{
      use_this_compile_prefix: real_prefix?.to_s
    }}
  end
end
#
#

Returns:

  • (Boolean)


220
221
222
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 220

def shall_we_invoke_symlink_program?
  @internal_hash[:shall_we_invoke_symlink_program]
end
#
#

Returns:

  • (Boolean)


213
214
215
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 213

def symlink_program?
  @internal_hash[:symlink_program]
end

#use_tags?Boolean

#

use_tags?

#

Returns:

  • (Boolean)


116
117
118
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 116

def use_tags?
  @internal_hash[:use_tags]
end

#use_this_prefix?Boolean Also known as: real_prefix?, return_proper_prefix?, return_proper_prefix

#

use_this_prefix?

#

Returns:

  • (Boolean)


144
145
146
# File 'lib/rbt/utility_scripts/postinstallation_step/postinstallation_step.rb', line 144

def use_this_prefix?
  @internal_hash[:use_this_prefix]
end