Class: RBT::Cmake
Overview
Constant Summary
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
#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, #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(use_this_prefix = :guess_prefix, run_already = true, &block) ⇒ Cmake
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/rbt/cmake/cmake.rb', line 50
def initialize(
use_this_prefix = :guess_prefix,
run_already = true,
&block
)
reset
case use_this_prefix
when :do_not_run_yet
run_already = false
use_this_prefix = :guess_prefix
end
case run_already
when :do_not_run_yet
run_already = false
end
set_use_this_prefix(use_this_prefix)
set_base_directory
if block_given?
yielded = yield
if yielded.is_a?(Symbol)
case yielded
when :colourized_and_padded
@use_extra_padding_for_the_system_command = true
else
e tomato("Not found the following symbol: :#{yielded}")
end
elsif yielded.is_a?(Hash)
set_parent_object(yielded[:self]) if yielded.has_key? :self
set_use_opn(yielded[:use_opn]) if yielded.has_key? :use_opn
else
set_parent_object(yielded)
end
end
run if run_already
end
|
Instance Method Details
#append(i) ⇒ Object
#
append
This method will simply append data onto the @cmake_string.
NO checking involved, so call it only when you are sure that you want to add this.
Use this method and ONLY this method when you wish to extend the @cmake_string.
#
225
226
227
228
229
|
# File 'lib/rbt/cmake/cmake.rb', line 225
def append(i)
@cmake_string << " #{i}"
@cmake_string.strip! @cmake_string.squeeze!(' ')
end
|
#append_base_directory ⇒ Object
Also known as:
add_prefix
#
append_base_directory
#
273
274
275
|
# File 'lib/rbt/cmake/cmake.rb', line 273
def append_base_directory
append @base_directory
end
|
#check_if_cmake_is_available(may_we_exit = @may_we_exit) ⇒ Object
Also known as:
cmake_is_available?
#
check_if_cmake_is_available
We must find out whether cmake is available or not.
If it is not available, we must exit, but only if the argument provided allows us to do this.
#
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
|
# File 'lib/rbt/cmake/cmake.rb', line 285
def check_if_cmake_is_available(
may_we_exit = @may_we_exit
)
case may_we_exit
when :do_not_exit
may_we_exit = false
end
_ = `cmake 2>&1`
if _.include? 'not found'
opne swarn('Cmake is not available. Please install `cmake` first.')
if may_we_exit
opnwarn 'Exiting now.'
exit
end
return false
else
return true
end
end
|
#check_if_cmakelists_file_exists?(where = Dir.pwd) ⇒ Boolean
#
check_if_cmakelists_file_exists?
This method checks if a CMakeLists.txt file exists.
#
189
190
191
192
193
194
195
|
# File 'lib/rbt/cmake/cmake.rb', line 189
def check_if_cmakelists_file_exists?(where = Dir.pwd)
if File.exist? where+'/CMakeLists.txt'
true
else
false
end
end
|
#cmake_string? ⇒ Boolean
Also known as:
cmake_string, return_configure_command_that_was_used, string
382
383
384
|
# File 'lib/rbt/cmake/cmake.rb', line 382
def cmake_string? @cmake_string
end
|
#create_cmake_file_add_subdirectory(name) ⇒ Object
#
create_cmake_file_add_subdirectory
From this point on we list only methods which are to be used to create a cmake file. These should one day be used to automatically create a cmake project.
#
204
205
|
# File 'lib/rbt/cmake/cmake.rb', line 204
def create_cmake_file_add_subdirectory(name)
end
|
#guess_prefix(of_this_dir = return_pwd) ⇒ Object
Also known as:
prefix?, guess_prefix?
#
guess_prefix
The argument ‘of_this_dir` passed to this method should include a ’-‘.
guess_prefix will simply return the new prefix.
#
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# File 'lib/rbt/cmake/cmake.rb', line 169
def guess_prefix(
of_this_dir = return_pwd
)
basename = File.basename(of_this_dir)
basename = of_this_dir.split('-') if of_this_dir.include? '-'
_ = programs_dir?.dup
if of_this_dir.include? '-'
_ << File.basename(basename.first).capitalize+'/'+basename[1]
else
_ << basename
end
return _
end
|
#has_been_run? ⇒ Boolean
352
353
354
|
# File 'lib/rbt/cmake/cmake.rb', line 352
def has_been_run?
@has_been_run
end
|
#notify_the_user_which_command_we_will_run ⇒ Object
Also known as:
verbose_run_the_actual_system_command
#
notify_the_user_which_command_we_will_run
This useful method will notify the user which specific command will be run.
#
408
409
410
411
412
413
414
415
416
|
# File 'lib/rbt/cmake/cmake.rb', line 408
def notify_the_user_which_command_we_will_run
orev "Running the following command "\
"from #{sdir(@current_directory)}#{rev}:"
e if @use_extra_padding_for_the_system_command
e cornflowerblue(" #{@cmake_string}")
e if @use_extra_padding_for_the_system_command
run_this_system_command_via_io_popen(@cmake_string)
@has_been_run = true end
|
#opnn ⇒ Object
308
309
310
|
# File 'lib/rbt/cmake/cmake.rb', line 308
def opnn
super(namespace?) if use_opn?
end
|
#prepend(i) ⇒ Object
#
prepend
This will prepend to the cmake string. Best way to use this is via the prefix variable.
#
237
238
239
240
241
242
243
244
245
246
247
248
249
|
# File 'lib/rbt/cmake/cmake.rb', line 237
def prepend(i)
if @cmake_string.include? 'cmake'
start_position = @cmake_string.index('cmake')+('cmake'.size)
@cmake_string[start_position,0] = ' '+i
else
@cmake_string.prepend(" #{i}")
end
@cmake_string.strip! @cmake_string.squeeze!(' ')
end
|
#reset ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/rbt/cmake/cmake.rb', line 101
def reset
super()
infer_the_namespace
@current_directory = return_pwd
@cmake_string = 'cmake'.dup
@may_we_exit = false
@parent_object = nil
@has_been_run = false
@use_opn = true
@use_extra_padding_for_the_system_command = false
set_base_directory(temp_directory?)
end
|
#run ⇒ Object
#
run
If you need some examples for a proper cmake string, have a look:
cmake . -DCMAKE_INSTALL_PREFIX=$MY_TEMP/install_test
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
#
436
437
438
439
440
|
# File 'lib/rbt/cmake/cmake.rb', line 436
def run
check_if_cmake_is_available
prepend(use_this_prefix?)
notify_the_user_which_command_we_will_run
end
|
#run_full(also_run_make_and_make_install = false, full_prefix = prefix?
) ⇒ Object
#
run_full
This method will also run “make” and “make install”.
Afterwards, it will invoke CreateProgram, and then AdvancedSymlink.
You probably won’t need this method if you use this class here as part of RBT, but in the event that you also wish to call this class standalone, this code should suffice.
Since Aug 2011 we use the variable @base_directory.
#
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/cmake/cmake.rb', line 325
def run_full(
also_run_make_and_make_install = false,
full_prefix = prefix?
)
append_base_directory
run
if also_run_make_and_make_install
run_make_command
run_make_install_command
create_program = action(:app_dir_skeleton, full_prefix)
create_program.create_the_directories
@advanced_symlink = RBT::AdvancedSymlink.new(full_prefix)
end
end
|
#run_make_command ⇒ Object
391
392
393
|
# File 'lib/rbt/cmake/cmake.rb', line 391
def run_make_command
run_this_system_command_via_io_popen 'make'+ERROR_LINE
end
|
#run_make_install_command ⇒ Object
#
run_make_install_command
#
398
399
400
|
# File 'lib/rbt/cmake/cmake.rb', line 398
def run_make_install_command
run_this_system_command_via_io_popen 'make install'+ERROR_LINE
end
|
#run_this_system_command_via_io_popen(i) ⇒ Object
#
run_this_system_command_via_io_popen
#
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
|
# File 'lib/rbt/cmake/cmake.rb', line 359
def run_this_system_command_via_io_popen(i)
io_object = IO.popen(i, {:err => [:child, :out]}).each { |line|
if @parent_object
@parent_object.parse_this_line_obtained_via_io_popen(line)
else
if RBT.const_defined? :ColourizeParser
line = ColourizeParser.parse_this_line(line)
end
e line
end
}
io_object.close
end
|
#set_base_directory(i = ' .') ⇒ Object
#
set_base_directory
The method set_base_directory sets the variable @base_directory to use. By default, it uses ‘ .’ as its target.
#
257
258
259
260
261
|
# File 'lib/rbt/cmake/cmake.rb', line 257
def set_base_directory(
i = ' .'
)
@base_directory = i
end
|
#
This method can be specifically used from the outside.
#
423
424
425
|
# File 'lib/rbt/cmake/cmake.rb', line 423
def set_full_configure_line(i)
@cmake_string = i
end
|
#set_may_we_exit ⇒ Object
210
211
212
|
# File 'lib/rbt/cmake/cmake.rb', line 210
def set_may_we_exit
@may_we_exit = true end
|
#set_parent_object(i = nil) ⇒ Object
#
set_parent_object
The parent object, presently, may only be of class RBT::Action::Installer or it is simply nil.
#
135
136
137
|
# File 'lib/rbt/cmake/cmake.rb', line 135
def set_parent_object(i = nil)
@parent_object = i
end
|
#set_use_this_prefix(i) ⇒ Object
Also known as:
set_prefix
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'lib/rbt/cmake/cmake.rb', line 142
def set_use_this_prefix(i)
case i
when :guess,
:guess_prefix
i = guess_prefix
end
_ = " -DCMAKE_INSTALL_PREFIX=#{i}"
@use_this_prefix = _
end
|
#use_this_prefix? ⇒ Boolean
158
159
160
|
# File 'lib/rbt/cmake/cmake.rb', line 158
def use_this_prefix?
@use_this_prefix
end
|
#we_use_a_build_directory ⇒ Object
#
we_use_a_build_directory
#
266
267
268
|
# File 'lib/rbt/cmake/cmake.rb', line 266
def we_use_a_build_directory
set_base_directory(' ..')
end
|