pkgforge 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba97469eb9557bba0397186050b38efbaedb7128
4
- data.tar.gz: 42e2bda14d8590f5dde4c376c860fa3baaccc7e3
3
+ metadata.gz: 0b34c7a3460db065b8c5e94e081a834c9a041880
4
+ data.tar.gz: 3c0cedc6cdc960c04ec54f69687c31a8299d95a2
5
5
  SHA512:
6
- metadata.gz: e27d93da301f01552748751a2c289039fe88bfe4c9a132b7b501406af2f3da86234d0e28fb45b66b114f10422e4b9ab30a1079575dd5031ece2f80f473b5b7cc
7
- data.tar.gz: 3ff03d25d3e0b5ab08aa5ce409902d7ab0d57dbb5c2244eecb2cb0f5c405394d86d29cf039d3eea47d635b40529a4adbac439a6d0621ccf2069fd43ee452d960
6
+ metadata.gz: 63328dcf32afb5fb5eba434129d52068c2ada3922de743ed41d27242cd739c9e0d108997d2569a75157be9378a297ae785db84482eaf788ea382d5bd06b6045f
7
+ data.tar.gz: 0b403664b317fd60cbb08ddcc416143c6ca8e5d646e1fae85a68648513ed5809ebabfa911f690943b6f4a29b3dc9a1894796c130363962493655056acc70c77f
data/lib/pkgforge.rb CHANGED
@@ -8,6 +8,7 @@ require 'pkgforge/forge'
8
8
  require 'pkgforge/forgedsl'
9
9
  require 'pkgforge/builddsl'
10
10
  require 'pkgforge/testdsl'
11
+ require 'pkgforge/versiondsl'
11
12
 
12
13
  ##
13
14
  # DSL engine for compiling Arch packages
@@ -22,9 +22,13 @@ module PkgForge
22
22
 
23
23
  Contract None => nil
24
24
  def configure
25
- flag_strings = @forge.flags.map { |k, v| "--#{k}=#{v}" }
25
+ flag_strings = @forge.configure_flags.map do |flag, value|
26
+ "--#{flag}#{'=' if value}#{value}"
27
+ end
26
28
  env = {
27
- 'CC' => 'musl-gcc'
29
+ 'CC' => 'musl-gcc',
30
+ 'CFLAGS' => @forge.cflags,
31
+ 'LIBS' => @forge.libs
28
32
  }
29
33
  run ['./configure'] + flag_strings, env
30
34
  end
@@ -15,8 +15,9 @@ module PkgForge
15
15
  include PkgForge::Prepare
16
16
  include PkgForge::Push
17
17
 
18
- attr_accessor :name, :org, :deps, :flags, :version_block, :patches,
19
- :build_block, :test_block, :license
18
+ attr_accessor :name, :org, :deps, :configure_flags, :version_block,
19
+ :patches, :build_block, :test_block, :license, :cflags,
20
+ :libs
20
21
 
21
22
  Contract Maybe[HashOf[Symbol => Any]] => nil
22
23
  def initialize(params = {})
@@ -25,8 +26,8 @@ module PkgForge
25
26
  @deps = {}
26
27
  @flags = {}
27
28
  @patches = []
28
- @build_block = proc { fail('No build block provided') }
29
- @test_block = proc { fail('No test block provided') }
29
+ @build_block = proc { raise('No build block provided') }
30
+ @test_block = proc { raise('No test block provided') }
30
31
  nil
31
32
  end
32
33
 
@@ -33,12 +33,12 @@ module PkgForge
33
33
  end
34
34
 
35
35
  Contract HashOf[Symbol => String] => nil
36
- def flags(value)
37
- @forge.flags = value
36
+ def configure_flags(value)
37
+ @forge.configure_flags = value
38
38
  nil
39
39
  end
40
40
 
41
- Contract Func[None => String] => nil
41
+ Contract Func[None => Maybe[String]] => nil
42
42
  def version(&block)
43
43
  @forge.version_block = block
44
44
  nil
@@ -73,5 +73,19 @@ module PkgForge
73
73
  def dep(dep_name)
74
74
  @forge.dep(dep_name)
75
75
  end
76
+
77
+ Contract Maybe[String] => nil
78
+ def cflags(value = nil)
79
+ default = '-I%{dep}/usr/include -L%{dep}/usr/lib'
80
+ value ||= @forge.deps.map { |x, _| default % { dep: dep(x) } }.join(' ')
81
+ @forge.cflags = value
82
+ nil
83
+ end
84
+
85
+ Contract Maybe[String] => nil
86
+ def libs(value = nil)
87
+ value ||= @forge.deps.map { |x, _| '-l' + x }.join(' ')
88
+ @forge.libs = value
89
+ end
76
90
  end
77
91
  end
@@ -55,7 +55,9 @@ module PkgForge
55
55
 
56
56
  Contract None => String
57
57
  def version
58
- @version ||= Dir.chdir(tmpdir(:build)) { version_block.call }
58
+ @version ||= Dir.chdir(tmpdir(:build)) do
59
+ VersionDSL.new(self).instance_eval(&version_block)
60
+ end
59
61
  end
60
62
 
61
63
  Contract None => Num
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Declare version number
3
3
  module PkgForge
4
- VERSION = '0.0.8'.freeze
4
+ VERSION = '0.0.9'.freeze
5
5
  end
@@ -0,0 +1,23 @@
1
+ module PkgForge
2
+ ##
3
+ # Version engine
4
+ class VersionDSL
5
+ include Contracts::Core
6
+ include Contracts::Builtin
7
+
8
+ Contract PkgForge::Forge => nil
9
+ def initialize(forge)
10
+ @forge = forge
11
+ nil
12
+ end
13
+
14
+ private
15
+
16
+ Contract Maybe[Regexp], Maybe[String] => String
17
+ def git_tag(regex = nil, replace = '\1')
18
+ tag = `git describe --tags`.rstrip
19
+ tag.gsub!(regex, replace) if regex
20
+ tag
21
+ end
22
+ end
23
+ end
data/pkgforge.gemspec CHANGED
@@ -24,5 +24,5 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency 'rake', '~> 11.2.0'
25
25
  s.add_development_dependency 'codecov', '~> 0.1.1'
26
26
  s.add_development_dependency 'rspec', '~> 3.5.0'
27
- s.add_development_dependency 'fuubar', '~> 2.1.0'
27
+ s.add_development_dependency 'fuubar', '~> 2.2.0'
28
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkgforge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-22 00:00:00.000000000 Z
11
+ date: 2016-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.1.0
103
+ version: 2.2.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.1.0
110
+ version: 2.2.0
111
111
  description: DSL engine for building Arch packages
112
112
  email: me@lesaker.org
113
113
  executables:
@@ -135,6 +135,7 @@ files:
135
135
  - lib/pkgforge/push.rb
136
136
  - lib/pkgforge/testdsl.rb
137
137
  - lib/pkgforge/version.rb
138
+ - lib/pkgforge/versiondsl.rb
138
139
  - pkgforge.gemspec
139
140
  - spec/pkgforge_spec.rb
140
141
  - spec/spec_helper.rb