Class: RBT::Actions::Configure

Inherits:
RBT::Action show all
Includes:
CompileBaseModule
Defined in:
lib/rbt/actions/individual_actions/configure/configure.rb

Overview

RBT::Actions::Configure

Constant Summary collapse

REGEX_TO_CAPTURE_THE_PREFIX_FOR_CONFIGURE_BUILD_TYPES =
#

REGEX_TO_CAPTURE_THE_PREFIX_FOR_CONFIGURE_BUILD_TYPES

#
/(--prefix=)([-A-Za-z\/]+)\s/
REGEX_TO_CAPTURE_THE_PREFIX_FOR_CMAKE_BUILD_TYPES =
#

REGEX_TO_CAPTURE_THE_PREFIX_FOR_CMAKE_BUILD_TYPES

#
/-DCMAKE_INSTALL_PREFIX=([\/A-Za-z]+)/

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

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, #symlink_program?, #update_kde_apps, #use_ccache?, #use_gobolinux_symlinkprogram?, #use_mrxvt?, #use_porg?, #use_stow?, #use_tags?, #uses_appdir_prefix?, #validate_the_cookbook_aliases

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_arguments, #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_meson_installed?, #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_directory_was_found_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_the_first_commandline_argument, #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(i = ARGV, run_already = true, &block) ⇒ Configure

#

initialize

#


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 40

def initialize(
    i           = ARGV,
    run_already = true,
    &block
  )
  reset # Must come before set_commandline_arguments().
  set_commandline_arguments(i)
  # ======================================================================= #
  # === Handle blocks next
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :be_extra_verbose
    # ===================================================================== #
    when :be_extra_verbose
      @internal_hash[:be_extra_verbose] = true
    end
  end
  run if run_already
end

Instance Method Details

#automatically_try_to_determine_the_real_build_typeObject

#

automatically_try_to_determine_the_real_build_type

#


224
225
226
227
228
229
230
231
232
233
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 224

def automatically_try_to_determine_the_real_build_type
  build_system = RBT.infer_build_system
  case build_system
  # ======================================================================= #
  # === cmake
  # ======================================================================= #
  when 'cmake'
    set_build_type_to_use(:cmake)
  end
end

#be_extra_verbose?Boolean

#

be_extra_verbose?

#

Returns:

  • (Boolean)


85
86
87
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 85

def be_extra_verbose?
  @internal_hash[:be_extra_verbose]
end

#build_type_is_cmake?Boolean

#

build_type_is_cmake?

#

Returns:

  • (Boolean)


113
114
115
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 113

def build_type_is_cmake?
  build_type_to_use? == :cmake
end

#build_type_is_configure?Boolean

#

build_type_is_configure?

#

Returns:

  • (Boolean)


106
107
108
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 106

def build_type_is_configure?
  build_type_to_use? == :configure
end

#build_type_to_use?Boolean

#

build_type_to_use?

#

Returns:

  • (Boolean)


92
93
94
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 92

def build_type_to_use?
  @internal_hash[:build_type_to_use]
end

#do_compile_statically(be_verbose = true) ⇒ Object

#

do_compile_statically

#


186
187
188
189
190
191
192
193
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 186

def do_compile_statically(
    be_verbose = true
  )
  if be_verbose
    e "#{rev}Enabling static compilation mode next - at the least trying to."
  end
  ENV['CFLAGS'] = ENV['CFLAGS']+' -static -g' # This works as-is; determined in June 2023.
end

#do_run_the_sys_command(i = ) ⇒ Object

#

do_run_the_sys_command

#


212
213
214
215
216
217
218
219
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 212

def do_run_the_sys_command(
    i = @internal_hash[:sys_command] # This is our default here.
  )
  if be_extra_verbose?
    e "#{rev}The current working directory is `#{sdir(return_pwd)}#{rev}`."
  end
  coloured_and_padded_esystem(i) { :dodgerblue }
end
#

menu (menu tag)

#


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 120

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry|
      menu(entry)
    }
  else
    case i # case tag
    # ===================================================================== #
    # === action-configure --use-cmake
    # ===================================================================== #
    when /^-?-?use(-|_)?cmake$/
      set_build_type_to_use(:cmake)
    # ===================================================================== #
    # === action-configure --use-this-version=1.2.3 --statically
    # ===================================================================== #
    when /^-?-?statically$/,
         /^-?-?static$/
      do_compile_statically
    # ===================================================================== #
    # === action-configure --use-this-version=1.2.3
    # ===================================================================== #
    when /^-?-?use(-|_)?this(-|_)?version=(.+)$/ # === $3
      _ = $3.to_s
      e "#{rev}Modifying the prefix towards an "+
        steelblue('AppDir')+rev+' prefix next, using '+
        'the specified version '+steelblue(_)+'.'
      new_version = _
      new_prefix = RBT.return_appdir_prefix(@internal_hash[:program_name]+'-'+new_version)
      @internal_hash[:sys_command].sub!(
        REGEX_TO_CAPTURE_THE_PREFIX_FOR_CONFIGURE_BUILD_TYPES,
        '--prefix='+new_prefix.to_s+' '
      )
    # ===================================================================== #
    # === action-configure --appdir
    # ===================================================================== #
    when /^-?-?appdir/,
         /^-?-?ntrad/
      if build_type_is_configure?
        regex_to_use = REGEX_TO_CAPTURE_THE_PREFIX_FOR_CONFIGURE_BUILD_TYPES
      elsif build_type_is_cmake?
        regex_to_use = REGEX_TO_CAPTURE_THE_PREFIX_FOR_CMAKE_BUILD_TYPES
      end
      e rev+'Modifying the prefix towards an '+steelblue('AppDir')+
        "#{rev} prefix next."
      new_version = program_version?
      new_prefix = RBT.return_appdir_prefix(@internal_hash[:program_name]+'-'+new_version)
      if build_type_is_configure?
        @internal_hash[:sys_command].sub!(
          regex_to_use,
          "--prefix=#{new_prefix}"
        )
      elsif build_type_is_cmake?
        @internal_hash[:sys_command].sub!(
          regex_to_use,
          '-DCMAKE_INSTALL_PREFIX='+new_prefix.to_s
        )
      end
    end
  end
end

#program_version?Boolean

#

program_version?

#

Returns:

  • (Boolean)


205
206
207
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 205

def program_version?
  @internal_hash[:program_version]
end

#resetObject

#

reset (reset tag)

#


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 66

def reset
  super()
  # ======================================================================= #
  # === :try_to_use_configure_options
  # ======================================================================= #
  @internal_hash[:try_to_use_configure_options] = true
  # ======================================================================= #
  # === :be_extra_verbose
  # ======================================================================= #
  @internal_hash[:be_extra_verbose] = false
  # ======================================================================= #
  # === :build_type_to_use
  # ======================================================================= #
  set_build_type_to_use(:configure)
end

#runObject

#

run (run tag)

#


238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
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
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 238

def run
  cwd = return_pwd
  work_on_this_program = File.basename(cwd)
  @internal_hash[:program_name]    = ProgramInformation.program_name(work_on_this_program)
  @internal_hash[:program_version] = ProgramInformation.program_version(work_on_this_program)
  cookbook = RBT.return_cookbook_for(@internal_hash[:program_name])
  automatically_try_to_determine_the_real_build_type
  case build_type_to_use?
  # ======================================================================= #
  # === :configure
  # ======================================================================= #
  when :configure,
       :default
    _ = './configure'.dup
    _ << ' --prefix=/usr/'
  # ======================================================================= #
  # === :cmake
  # ======================================================================= #
  when :cmake
    _ = 'cmake'.dup
    _ << ' -DCMAKE_INSTALL_PREFIX=/usr/'
  else
    ewarn "Unknown build type: #{steelblue(build_type_to_use?)}"
    exit
  end
  if try_to_use_configure_options?
    _ << " #{cookbook.configure_options?}"
    _.rstrip! # We have to do this in case the above returns an empty String.
  end
  # ======================================================================= #
  # Use a build directory in this event.
  # ======================================================================= #
  if cookbook.use_build_directory?
    name_of_the_build_directory = cookbook.name_of_the_build_directory?
    if name_of_the_build_directory.nil?
      name_of_the_build_directory = 'BUILD/'
    end
    mkdir(name_of_the_build_directory)
    cd(name_of_the_build_directory)
    if build_type_is_configure?
      _.prepend('.')
    elsif build_type_is_cmake?
      _ << (' ..')
    end
  end
  @internal_hash[:sys_command] = _
  menu(commandline_arguments?)
  do_run_the_sys_command(@internal_hash[:sys_command])
end

#set_build_type_to_use(i) ⇒ Object

#

set_build_type_to_use

#


99
100
101
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 99

def set_build_type_to_use(i)
  @internal_hash[:build_type_to_use] = i.to_sym # Always use Symblls here.
end

#try_to_use_configure_options?Boolean

#

try_to_use_configure_options?

#

Returns:

  • (Boolean)


198
199
200
# File 'lib/rbt/actions/individual_actions/configure/configure.rb', line 198

def try_to_use_configure_options?
  @internal_hash[:try_to_use_configure_options]
end