pkgforge 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circle-ruby +4 -3
- data/.prospectus +4 -18
- data/.rubocop.yml +0 -3
- data/README.md +262 -0
- data/bin/pkgforge +1 -0
- data/lib/pkgforge/components/deps.rb +8 -4
- data/lib/pkgforge/components/source.rb +3 -1
- data/lib/pkgforge/version.rb +1 -1
- data/pkgforge.gemspec +7 -7
- metadata +29 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e6295bc0fa6b21641b31a86cb8a7b72e98788c7acb0d98bdf77453818dbf3d97
|
4
|
+
data.tar.gz: 2dc25196c7e6d0be42a004b538b8b3738fda5443152fffc302145aa993c4b6b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d139be8290e21e10e98504d91db078abe3d1a235df6eeb21eee23ad8ea88837362cf4a8ab0a0cb3850836bd964691c75f3989d2d0595aa171679af9136b9c6fc
|
7
|
+
data.tar.gz: 92a91e3cfc2ae61e94da4c5a91ea235b0e0872ef2e6ff61640c2c291516ff928f0484b1eea90606470efc216139e77c7e4d4f3512e6f2ae79aeb0306c33bd0fc
|
data/.circle-ruby
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
2.
|
2
|
-
2.
|
3
|
-
2.
|
1
|
+
2.5.1
|
2
|
+
2.4.4
|
3
|
+
2.3.7
|
4
|
+
2.2.10
|
data/.prospectus
CHANGED
@@ -1,25 +1,11 @@
|
|
1
|
-
Prospectus.extra_dep('file', 'prospectus_circleci')
|
2
|
-
|
3
1
|
my_slug = 'akerl/pkgforge'
|
4
2
|
|
3
|
+
Prospectus.extra_dep('file', 'prospectus_circleci')
|
4
|
+
Prospectus.extra_dep('file', 'prospectus_gems')
|
5
|
+
|
5
6
|
item do
|
6
7
|
noop
|
7
8
|
|
8
|
-
|
9
|
-
item do
|
10
|
-
name 'gems'
|
11
|
-
|
12
|
-
expected do
|
13
|
-
static
|
14
|
-
set 'green'
|
15
|
-
end
|
16
|
-
|
17
|
-
actual do
|
18
|
-
gemnasium
|
19
|
-
slug my_slug
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
9
|
+
extend ProspectusGems::Gemspec.new
|
24
10
|
extend ProspectusCircleci::Build.new(my_slug)
|
25
11
|
end
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -12,6 +12,268 @@ DSL engine for building Arch packages
|
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
+
### Running pkgforge
|
16
|
+
|
17
|
+
If you already have a .pkgforge file you want to run, the `pkgforge` tool has 3 subcommands:
|
18
|
+
|
19
|
+
```
|
20
|
+
❯ pkgforge
|
21
|
+
pkgforge 0.20.0 -- DSL engine for building Arch packages
|
22
|
+
|
23
|
+
Usage:
|
24
|
+
|
25
|
+
pkgforge <subcommand> [options]
|
26
|
+
|
27
|
+
Options:
|
28
|
+
-h, --help Show this message
|
29
|
+
-v, --version Print the name and version
|
30
|
+
-t, --trace Show the full backtrace when an error occurs
|
31
|
+
|
32
|
+
Subcommands:
|
33
|
+
build Build the package
|
34
|
+
release Release the package
|
35
|
+
info Print package info
|
36
|
+
```
|
37
|
+
|
38
|
+
Each subcommand has help text that can be invoked w/ the `-h` flag detailing available options. Specific options of note:
|
39
|
+
|
40
|
+
* `-d DIR` -- Change to this directory before starting
|
41
|
+
* `-s` -- Don't clean up anything afterwards. Very useful for troubleshooting
|
42
|
+
* `-t` -- Enable tracebacks, so you can debug pkgforge internal errors
|
43
|
+
|
44
|
+
#### Standard flow
|
45
|
+
|
46
|
+
Generally, you'll want to run `pkgforge build` to confirm building works, and then `pkgforge release` to upload the package to GitHub. Releasing will use the tag on the current revision as the GitHub release name.
|
47
|
+
|
48
|
+
To avoid building the package twice (since build and release don't default to sharing state), you can use the `--statefile /path/to/file` option. This will cause the two commands to share state, so building builds an artifact and release updates that same artifact.
|
49
|
+
|
50
|
+
### Writing .pkgforge files
|
51
|
+
|
52
|
+
The pkgforge spec has a couple of required elements and then several optional ones. The file is parsed as Ruby, so Ruby syntax applies for strings and similar, and additionally for advanced use cases you can write arbitrary Ruby at any point.
|
53
|
+
|
54
|
+
Before we start, here's an example complete .pkgforge for `git`:
|
55
|
+
|
56
|
+
```
|
57
|
+
name 'git'
|
58
|
+
org 'amylum'
|
59
|
+
|
60
|
+
licenses 'COPYING'
|
61
|
+
|
62
|
+
deps(
|
63
|
+
zlib: {
|
64
|
+
version: '1.2.11-1',
|
65
|
+
checksum: '5596e2d39ef98e2323ac415f50afa71a433ed65c23e8d1f2723f711f5ffb4f32'
|
66
|
+
},
|
67
|
+
openssl: {
|
68
|
+
version: '1.1.0g-1',
|
69
|
+
checksum: 'f70d94ca94f05be4a14438cf29ed4695d9731d023a4b72d30126d826720bc48b'
|
70
|
+
},
|
71
|
+
curl: {
|
72
|
+
version: '7.57.0-1',
|
73
|
+
checksum: 'ea8db25223edddd2668d4f25f8a030469aa90306b1204cc1cecf64d468cb2949'
|
74
|
+
}
|
75
|
+
)
|
76
|
+
|
77
|
+
cflags
|
78
|
+
harden
|
79
|
+
|
80
|
+
build do
|
81
|
+
run(['make', 'all', 'install',
|
82
|
+
'CC=musl-gcc',
|
83
|
+
"DESTDIR=#{releasedir}",
|
84
|
+
"CURL_LIBCURL=#{@forge.dep(:curl)}/usr/lib/libcurl.a #{@forge.dep(:openssl)}/usr/lib/libssl.a #{@forge.dep(:openssl)}/usr/lib/libcrypto.a",
|
85
|
+
"CFLAGS=#{@forge.cflags.join(' ')}",
|
86
|
+
"LDFLAGS=#{@forge.cflags.join(' ')}",
|
87
|
+
'NO_TCLTK=1',
|
88
|
+
'NO_PYTHON=1',
|
89
|
+
'NO_EXPAT=1',
|
90
|
+
'NO_GETTEXT=1',
|
91
|
+
'NO_REGEX=1',
|
92
|
+
'prefix=/usr',
|
93
|
+
'gitexecdir=/usr/lib/git-core'
|
94
|
+
])
|
95
|
+
end
|
96
|
+
|
97
|
+
test do
|
98
|
+
run 'git --version'
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
102
|
+
#### name (required)
|
103
|
+
|
104
|
+
The name of the package, provided as a string
|
105
|
+
|
106
|
+
#### org (required)
|
107
|
+
|
108
|
+
The GitHub organization to upload the package to (this plus the name become the GitHub repo slug, as in `https://github.com/ORG/NAME`)
|
109
|
+
|
110
|
+
#### license (optional)
|
111
|
+
|
112
|
+
This defines where to find the license file. The default is to look for a file called 'LICENSE' in the source directory. This can be provided as a string or an array of strings (for multiple license files). If the given license does not exist, that is a fatal error during build.
|
113
|
+
|
114
|
+
#### source (optional)
|
115
|
+
|
116
|
+
The source block describes how to load the source of the upstream package. The default is "git" with a path of "./upstream". The available options:
|
117
|
+
|
118
|
+
##### git
|
119
|
+
|
120
|
+
Loads the source from a local git submodule. Accepts a single argument, "path", which defines the path to the submodule, relative to the repo base dir:
|
121
|
+
|
122
|
+
```
|
123
|
+
source(
|
124
|
+
type: 'git',
|
125
|
+
path: 'my_sub_dir'
|
126
|
+
)
|
127
|
+
```
|
128
|
+
|
129
|
+
##### tar
|
130
|
+
|
131
|
+
Loads the source from a remote tarball. Requires a "url" argument and a "checksum":
|
132
|
+
|
133
|
+
```
|
134
|
+
source(
|
135
|
+
type: 'tar',
|
136
|
+
url: 'https://invisible-mirror.net/archives/ncurses/current/ncurses-6.0-20171223.tgz',
|
137
|
+
checksum: 'd0e2261c84f3fc56c13ebbc297a4b19fd6c9634fabd2143f88781b405ffe7698'
|
138
|
+
)
|
139
|
+
```
|
140
|
+
|
141
|
+
#### empty
|
142
|
+
|
143
|
+
This sets up a blank source dir. Useful if you'll be generating all the contents, as in [this example](https://github.com/amylum/iana-etc/blob/master/.pkgforge)
|
144
|
+
|
145
|
+
```
|
146
|
+
source(type: 'empty')
|
147
|
+
```
|
148
|
+
|
149
|
+
#### deps (optional)
|
150
|
+
|
151
|
+
The deps parameter is an hash of dep objects, each of which contains a version and checksum. Deps are expected themselves to be pkgforge-built GitHub release artifacts and exist in the same org as this package. They are described by a version number and checksum.
|
152
|
+
|
153
|
+
```
|
154
|
+
deps(
|
155
|
+
zlib: {
|
156
|
+
version: '1.2.11-1',
|
157
|
+
checksum: '5596e2d39ef98e2323ac415f50afa71a433ed65c23e8d1f2723f711f5ffb4f32'
|
158
|
+
},
|
159
|
+
openssl: {
|
160
|
+
version: '1.1.0g-1',
|
161
|
+
checksum: 'f70d94ca94f05be4a14438cf29ed4695d9731d023a4b72d30126d826720bc48b'
|
162
|
+
},
|
163
|
+
curl: {
|
164
|
+
version: '7.57.0-1',
|
165
|
+
checksum: 'ea8db25223edddd2668d4f25f8a030469aa90306b1204cc1cecf64d468cb2949'
|
166
|
+
}
|
167
|
+
)
|
168
|
+
```
|
169
|
+
|
170
|
+
#### configure_flags (optional)
|
171
|
+
|
172
|
+
This lets you set flags that will be used if you run `configure` while building. They are specified as a hash, where the keys are the configure flag names without leading "--". A value of "nil" adds the flag without a value.
|
173
|
+
|
174
|
+
```
|
175
|
+
configure_flags(
|
176
|
+
prefix: '/usr',
|
177
|
+
'with-termlib': 'tinfo',
|
178
|
+
'with-ticlib': 'tic',
|
179
|
+
'with-shared': nil,
|
180
|
+
'with-normal': nil,
|
181
|
+
'without-cxx': nil,
|
182
|
+
'without-cxx-binding': nil,
|
183
|
+
'enable-widec': nil
|
184
|
+
)
|
185
|
+
```
|
186
|
+
|
187
|
+
#### cflags (optional)
|
188
|
+
|
189
|
+
When called with no value, this auto-adds `-L /path/to/dep/lib -I /path/to/dep/include` to the CFLAGS variable used for build commands for every dep specified in the .pkgforge file. When called with a an array of strings, it adds those strings to the CFLAGS variable. It can be called multiple times.
|
190
|
+
|
191
|
+
```
|
192
|
+
cflags
|
193
|
+
cflags ['-Wa,--noexecstack']
|
194
|
+
```
|
195
|
+
|
196
|
+
#### libs (optional)
|
197
|
+
|
198
|
+
When called with no value, auto-adds `-lNAME` for every dep listed in the .pkgforge file to the LIBS variable that will be used for build commands. When called with an array of strings, adds those values to LIBS variable. Do not prefix with "-l" when calling with strings.
|
199
|
+
|
200
|
+
```
|
201
|
+
libs %w(gpg-error assuan)
|
202
|
+
```
|
203
|
+
|
204
|
+
#### remove_linker_archives (optional)
|
205
|
+
|
206
|
+
If called, this removes all .la files from deps. This exists because sometimes those files interfere with building.
|
207
|
+
|
208
|
+
#### remove_pkgconfig_files (optional)
|
209
|
+
|
210
|
+
If called, this removes all .pc files from deps. This exists because sometimes those files interfere with building.
|
211
|
+
|
212
|
+
#### harden (optional)
|
213
|
+
|
214
|
+
This adds a stock set of hardening options to CFLAGS. The list was originally sourced from [this blog](https://blog.mayflower.de/5800-Hardening-Compiler-Flags-for-NixOS.html), and can be seen [here](https://github.com/akerl/pkgforge/blob/master/lib/pkgforge/components/cflags.rb#L40). Passing an array of strings as arguments disables the listed options from the ALL_HARDEN_OPTS hash.
|
215
|
+
|
216
|
+
#### patch (optional)
|
217
|
+
|
218
|
+
This patches the source with the given patch files. Files must be stored in the `./patches` dir in the repo, and listed by name without the `./patches` prefix. This command can be used multiple times, and patches will be run in the order they are listed.
|
219
|
+
|
220
|
+
```
|
221
|
+
patch 'musl.patch'
|
222
|
+
patch 'elf.patch'
|
223
|
+
patch 'if_arp.patch'
|
224
|
+
```
|
225
|
+
|
226
|
+
#### package (optional)
|
227
|
+
|
228
|
+
This describes how to package the resulting build artifact. The default is to use "tarball"
|
229
|
+
|
230
|
+
##### tarball
|
231
|
+
|
232
|
+
This bundles the whole release dir into a .tar.gz file
|
233
|
+
|
234
|
+
##### file
|
235
|
+
|
236
|
+
This uploads individual files as listed. The "source" is where inside the release dir to find the file, the "name" is the name to give the artifact.
|
237
|
+
|
238
|
+
```
|
239
|
+
package(
|
240
|
+
type: 'file',
|
241
|
+
artifacts: [
|
242
|
+
{
|
243
|
+
source: 'bin/speculate_darwin',
|
244
|
+
name: 'speculate_darwin'
|
245
|
+
},
|
246
|
+
{
|
247
|
+
source: 'bin/speculate_linux',
|
248
|
+
name: 'speculate_linux'
|
249
|
+
}
|
250
|
+
]
|
251
|
+
)
|
252
|
+
```
|
253
|
+
|
254
|
+
#### test (required)
|
255
|
+
|
256
|
+
The test block describes how to check that the build works. It is run after building, from the context of the newly created release's directory. Available helper commands:
|
257
|
+
|
258
|
+
* `run` -- Runs a command with the environment adjusted to use only this package's libs and the libs of your named deps.
|
259
|
+
|
260
|
+
#### build (required)
|
261
|
+
|
262
|
+
The build command describes how to actually turn the source into a package. It has a number of helper commands:
|
263
|
+
|
264
|
+
* `run` -- runs a command from the build directory. Takes a string or array of strings
|
265
|
+
* `configure` -- runs `./configure` with any given configure_flags, CFLAGS, and LIBs, as well as with the CC set to musl-gcc. If you have other env vars to set, pass them as a hash
|
266
|
+
* `make` -- runs `make` with the CFLAGS / LIBS / CC set similarly to ./configure. Again, if you have extra env vars, pass them as a hash.
|
267
|
+
* `install` -- runs `make DESTDIR=#{releasedir} install` with the same CFLAGS / LIBS / CC as make. Again, env vars can be passed as a hash.
|
268
|
+
* `rm` -- Remove a file from the release dir. Useful for cleaning up extra files. Accepts a string or array of strings
|
269
|
+
* `cp` -- Copies a file from the build dir to the release dir. Pass just the source path to copy to the same dest path, or pass source and dest to copy to a new path.
|
270
|
+
|
271
|
+
There are also a handful of variables / helper functions for looking up info:
|
272
|
+
|
273
|
+
* `releasedir` -- resolves to the release dir's absolute path
|
274
|
+
* `dep(PACKAGE)` -- resolves to that dep's absolute path
|
275
|
+
* `default_env` -- the CC, CFLAGS, and LIBS vars used by the helper commands.
|
276
|
+
|
15
277
|
## Installation
|
16
278
|
|
17
279
|
gem install pkgforge
|
data/bin/pkgforge
CHANGED
@@ -36,7 +36,7 @@ module PkgForge
|
|
36
36
|
deps.each do |dep_name, dep_hash|
|
37
37
|
file = tmpfile(dep_name)
|
38
38
|
dir = tmpdir(dep_name)
|
39
|
-
download_file(dep_name,
|
39
|
+
download_file(dep_name, dep_hash, file)
|
40
40
|
verify_file(file, dep_hash[:checksum])
|
41
41
|
extract_file(file, dir)
|
42
42
|
end
|
@@ -44,9 +44,13 @@ module PkgForge
|
|
44
44
|
end
|
45
45
|
|
46
46
|
Contract Symbol, String, String => nil
|
47
|
-
def download_file(dep_name,
|
48
|
-
|
49
|
-
|
47
|
+
def download_file(dep_name, dep_hash, file)
|
48
|
+
dep_hash[:org] ||= org
|
49
|
+
dep_hash[:site] ||= 'https://github.com'
|
50
|
+
url = "#{dep_hash[:site]}/#{dep_hash[:org]}/#{dep_name}/releases/download/#{dep_hash[:version]}/#{dep_name}.tar.gz" # rubocop:disable Metrics/LineLength
|
51
|
+
File.open(file, 'wb') do |fh|
|
52
|
+
fh << open(url, 'rb').read # rubocop:disable Security/Open
|
53
|
+
end
|
50
54
|
nil
|
51
55
|
end
|
52
56
|
|
@@ -31,7 +31,9 @@ module PkgForge
|
|
31
31
|
def tar_prepare_source
|
32
32
|
dest_file = tmpfile(:source_tar)
|
33
33
|
File.open(dest_file, 'wb') do |fh|
|
34
|
-
open(source[:url], 'rb')
|
34
|
+
open(source[:url], 'rb') do |request| # rubocop:disable Security/Open
|
35
|
+
fh.write request.read
|
36
|
+
end
|
35
37
|
verify_file(dest_file, source[:checksum])
|
36
38
|
end
|
37
39
|
run "tar -xf #{dest_file} --strip-components=1"
|
data/lib/pkgforge/version.rb
CHANGED
data/pkgforge.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'English'
|
2
|
-
$LOAD_PATH.unshift File.expand_path('
|
2
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
3
3
|
require 'pkgforge/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
@@ -18,14 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files spec/*`.split
|
19
19
|
s.executables = ['pkgforge']
|
20
20
|
|
21
|
-
s.add_dependency 'mercenary', '~> 0.3.4'
|
22
21
|
s.add_dependency 'contracts', '~> 0.16.0'
|
23
22
|
s.add_dependency 'cymbal', '~> 1.0.0'
|
23
|
+
s.add_dependency 'mercenary', '~> 0.3.4'
|
24
24
|
|
25
|
-
s.add_development_dependency 'rubocop', '~> 0.50.0'
|
26
|
-
s.add_development_dependency 'goodcop', '~> 0.1.0'
|
27
|
-
s.add_development_dependency 'rake', '~> 12.1.0'
|
28
25
|
s.add_development_dependency 'codecov', '~> 0.1.1'
|
29
|
-
s.add_development_dependency '
|
30
|
-
s.add_development_dependency '
|
26
|
+
s.add_development_dependency 'fuubar', '~> 2.3.0'
|
27
|
+
s.add_development_dependency 'goodcop', '~> 0.5.0'
|
28
|
+
s.add_development_dependency 'rake', '~> 12.3.0'
|
29
|
+
s.add_development_dependency 'rspec', '~> 3.7.0'
|
30
|
+
s.add_development_dependency 'rubocop', '~> 0.57.1'
|
31
31
|
end
|
metadata
CHANGED
@@ -1,141 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pkgforge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: contracts
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.16.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.16.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: cymbal
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 1.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 1.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: mercenary
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.3.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.3.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: codecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.1.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.1.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: fuubar
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.3.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.3.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: goodcop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.5.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.5.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 12.3.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:
|
110
|
+
version: 12.3.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 3.
|
117
|
+
version: 3.7.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 3.
|
124
|
+
version: 3.7.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rubocop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 0.57.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 0.57.1
|
139
139
|
description: DSL engine for building Arch packages
|
140
140
|
email: me@lesaker.org
|
141
141
|
executables:
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.6
|
197
|
+
rubygems_version: 2.7.6
|
198
198
|
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: DSL engine for building Arch packages
|