Class: RBT::ConfigureString

Inherits:
Base show all
Defined in:
lib/rbt/misc/configure_string.rb

Constant Summary

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 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_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, #otomato, #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_name, #return_program_name_for_gobolinux_systems, #return_program_name_via_program_information, #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, #rpn, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_colours, #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(string = './configure', run_already = false) ⇒ ConfigureString

#

initialize

#


27
28
29
30
31
32
33
34
35
36
# File 'lib/rbt/misc/configure_string.rb', line 27

def initialize(
    string      = './configure',
    run_already = false
  )
  reset
  set_configure_string(
    string
  )
  run if run_already
end

Instance Method Details

#append(this) ⇒ Object Also known as: <<

#

append

This method will simply append data onto the @configure_string, after appending a ‘ ’. It does check whether the string already exists, before adding it.

#


114
115
116
117
118
119
120
121
122
123
124
# File 'lib/rbt/misc/configure_string.rb', line 114

def append(this)
  # Ensure string format if input is an Array
  this = this.flatten.join(' ') if this.is_a? Array
  if this.include? ' '
    this.split(' ').each {|_| append(_)}
  else
    # Only add if our string does not already have this:
    @configure_string << ' '+this if ! @configure_string.include? this
    @configure_string.lstrip! if string?.start_with? ' ' # Get rid of leading ' '
  end
end

#check_then_append(this_string) ⇒ Object

#

check_then_append

This first checkes the prefix and if the prefix does not contain something special, then we add the argument to it.

For example:

--with-os-vendor="HiveOS"
#


268
269
270
271
272
273
274
# File 'lib/rbt/misc/configure_string.rb', line 268

def check_then_append(this_string)
  if this_string.include? '--' and this_string.include? '='
    this_string =~ /--(.*)=/
    target = $1.dup
    append(this_string) unless this_string.include?(target)
  end
end

#configure_string?Boolean Also known as: configure_string

#

configure_string?

Contains the configure string object.

#

Returns:

  • (Boolean)


51
52
53
# File 'lib/rbt/misc/configure_string.rb', line 51

def configure_string?
  @configure_string
end

#do_not_use_a_prefixObject

#

do_not_use_a_prefix

Do not use a prefix at all.

#


152
153
154
# File 'lib/rbt/misc/configure_string.rb', line 152

def do_not_use_a_prefix
  @do_not_use_a_prefix = true
end

#do_use_a_prefixObject

#

do_use_a_prefix

#


159
160
161
# File 'lib/rbt/misc/configure_string.rb', line 159

def do_use_a_prefix
  @do_not_use_a_prefix = false
end

#leading_part=(i) ⇒ Object

#

leading_part

A setter method to set the leading part.

#


72
73
74
# File 'lib/rbt/misc/configure_string.rb', line 72

def leading_part=(i)
  @configure_string.prepend(i) # prepend here.
end

#modify_prefix(new_prefix) ⇒ Object

#

modify_prefix

This method modifies the –prefix= directive by replacing the old directive (if found). Invoke this method ONLY if you are sure that you want to modify the prefix PERMANENTLY.

x = ' --prefix=/Programs/Xosd/2.11.122 '; x.gsub!(/--prefix=\/\S*/,'')
#


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
# File 'lib/rbt/misc/configure_string.rb', line 303

def modify_prefix(new_prefix)
  unless @do_not_use_a_prefix # Only do it when we need to modify the prefix.
    # ===================================================================== #
    # prefix braucht wirklich nur einmal dabei zu sein.
    # ===================================================================== #
    @configure_string.sub!(/--prefix=\/\S*/,' ')
    # ===================================================================== #
    # Since as of October 2011, we will remove '-' if the string contains
    # this character.
    # ===================================================================== #
    if new_prefix.include? '-'
      new_prefix.delete!('-')
    end
    sanitize_configure_string
    # If it includes a |
    if @configure_string.include? '|'
      splitted = @configure_string.split '|'
      splitted[1] = splitted[1]+' --prefix='+new_prefix+' '
      set_configure_string splitted.join('|')
    else # Else, we insert right after ./configure or ./config
      if @configure_string.include? 'configure'
        pos = @configure_string =~ /configure/
        @configure_string[pos+'configure'.size, 0] = ' --prefix='+new_prefix+' '
      else
        pos = @configure_string =~ /config/
        @configure_string[pos+'config'.size,0] = ' --prefix='+new_prefix+' '
      end
      # @configure_string = @configure_string.insert_after_nth_word(1,'--prefix='+new_prefix+' ')
    end
    set_prefix(new_prefix) # Finally call set_prefix() here.
  end
end

#prefix?Boolean Also known as: prefix

#

prefix?

for @prefix? Dont set this to an attr_*writer!

#

Returns:

  • (Boolean)


291
292
293
# File 'lib/rbt/misc/configure_string.rb', line 291

def prefix?
  @prefix
end

#prepend(this_string) ⇒ Object

#

prepend

This method will simply prepend data onto the @configure_string. It does NO sanity-checking whatsoever.

#


103
104
105
# File 'lib/rbt/misc/configure_string.rb', line 103

def prepend(this_string)
  @configure_string.prepend(this_string)
end

#resetObject

#

reset (reset tag)

#


41
42
43
44
# File 'lib/rbt/misc/configure_string.rb', line 41

def reset
  super()
  do_use_a_prefix
end

#runObject

#

run

#


339
340
341
342
343
344
# File 'lib/rbt/misc/configure_string.rb', line 339

def run
  set_target :default
  set_build
  set_host
  set_march
end

#sanitize_configure_stringObject Also known as: sanitize_again

#

sanitize_configure_string

This methods attempts to ensure that our string is correct. For this, it removes newlines and some other things that may crop up.

#


82
83
84
85
86
87
88
# File 'lib/rbt/misc/configure_string.rb', line 82

def sanitize_configure_string
  @configure_string.chomp!
  @configure_string.strip!
  @configure_string.squeeze!(' ')
  @configure_string.gsub!(/\n/, '')
  @configure_string.gsub!(/\.\/\.\//, './') # replace ././ with ./
end

#set_build(build_type = :linux) ⇒ Object

#

set_build

set_build :mac (build tag)

#


197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/rbt/misc/configure_string.rb', line 197

def set_build(
    build_type = :linux
  )
  case build_type
  when :x64, :cross_linux, :cross, :dualcore
    build_type = 'x86_64-pc-linux-gnu'
  when :linux
    build_type = 'i686-pc-linux-gnu'
  when :mac
    build_type = 'powerpc-apple'
  end
  append '--build="'+build_type+'"'
end

#set_configure_string(i) ⇒ Object Also known as: set_string, string=

#

set_configure_string

Use this method when setting @configure_string.

#


60
61
62
63
64
# File 'lib/rbt/misc/configure_string.rb', line 60

def set_configure_string(i)
  i = '' if i.nil?
  i = i.strip
  @configure_string = i
end

#set_host(host_type = :mingw) ⇒ Object

#

set_host

This sets the host type. It relies on symbols for special constructs.

#


131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/rbt/misc/configure_string.rb', line 131

def set_host(
    host_type = :mingw
  )
  case host_type
  when :mac
    host_type = 'powerpc-apple-darwin7.7.0'
  when :windows, :win, :mingw
    host_type = 'i686-pc-mingw32' # i586-mingw32msvc'      
  when :linux
    host_type = 'i586-pc-linux-gnu'
  when :old_linux
    host_type = 'i386-linux'
  end
  append '--host="'+host_type+'"'
end

#set_march(march_type = 'athlon-xp') ⇒ Object

#

set_march (march tag)

Remember that if march=arch is set then -mcpu=arch is also honored.

#


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

def set_march(
    march_type = 'athlon-xp'
  )
  case march_type.to_sym
  when :pentium # aktuellster. should always point to the most-recent pentium
    march_type = 'pentium4' # 7. x86 Generation
  when :middle_pentium
    march_type = 'pentium3'
  when :old_pentium # really old
    march_type = 'pentium2'
  when :Intel_Celeron_M
    march_type = 'pentium-m'
  when :amd
    march_type = 'athlon-xp'
  when :mp
    march_type = 'athlon-mp'
  when :athlon64
    march_type = 'athlon64'
  when :old
    march_type = 'i486'
  when :k6
    march_type = 'k6'
  when :default, :native
    march_type = 'native' # special march type 
  end
  append '--march="'+march_type+'"'
end

#set_prefix(i) ⇒ Object

#

set_prefix

#


93
94
95
# File 'lib/rbt/misc/configure_string.rb', line 93

def set_prefix(i)
  @prefix = i
end

#set_target(target_type = 'i686-pc-linux-gnu') ⇒ Object

#

set_target (target tag)

#


166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/rbt/misc/configure_string.rb', line 166

def set_target(
    target_type = 'i686-pc-linux-gnu'
  )
  case target_type
  when :default, :linux
    target_type = 'i686-pc-linux-gnu'
  when :windows
    target_type = 'i686-pc-mingw32'
  when :currentwindows, :current_windows
    target_type = 'i586-mingw32'
  when :oldwindows, :old_windows
    target_type = 'i386-mingw32'
  when :sparc
    target_type = 'sparc-linux'
  when :ppc, :powerpc
    target_type = 'powerpc-linux'
  else
    if target_type.to_s.empty?
      target_type = 'i686-pc-linux-gnu'
    else # else, the user has a clear idea what he wants
      # so we pass through here simply
    end
  end
  append '--target="'+target_type.to_s+'"'
end

#set_tune(tune_type = 'i686') ⇒ Object

#

set_tune

No idea yet …

#


216
217
218
219
220
221
222
# File 'lib/rbt/misc/configure_string.rb', line 216

def set_tune(tune_type = 'i686')
  case tune_type
  when :default
    tune_type = 'i686'
  end
  append '--tune="'+tune_type+'"'
end

#string?Boolean Also known as: string, _

#

string?

_() is an easier wrapper towards the @configure_string variable.

#

Returns:

  • (Boolean)


281
282
283
# File 'lib/rbt/misc/configure_string.rb', line 281

def string?
  @configure_string
end