Class: RBT::Linux::Gobolinux::CreateRecipe
- Inherits:
-
Base
show all
- Defined in:
- lib/rbt/linux/gobolinux/create_recipe.rb
Overview
RBT::Linux::Gobolinux::CreateRecipe
Constant Summary
collapse
- USE_THIS_GOBOLINUX_COMPILE_VERSION =
#
USE_THIS_GOBOLINUX_COMPILE_VERSION
Which gobolinux-compile version to use. Currently this is hardcoded.
On GoboLinux, we could probably determine the “Compile –version”.
#
'2.0'
RBT::LeanPrototype::ALL_COLOUR_METHODS, RBT::LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, RBT::LeanPrototype::DAY_NAMES, RBT::LeanPrototype::NAMESPACE, RBT::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_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(i = ARGV, run_already = true) ⇒ CreateRecipe
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 57
def initialize(
i = ARGV,
run_already = true
)
reset
set_this_program(i)
if block_given?
yielded = yield
case yielded
when :store_in_alphanumeric_subdirectory
use_this_first_character = @this_program[0,1].dup
@store_in_this_base_directory << use_this_first_character+'/'
end
end
run if run_already
end
|
Instance Method Details
#add(i = N) ⇒ Object
266
267
268
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 266
def add(i = N)
@main_string << i
end
|
332
333
334
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 332
def configure_options?
@dataset.configure_options? end
|
#consider_appending_more_stuff ⇒ Object
#
consider_appending_more_stuff
Add some more exceptions and so forth.
#
321
322
323
324
325
326
327
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 321
def consider_appending_more_stuff
if coptions?.include? '--enable-udev'
add 'with_udev=('+N
add ' --enable-udev'+N
add ')'
end
end
|
#create_directory_skeleton ⇒ Object
#
create_directory_skeleton
This method will create the required directories and files to accomodate a gobolinux recipe.
#
357
358
359
360
361
362
363
364
365
366
367
368
369
370
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 357
def create_directory_skeleton
_ = temporary_base_dir?+name_of_the_program+'-'+version?+'/'
mkdir _
opnn; touch rds(_+'/Recipe'), :be_verbose
mkdir rds(_+'/Resources/')
opnn; touch rds(_+'/Resources/BuildDependencies'), :be_verbose
opnn; touch rds(_+'/Resources/BuildInformation'), :be_verbose
opnn; touch rds(_+'/Resources/Dependencies'), :be_verbose
opnn; touch rds(_+'/Resources/Description'), :be_verbose
opnn; touch rds(_+'/Resources/Environment'), :be_verbose populate_description_file
populate_dependencies_file
populate_recipe_file end
|
#dataset? ⇒ Boolean
191
192
193
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 191
def dataset?
@dataset
end
|
#dependencies? ⇒ Boolean
239
240
241
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 239
def dependencies?
@dataset.required_deps_on? end
|
#description? ⇒ Boolean
421
422
423
424
425
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 421
def description?
_ = @dataset.description?.delete(N)
_ = word_wrap(_, 68) return _
end
|
#has_a_homepage_url? ⇒ Boolean
#
has_a_homepage_url?
Query whether the program has a registered homepage url.
#
407
408
409
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 407
def has_a_homepage_url?
homepage_url?
end
|
#homepage_url? ⇒ Boolean
414
415
416
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 414
def homepage_url?
@dataset.homepage?
end
|
#licence? ⇒ Boolean
Also known as:
license?
212
213
214
215
216
217
218
219
220
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 212
def licence?
_ = @dataset.licence?.to_s
_ = 'GNU GPL 2' if _ == 'GPLv2'
return _
end
|
#notify_the_user_what_we_will_do ⇒ Object
#
notify_the_user_what_we_will_do
#
159
160
161
162
163
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 159
def notify_the_user_what_we_will_do
_ = program?
opne "We will next create a gobolinux-recipe for the "\
"program #{simp(_)}."
end
|
#pad_with_quotes(i) ⇒ Object
246
247
248
249
250
251
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 246
def pad_with_quotes(i)
unless i.include? '"'
i = '"'+i+'"'
end
return i
end
|
#path? ⇒ Boolean
Also known as:
path
198
199
200
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 198
def path?
dataset?.program_path?
end
|
#populate_dependencies_file ⇒ Object
#
populate_dependencies_file
#
430
431
432
433
434
435
436
437
438
439
440
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 430
def populate_dependencies_file
_ = ''.dup
dependencies = dependencies?
if dependencies
dependencies.each {|dep|
_ << dep+N
}
into = @store_in_this_base_directory+program_name_and_version+'/Resources/Dependencies'
write_what_into(_, into)
end
end
|
#populate_description_file(i = program_name?
) ⇒ Object
#
populate_description_file
This method will generate a (hopefully) valid GoboLinux Recipe description file. This file resides in the subdirectory Resources/ hierarchy.
For examples of such a file in use by GoboLinux, have a look at:
http://recipes.gobolinux.org/r/?list=LibDRM&ver=2.4.80-r1&file=Resources/Description
http://recipes.gobolinux.org/r/?list=ZzipLib&ver=0.13.58-r1&file=Resources/Description
#
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 385
def populate_description_file(
i = program_name?
)
_ = ''.dup
_ << '[Name] '+return_gobolinux_name_for_this_program(i)+N _ << '[Summary] '+short_desc?+N
_ << '[Description] '+description?.rstrip+N _ << '[License] '+license?+N
if has_a_homepage_url?
_ << '[Homepage] '+homepage_url?+N
else _ << '[Homepage] '+url2+N
end
into = @store_in_this_base_directory+program_name_and_version+'/Resources/Description'
write_what_into(_, into)
end
|
#populate_recipe_file ⇒ Object
#
populate_recipe_file (recipe tag)
#
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
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 273
def populate_recipe_file
add ''.dup
add '# Recipe for version '+return_version+', author email: '+email?+N
add '# (autogenerated via the file create_recipe.rb)'+N
add '# Recipe (MakeRecipe) for '+return_gobolinux_name+N+N
add "compile_version=#{USE_THIS_GOBOLINUX_COMPILE_VERSION}#{N}"
add 'url='+pad_with_quotes(url1)+N
add 'file_size='+return_file_size.to_s+N
add 'file_md5='+return_md5sum.to_s+N
add 'recipe_type=configure'+N
add return_symlink_options
coptions = configure_options?
unless coptions.empty? add 'configure_options=('+N
coptions.squeeze(' ').split(' ').each {|inner_coption|
unless inner_coption.include? '--enable-udev'
unless inner_coption.start_with? '--'
inner_coption.prepend('--')
end
add ' '+inner_coption+N
end
}
add ')'+N
end
consider_appending_more_stuff
into = @store_in_this_base_directory+program_name_and_version+'/Recipe'
write_what_into(@main_string, into)
end
|
#program_name_and_version ⇒ Object
#
program_name_and_version
#
205
206
207
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 205
def program_name_and_version
name_of_the_program+'-'+version?
end
|
#reset ⇒ Object
84
85
86
87
88
89
90
91
92
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 84
def reset
super()
infer_the_namespace
@main_string = ''.dup
set_store_in_this_base_directory
end
|
#return_file_size ⇒ Object
168
169
170
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 168
def return_file_size
@dataset.file_size?
end
|
#return_gobolinux_name(i = @this_program) ⇒ Object
Also known as:
return_gobolinux_name_for_this_program
#
return_gobolinux_name
This method will return the GoboLinux name. It will make use of the class GobolinuxNamingConvention.
#
152
153
154
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 152
def return_gobolinux_name(i = @this_program)
::RBT.return_gobolinux_name(i)
end
|
#return_md5sum(i = path) ⇒ Object
#
return_md5sum
Here we need to keep in mind that the target path may not exist.
#
177
178
179
180
181
182
183
184
185
186
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 177
def return_md5sum(i = path)
if File.exist? i
result = `md5sum #{i}`.split(' ').first
result.chomp
else
opne swarn('No target file at `')+sfile(i)+
swarn('`. We will continue nonetheless.')
'0' end
end
|
#return_symlink_options ⇒ Object
#
return_symlink_options
I assume that this will cause SymlinkProgram to overwrite, in case there is a conflict.
#
259
260
261
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 259
def return_symlink_options
'symlink_options=(--conflict=overwrite)'+N
end
|
#run ⇒ Object
445
446
447
448
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 445
def run
notify_the_user_what_we_will_do
create_directory_skeleton
end
|
#set_dataset(i = @this_program) ⇒ Object
132
133
134
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 132
def set_dataset(i = @this_program)
@dataset = action(:SanitizeCookbook, i) { :fast }
end
|
#set_store_in_this_base_directory(i = Dir.pwd) ⇒ Object
#
set_store_in_this_base_directory
This method will keep track as to where to store the recipe - the base directory.
#
107
108
109
110
111
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 107
def set_store_in_this_base_directory(i = Dir.pwd)
i = i.dup if i.frozen?
i << '/' unless i.end_with? '/'
@store_in_this_base_directory = i
end
|
#set_this_program(i) ⇒ Object
116
117
118
119
120
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 116
def set_this_program(i)
i = i.first if i.is_a? Array
@this_program = i
set_dataset
end
|
#short_desc? ⇒ Boolean
#
short_desc?
Wrapper over the short_description of a program.
#
341
342
343
344
345
346
347
348
349
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 341
def short_desc?
_ = @dataset.short_description?.to_s
if _.size > 68
_ = word_wrap(_, 68)
end
_.chomp!
_.strip!
return _
end
|
#temporary_base_dir? ⇒ Boolean
97
98
99
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 97
def temporary_base_dir?
@store_in_this_base_directory
end
|
#this_program? ⇒ Boolean
Also known as:
this_program, program?, name_of_the_program, program_name?
139
140
141
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 139
def this_program?
@this_program
end
|
#url1 ⇒ Object
225
226
227
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 225
def url1
@dataset.url1?.to_s
end
|
#url2 ⇒ Object
232
233
234
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 232
def url2
@dataset.url2?.to_s
end
|
#version? ⇒ Boolean
Also known as:
return_version
125
126
127
|
# File 'lib/rbt/linux/gobolinux/create_recipe.rb', line 125
def version?
@dataset.program_version?
end
|