pkgforge 0.2.0 → 0.2.1

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: ac90e273bc0303e88e4f525c7d853a1ad67ddd2c
4
- data.tar.gz: 02060d0ace973d3174ca67e453236677b5973a21
3
+ metadata.gz: c16805362110e03411e169346b7681ac5ae3194c
4
+ data.tar.gz: 59482c2a3441d6b0859cea95eb3861edb04d74cb
5
5
  SHA512:
6
- metadata.gz: 9f29266946b37986f13702574ddfd920aed6564f42e4ee5b1f406a794b9d6cbac3bae1fba02d86407d4de65006ac85cfbb4e27c09de792f7463c5a4af147971d
7
- data.tar.gz: fb6f0542af36377911148c6d96fa6c5b7eff128a6ecc548d2219a1158df735c0f2099e6b4e6ef72efda5f6d2b7bbef55cd12e3f7d5857688a533310f73d0d94b
6
+ metadata.gz: eafb1a937ba14493b98900bac9ebf8890b696b91bb1412e9f4d1cb24441fe52283b966dbb8f17317c907205ac2867370441080a621a21d66af21c4f5a16955c1
7
+ data.tar.gz: c24bd85a4a0e613651cadb8ef859c0da7af9b0d5b474d0827b47d8cb7c6c7a886ff0f6b13e6dec930dbf7413cc08e7ec15082924f618c3290d810431e4fc3bf5
@@ -27,7 +27,8 @@ module PkgForge
27
27
  end
28
28
  env = {
29
29
  'CC' => 'musl-gcc',
30
- 'CFLAGS' => @forge.cflags,
30
+ 'CFLAGS' => @forge.all_cflags,
31
+ 'LDFLAGS' => @forge.all_cflags,
31
32
  'LIBS' => @forge.libs
32
33
  }
33
34
  run ['./configure'] + flag_strings, env
@@ -17,7 +17,7 @@ module PkgForge
17
17
 
18
18
  attr_accessor :name, :org, :deps, :configure_flags, :version_block,
19
19
  :patches, :build_block, :test_block, :license, :cflags,
20
- :libs
20
+ :libs, :harden_flags
21
21
 
22
22
  Contract Maybe[HashOf[Symbol => Any]] => nil
23
23
  def initialize(params = {})
@@ -77,15 +77,34 @@ module PkgForge
77
77
  Contract Maybe[String] => nil
78
78
  def cflags(value = nil)
79
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
80
+ value ||= @forge.deps.map { |x, _| default % { dep: dep(x) }.split }
81
+ @forge.cflags = value.flatten
82
82
  nil
83
83
  end
84
84
 
85
85
  Contract Maybe[String] => nil
86
86
  def libs(value = nil)
87
- value ||= @forge.deps.map { |x, _| '-l' + x }.join(' ')
87
+ value ||= @forge.deps.map { |x, _| '-l' + x }
88
88
  @forge.libs = value
89
+ nil
90
+ end
91
+
92
+ # hamelessly sourced from:
93
+ # https://blog.mayflower.de/5800-Hardening-Compiler-Flags-for-NixOS.html
94
+ HARDEN_OPTS = {
95
+ format: %w(-Wformat -Wformat-security -Werror=format-security),
96
+ stackprotector: %w(-fstack-protector-strong --param ssp-buffer-size=4),
97
+ fortify: %w(-O2 -D_FORTIFY_SOURCE=2),
98
+ pic: '-fPIC',
99
+ strictoverflow: '-fno-strict-overflow',
100
+ relro: '-z=relro',
101
+ bindnow: '-z=bindnow',
102
+ pie: %w(-fPIE -pie)
103
+ }.freeze
104
+
105
+ Contract Maybe[Array[String]] => nil
106
+ def harden(list = [])
107
+ @forge.harden_flags = HARDEN_OPTS.reject { |k, _| list.include? k.to_s }
89
108
  end
90
109
  end
91
110
  end
@@ -30,6 +30,11 @@ module PkgForge
30
30
  end
31
31
  end
32
32
 
33
+ Contract None => Array[String]
34
+ def all_cflags
35
+ @forge.cflags + @forge.harden_flags
36
+ end
37
+
33
38
  private
34
39
 
35
40
  Contract Symbol => String
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Declare version number
3
3
  module PkgForge
4
- VERSION = '0.2.0'.freeze
4
+ VERSION = '0.2.1'.freeze
5
5
  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.2.0
4
+ version: 0.2.1
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-28 00:00:00.000000000 Z
11
+ date: 2016-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary