pkgforge 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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