nix-rpg-build 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 583655e080ef092848f7d83ec2e6e85ef625eb9e
4
+ data.tar.gz: c5361914e7642e2e649422d345b5ac7566c96e55
5
+ SHA512:
6
+ metadata.gz: a0ab119a8dc723f0fe0a75901517fc32d567d25e3b74aea806fda801e158dfcb5e3dd03b0ab8ab2fac8177f7ecd9a481e099a42021c6e58888c3022e49006271
7
+ data.tar.gz: 46ed43169b98bd761482103f671188e0ad04b018bc731c4f2a5eddb9dc2e07f3915bf027be9c37b8069a0bb3c27dfdadfc4dfefc3f7cb9efe230f85251c27f2a
data/lib/build.rb ADDED
@@ -0,0 +1,94 @@
1
+ require 'yaml'
2
+
3
+ module NixRPGBuild
4
+ class Build
5
+ # Returns a hash read in from the configuration YAML file.
6
+ attr_reader :hash
7
+ # Returns a hash for the YAML key config_out used to get data for
8
+ # configuration output data such as binaries, version numbers, package URLs,
9
+ # and bug report URLs.
10
+ attr_reader :config_out
11
+ # Returns an array for the YAML key c_flags used to get data for compiler flags.
12
+ attr_reader :c_flags
13
+ # Returns an array for the YAML key pkg_config used to get data for packages that
14
+ # the software depends.
15
+ attr_reader :pkg_config
16
+ # Returns a string with the name of the header file with the configuration macros.
17
+ attr_reader :config_header
18
+ # Returns a hash for the YAML key complier_opts used to get data for compiler options.
19
+ # including the complier being used(gcc, clang etc.).
20
+ attr_reader :complier_opts
21
+
22
+ # A hash with a value that is an array to binaries.
23
+ # @see Build#config_out
24
+ attr_reader :bins
25
+ # A hash with a value that is an array to versions numbers of the binaries.
26
+ # @see Build#config_out
27
+ attr_reader :versions
28
+ # A hash with a value that is an array to package urls of the binaries.
29
+ # @see Build#config_out
30
+ attr_reader :package_urls
31
+ # A hash with a value that is an array to issues urls of the binaries.
32
+ # @see Build#config_out
33
+ attr_reader :issues_urls
34
+
35
+ # A hash with a value that is an array to pkg-config libs & flags.
36
+ # @see Build#complier_opts
37
+ attr_reader :pkgc
38
+ # A hash with a value that is an array to include header files.
39
+ # @see Build#complier_opts
40
+ attr_reader :include
41
+ # A hash with a value that is an array to libs.
42
+ # @see Build#complier_opts
43
+ attr_reader :libs
44
+ # A hash with a value that is an array to source code path.
45
+ # @see Build#complier_opts
46
+ attr_reader :src
47
+
48
+ # Executes a system command. It returns true if the command is succesful.
49
+ # It returns false if the command execution fails or gets a non zero exit
50
+ # status. If the former is true then the exit status in the built in global
51
+ # variable $? is printed to stdout. $? is either nil or Process::Status and
52
+ # in this case it will be Process::Status so it can used as needed following
53
+ # a failed execution.
54
+ #
55
+ # @param exec_str [String] the system command string.
56
+ # @return [Bool] true or false.
57
+ def self.exec(exec_str)
58
+ status = system(exec_str)
59
+
60
+ case status
61
+ when nil
62
+ puts $?
63
+ return false
64
+ when false
65
+ return status
66
+ else
67
+ return true
68
+ end
69
+ end
70
+
71
+ def initialize(config_yml)
72
+ output = File.new(config_yml, 'r')
73
+ @hash = YAML.load(output.read)
74
+ output.close
75
+
76
+ @config_out = @hash["config_out"]
77
+ @c_flags = @hash["c_flags"]
78
+ @config_header = @hash["config_header"]
79
+ @pkg_config = @hash["pkg_config"]
80
+ @config_files = @hash["config_files"]
81
+ @complier_opts = @hash["complier_opts"]
82
+
83
+ @bins = @config_out["bins"]
84
+ @versions = @config_out["versions"]
85
+ @package_urls = @config_out["package_urls"]
86
+ @issues_urls = @config_out["issues_urls"]
87
+
88
+ @pkgc = @complier_opts["pkg_config"]
89
+ @include = @complier_opts["include"]
90
+ @libs = @complier_opts["libs"]
91
+ @src = @complier_opts["src"]
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,125 @@
1
+ module NixRPGBuild
2
+ class Config_Build < Build
3
+ # The string with the compiler options.
4
+ attr_reader :build_str
5
+ # If true(default) then -g is passed into #build_str to include debuging data.
6
+ # So it can be used with GDB for debugging.
7
+ attr_accessor :debug_mode
8
+ def initialize(config_yml)
9
+ super(config_yml)
10
+
11
+ @build_str = "gcc "
12
+ @debug_mode = true
13
+ end
14
+
15
+ # If complier_opts includes the the passed in key than is yields what
16
+ # whatever is in the code block.
17
+ #
18
+ # @param key [String] complier_opts key to test.
19
+ # @yield [] Actions to follow .
20
+ # @return [Nil]
21
+ def if_include(key)
22
+ yield if @complier_opts.keys.include?(key)
23
+ end
24
+
25
+ # Sets each C flag to build_str from c_flags.
26
+ #
27
+ # @return [Nil]
28
+ # @see Build#c_flags
29
+ # @see #build_str
30
+ def set_c_flags
31
+ @c_flags.each do |i|
32
+ build_str.concat("#{i}\s")
33
+ end
34
+
35
+ nil
36
+ end
37
+
38
+ # Sets each include path to build_str from c_flags.
39
+ #
40
+ # @return [Nil]
41
+ # @see Build#include
42
+ # @see #build_str
43
+ def set_include_paths
44
+ if_include("include") do
45
+ inc = 0
46
+
47
+ @include.each do |l|
48
+ build_str.concat("-I"+@include[inc] + "\s")
49
+ inc += 1
50
+ end
51
+ end
52
+
53
+ nil
54
+ end
55
+
56
+ # Sets a source path to build_str from src.
57
+ #
58
+ # @param src_index [Fixnum] the source in the src array.
59
+ # @return [Nil]
60
+ # @see Build#src
61
+ # @see #build_str
62
+ def set_src_path(src_index)
63
+ if debug_mode
64
+ build_str.concat("-g #{@src[src_index]} -o\s")
65
+ else
66
+ build_str.concat("#{@src[src_index]} -o\s")
67
+ end
68
+
69
+ nil
70
+ end
71
+
72
+ # Sets an output(executable/binary) to build_str from @bins.
73
+ #
74
+ # @param bins_index [Fixnum] the binary in the bins array.
75
+ # @return [Nil]
76
+ # @see Build#bins
77
+ # @see #build_str
78
+ def set_output(bins_index)
79
+ build_str.concat("#{@bins[bins_index]}\s")
80
+
81
+ nil
82
+ end
83
+
84
+ # Sets each library to build_str from libs.
85
+ #
86
+ # @return [Nil]
87
+ # @see Build#libs
88
+ # @see #build_str
89
+ def set_libs
90
+ if_include("libs") do
91
+ inc = 0
92
+
93
+ @libs.each do |l|
94
+ if l.include?(".a") || l.include?(".so")
95
+ build_str.concat(@libs[inc] + "\s")
96
+ else
97
+ build_str.concat("-l"+@libs[inc] + "\s")
98
+ end
99
+ inc += 1
100
+ end
101
+ end
102
+
103
+ nil
104
+ end
105
+
106
+ # Sets each package to build_str from pkgc.
107
+ #
108
+ # @return [Nil]
109
+ # @see Build#pkgc
110
+ # @see #build_str
111
+ def set_pkg_config
112
+ if_include("pkg_config") do
113
+ build_str.concat("`pkg-config --cflags --libs ")
114
+
115
+ @pkgc.each do |p|
116
+ build_str.concat("#{p}" + "\s")
117
+ end
118
+
119
+ build_str.concat "`"
120
+ end
121
+
122
+ nil
123
+ end
124
+ end
125
+ end
data/lib/header.rb ADDED
@@ -0,0 +1,39 @@
1
+ module NixRPGBuild
2
+ class Header < Build
3
+ # An array of macros to write to the configuration header file.
4
+ attr_accessor :macros
5
+ def initialize(config_yml)
6
+ super(config_yml)
7
+ @macros = []
8
+ end
9
+
10
+ # Writes a configuration header file.
11
+ #
12
+ # @return [Nil]
13
+ def write
14
+ @header = File.new(@config_header, 'w')
15
+
16
+ @bins.each_index do |i|
17
+ @header.puts "/* Name of package */"
18
+ @header.puts "#define " + @macros[i] + "\s" + "\"#{@bins[i]}\"\n\n"
19
+ end
20
+
21
+ @versions.each_index do |i|
22
+ @header.puts "/* Version number of package */"
23
+ @header.puts "#define " + @macros[i] + "_VERSION" + "\s" + "\"#{@versions[i]}\"\n\n"
24
+ end
25
+
26
+ @package_urls.each_index do |i|
27
+ @header.puts "/* The home page for this package. */"
28
+ @header.puts "#define " + @macros[i] + "_PKG_URL" + "\s" + "\"#{@package_urls[i]}\"\n\n"
29
+ end
30
+
31
+ @issues_urls.each_index do |i|
32
+ @header.puts "/* The address where bug reports for this package should be sent. */"
33
+ @header.puts "#define " + @macros[i] + "_ISSUES_URL" + "\s" + "\"#{@issues_urls[i]}\"\n\n"
34
+ end
35
+
36
+ @header.close
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,5 @@
1
+ require_relative "version"
2
+ require_relative "build"
3
+ require_relative "header"
4
+ require_relative "config_build"
5
+ require_relative "scanner"
data/lib/scanner.rb ADDED
@@ -0,0 +1,26 @@
1
+ module NixRPGBuild
2
+ class Scanner < Build
3
+ def initialize(config_yml)
4
+ super(config_yml)
5
+
6
+ @pkg_name = []
7
+ end
8
+
9
+ # Checks the system for packages needed as dependencies. It uses pkg-config
10
+ # to do this.
11
+ #
12
+ # @return [Nil]
13
+ def scan
14
+ @pkg_config.each do |i|
15
+ puts "checking for #{i}"
16
+ @pkg_name.push(i)
17
+ end
18
+
19
+ @pkg_name.each do |i|
20
+ Build.exec("pkg-config --print-errors --exists '#{i}'")
21
+ end
22
+
23
+ nil
24
+ end
25
+ end
26
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module NixRPGBuild
2
+ VERSION = "0.5.0"
3
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nix-rpg-build
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Ralph Desir(Mav7)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.9'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.9.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.9'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.9.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ description: A gem for implementing A build system for nix-rpg.
48
+ email: gehirnmav7@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/build.rb
54
+ - lib/config_build.rb
55
+ - lib/header.rb
56
+ - lib/nix_rpg_build.rb
57
+ - lib/scanner.rb
58
+ - lib/version.rb
59
+ homepage:
60
+ licenses:
61
+ - GPL-2.0
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 2.5.1
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: A build system for nix-rpg.
83
+ test_files: []