dr 0.1.13 → 0.1.14
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 +7 -0
- data/README.md +21 -22
- data/bin/dr +38 -3
- data/lib/dr.rb +3 -0
- data/lib/dr/buildroot.rb +64 -36
- data/lib/dr/config.rb +3 -0
- data/lib/dr/debpackage.rb +3 -0
- data/lib/dr/gitpackage.rb +3 -0
- data/lib/dr/gnupg.rb +3 -0
- data/lib/dr/logger.rb +3 -0
- data/lib/dr/package.rb +3 -0
- data/lib/dr/pkgversion.rb +10 -1
- data/lib/dr/repo.rb +28 -5
- data/lib/dr/shellcmd.rb +3 -0
- data/lib/dr/version.rb +4 -1
- metadata +17 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f081cd07df3b86b2a8818d16a0c2b76c3205514d
|
4
|
+
data.tar.gz: e873f13774d8f4bccf3d6b9ccec059150bfdd7ef
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af79fd771e8a4ab7693ff38c5dfd78b490c57bf19eb9fd461d6a65c6e3fdcadfc86050055e45e32ca2f07dcbf275e4f1175b1ad81aec0e02a48e41984a6bab49
|
7
|
+
data.tar.gz: 34932b9939ca7c0a433af6df9e6b83d1c009bbe74128bc5eebf7f43ca20ae453f0cf42649438fd0dea0490eae63d734db372c1134b60823a454a287abd8554b0
|
data/README.md
CHANGED
@@ -1,29 +1,28 @@
|
|
1
|
-
#
|
1
|
+
# Kano Repository Manager
|
2
2
|
|
3
|
-
|
3
|
+
[](http://badge.fury.io/rb/dr)
|
4
4
|
|
5
|
-
|
5
|
+
**dr** (stands for debian repository) is a Debian repository management tool.
|
6
|
+
It will help you set up and maintain your own small package repository for any
|
7
|
+
Debian-based distribution. You can keep your sources in **git** and use the
|
8
|
+
**dr** tool to manage builds, versions, and releases. It works particularly
|
9
|
+
well in case your development is very fast and you ship new versions of
|
10
|
+
your packages often (even several times a day).
|
6
11
|
|
7
|
-
|
12
|
+
The following diagram illustrates how `dr` works. It takes source packages
|
13
|
+
that are managed in git repositories, builds them and serves them in
|
14
|
+
different suites. For more information, please see this
|
15
|
+
[project's wiki](https://github.com/KanoComputing/kano-package-system/wiki).
|
8
16
|
|
9
|
-
|
17
|
+
<p align="center">
|
18
|
+
<img src="http://i.imgur.com/pe8A9kd.png"
|
19
|
+
alt="How dr operates">
|
20
|
+
</p>
|
10
21
|
|
11
|
-
|
22
|
+
It is the tool we use to manage our software repository and the custom
|
23
|
+
packages for **Kano OS**. The application is written in **Ruby**, building
|
24
|
+
on top of many other tools (such as reprepro, debuild, debhelper, and others).
|
12
25
|
|
13
|
-
|
26
|
+
Here is like it looks like in the terminal:
|
14
27
|
|
15
|
-
|
16
|
-
|
17
|
-
$ gem install mkpkg
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
|
-
## Contributing
|
24
|
-
|
25
|
-
1. Fork it ( http://github.com/<my-github-username>/mkpkg/fork )
|
26
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create new Pull Request
|
28
|
+

|
data/bin/dr
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# Copyright (C) 2014 Kano Computing Ltd.
|
4
|
+
# License: http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
|
5
|
+
|
3
6
|
require "thor"
|
4
7
|
require "fileutils"
|
5
8
|
require "io/console"
|
@@ -7,6 +10,7 @@ require "io/console"
|
|
7
10
|
require "dr/repo"
|
8
11
|
require "dr/gitpackage"
|
9
12
|
require "dr/debpackage"
|
13
|
+
require "dr/buildroot"
|
10
14
|
|
11
15
|
require "dr/shellcmd"
|
12
16
|
require "dr/logger"
|
@@ -162,6 +166,7 @@ class RepoCLI < ExtendedThor
|
|
162
166
|
:arches => ["amd64"],
|
163
167
|
:components => ["main"],
|
164
168
|
:suites => ["stable", "testing", "unstable"],
|
169
|
+
:base => "Kano OS",
|
165
170
|
:codenames => []
|
166
171
|
}
|
167
172
|
|
@@ -171,6 +176,25 @@ class RepoCLI < ExtendedThor
|
|
171
176
|
desc = ask " Description [#{repo_conf[:desc]}]:"
|
172
177
|
repo_conf[:desc] = desc if desc.length > 0
|
173
178
|
|
179
|
+
base_map = {}
|
180
|
+
puts " Base OS [pick one]: "
|
181
|
+
Dr::BuildRoot.os_bases.each_with_index do |base, index|
|
182
|
+
base_name, base_params = base
|
183
|
+
base_map[index+1] = base_name
|
184
|
+
|
185
|
+
base_name = base_name.fg "yellow" if base_name == repo_conf[:base]
|
186
|
+
puts " [#{index+1}] #{base_name}"
|
187
|
+
end
|
188
|
+
|
189
|
+
base = ask " Your choice: "
|
190
|
+
until base.length == 0 || base_map.has_key?(base.to_i)
|
191
|
+
base = ask " Your choice: "
|
192
|
+
end
|
193
|
+
repo_conf[:base] = base_map[base.to_i] if base.length > 0
|
194
|
+
|
195
|
+
# guess default arch
|
196
|
+
repo_conf[:arches] = [Dr::BuildRoot.os_bases[repo_conf[:base]][:arches][0]]
|
197
|
+
|
174
198
|
arches = ask " Architectures [#{repo_conf[:arches].join(" ").fg("yellow")}]:"
|
175
199
|
repo_conf[:arches] = arches.split(/\s+/) if arches.length > 0
|
176
200
|
|
@@ -343,8 +367,19 @@ class RepoCLI < ExtendedThor
|
|
343
367
|
repo = get_repo_handle
|
344
368
|
|
345
369
|
log :info, "Releasing all packages from testing"
|
346
|
-
repo.list_packages.each do |pkg|
|
347
|
-
|
370
|
+
repo.list_packages("testing").each do |pkg|
|
371
|
+
begin
|
372
|
+
repo.push pkg.name, nil, "stable", (options["force"] == true)
|
373
|
+
rescue Dr::AlreadyExists
|
374
|
+
;
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
log :info, "Removing packages that are not in testing any more"
|
379
|
+
repo.list_packages("release").each do |pkg|
|
380
|
+
if ! repo.suite_has_package? "testing", pkg.name
|
381
|
+
repo.unpush pkg.name, "release"
|
382
|
+
end
|
348
383
|
end
|
349
384
|
end
|
350
385
|
|
@@ -374,6 +409,6 @@ end
|
|
374
409
|
|
375
410
|
begin
|
376
411
|
RepoCLI.start ARGV
|
377
|
-
rescue
|
412
|
+
rescue StandardError => e
|
378
413
|
Dr::Logger.log :err, e.to_s
|
379
414
|
end
|
data/lib/dr.rb
CHANGED
data/lib/dr/buildroot.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright (C) 2014 Kano Computing Ltd.
|
2
|
+
# License: http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
|
3
|
+
|
1
4
|
require "tco"
|
2
5
|
|
3
6
|
require "dr/logger"
|
@@ -7,46 +10,59 @@ module Dr
|
|
7
10
|
class BuildRoot
|
8
11
|
include Logger
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
@@os_bases = {
|
14
|
+
"Kano OS" => {
|
15
|
+
:arches => ["armhf", "armel"],
|
16
|
+
:repos => {
|
17
|
+
:raspbian => {
|
18
|
+
:url => "http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/",
|
19
|
+
:key => "http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian.public.key",
|
20
|
+
:src => true,
|
21
|
+
:codename => "wheezy",
|
22
|
+
:components => "main contrib non-free rpi"
|
23
|
+
},
|
24
|
+
|
25
|
+
:raspi_foundation => {
|
26
|
+
:url => "http://archive.raspberrypi.org/debian/",
|
27
|
+
:key => "http://archive.raspberrypi.org/debian/raspberrypi.gpg.key",
|
28
|
+
:src => false,
|
29
|
+
:codename => "wheezy",
|
30
|
+
:components => "main"
|
31
|
+
},
|
32
|
+
|
33
|
+
:kano => {
|
34
|
+
:url => "http://dev.kano.me/archive/",
|
35
|
+
:key => "http://dev.kano.me/archive/repo.gpg.key",
|
36
|
+
:src => false,
|
37
|
+
:codename => "devel",
|
38
|
+
:components => "main"
|
39
|
+
}
|
22
40
|
},
|
41
|
+
:base => :raspbian,
|
42
|
+
:packages => []
|
43
|
+
}
|
44
|
+
}
|
45
|
+
def self.os_bases
|
46
|
+
@@os_bases
|
47
|
+
end
|
23
48
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
:codename => "wheezy",
|
29
|
-
:components => "main"
|
30
|
-
},
|
49
|
+
def initialize(base, arch, br_cache)
|
50
|
+
@location = "#{br_cache}/#{base.strip.downcase.gsub(" ", "_")}-#{arch}.tar.gz"
|
51
|
+
@base = base
|
52
|
+
@arch = arch
|
31
53
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
:src => false,
|
36
|
-
:codename => "devel",
|
37
|
-
:components => "main"
|
38
|
-
}
|
39
|
-
}
|
40
|
-
@base_repo = :raspbian
|
54
|
+
@essential_pkgs = "sudo,vim,ca-certificates,fakeroot,build-essential," +
|
55
|
+
"curl,devscripts,debhelper,git,bc,locales,equivs," +
|
56
|
+
"pkg-config,libfile-fcntllock-perl"
|
41
57
|
|
42
|
-
if
|
43
|
-
setup arch
|
58
|
+
if !File.exists?(@location)
|
59
|
+
setup base, arch
|
44
60
|
end
|
45
61
|
end
|
46
62
|
|
47
63
|
def open
|
48
64
|
Dir.mktmpdir do |tmp|
|
49
|
-
log :info, "Preparing
|
65
|
+
log :info, "Preparing #{@base.fg "blue"} #{@arch.fg "orange"} build root"
|
50
66
|
ShellCmd.new "sudo tar xz -C #{tmp} -f #{@location}", :tag => "tar"
|
51
67
|
begin
|
52
68
|
log :info, "Mounting the /proc file system"
|
@@ -65,7 +81,19 @@ module Dr
|
|
65
81
|
end
|
66
82
|
|
67
83
|
private
|
68
|
-
def setup(arch)
|
84
|
+
def setup(base, arch)
|
85
|
+
unless @@os_bases.include? base
|
86
|
+
raise "OS base #{base.fg "blue"} isn't supported by dr."
|
87
|
+
end
|
88
|
+
|
89
|
+
unless @@os_bases[base][:arches].include? arch
|
90
|
+
raise "Arch #{arch.fg "blue"} not supported by this base."
|
91
|
+
end
|
92
|
+
|
93
|
+
repos = @@os_bases[base][:repos]
|
94
|
+
base_repo = @@os_bases[base][:base].to_sym
|
95
|
+
additional_pkgs = @@os_bases[base][:packages].join ","
|
96
|
+
|
69
97
|
Dir.mktmpdir do |tmp|
|
70
98
|
broot = "#{tmp}/broot"
|
71
99
|
FileUtils.mkdir_p "#{tmp}/broot"
|
@@ -73,11 +101,11 @@ module Dr
|
|
73
101
|
log :info, "Setting up the buildroot"
|
74
102
|
|
75
103
|
begin
|
76
|
-
log :info, "Bootstrapping
|
104
|
+
log :info, "Bootstrapping #{base} (first stage)"
|
77
105
|
|
78
106
|
cmd = "sudo debootstrap --foreign --variant=buildd --no-check-gpg " +
|
79
|
-
"--include=#{@
|
80
|
-
"#{
|
107
|
+
"--include=#{@essential_pkgs},#{additional_pkgs} " +
|
108
|
+
"--arch=#{arch} wheezy #{broot} #{repos[base_repo][:url]}"
|
81
109
|
debootsrap = ShellCmd.new cmd, {
|
82
110
|
:tag => "debootstrap",
|
83
111
|
:show_out => true
|
@@ -99,7 +127,7 @@ module Dr
|
|
99
127
|
|
100
128
|
log :info, "Configuring the build root"
|
101
129
|
|
102
|
-
repo_setup_sequences =
|
130
|
+
repo_setup_sequences = repos.map do |name, repo|
|
103
131
|
seq = "echo 'deb #{repo[:url]} #{repo[:codename]} " +
|
104
132
|
"#{repo[:components]}' >> /etc/apt/sources.list\n"
|
105
133
|
|
data/lib/dr/config.rb
CHANGED
data/lib/dr/debpackage.rb
CHANGED
data/lib/dr/gitpackage.rb
CHANGED
data/lib/dr/gnupg.rb
CHANGED
data/lib/dr/logger.rb
CHANGED
data/lib/dr/package.rb
CHANGED
data/lib/dr/pkgversion.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright (C) 2014 Kano Computing Ltd.
|
2
|
+
# License: http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
|
3
|
+
|
1
4
|
module Dr
|
2
5
|
class PkgVersion
|
3
6
|
attr_accessor :upstream, :debian, :date, :build
|
@@ -63,7 +66,13 @@ module Dr
|
|
63
66
|
v << ".#{today}"
|
64
67
|
end
|
65
68
|
|
66
|
-
|
69
|
+
if @build > 0
|
70
|
+
if @build < 10
|
71
|
+
v << "build0#{@build}"
|
72
|
+
else
|
73
|
+
v << "build#{@build}"
|
74
|
+
end
|
75
|
+
end
|
67
76
|
|
68
77
|
v
|
69
78
|
end
|
data/lib/dr/repo.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# Copyright (C) 2014 Kano Computing Ltd.
|
2
|
+
# License: http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
|
3
|
+
|
1
4
|
require "dr/gitpackage"
|
2
5
|
require "dr/debpackage"
|
3
6
|
|
@@ -10,6 +13,8 @@ require "fileutils"
|
|
10
13
|
require "yaml"
|
11
14
|
|
12
15
|
module Dr
|
16
|
+
class AlreadyExists < StandardError; end
|
17
|
+
|
13
18
|
class Repo
|
14
19
|
include Logger
|
15
20
|
|
@@ -19,6 +24,9 @@ module Dr
|
|
19
24
|
@location = File.expand_path loc
|
20
25
|
|
21
26
|
@packages_dir = "#{@location}/packages"
|
27
|
+
|
28
|
+
meta = "#{@location}/metadata"
|
29
|
+
@metadata = File.exists?(meta) ? YAML.load_file(meta) : {}
|
22
30
|
end
|
23
31
|
|
24
32
|
def setup(conf)
|
@@ -65,9 +73,15 @@ module Dr
|
|
65
73
|
end
|
66
74
|
|
67
75
|
FileUtils.mkdir_p @packages_dir
|
76
|
+
FileUtils.mkdir_p "#{@location}/buildroots"
|
77
|
+
|
78
|
+
@metadata = {"base-os" => conf[:base]}
|
79
|
+
File.open("#{@location}/metadata", "w" ) do |out|
|
80
|
+
YAML.dump(@metadata)
|
81
|
+
end
|
68
82
|
|
69
83
|
conf[:arches].each do |arch|
|
70
|
-
|
84
|
+
buildroot arch
|
71
85
|
end
|
72
86
|
end
|
73
87
|
|
@@ -93,7 +107,8 @@ module Dr
|
|
93
107
|
end
|
94
108
|
|
95
109
|
def buildroot(arch)
|
96
|
-
|
110
|
+
cache_dir = "#{@location}/buildroots/"
|
111
|
+
BuildRoot.new @metadata["base-os"], arch, cache_dir
|
97
112
|
end
|
98
113
|
|
99
114
|
def get_package(name)
|
@@ -150,6 +165,12 @@ module Dr
|
|
150
165
|
v
|
151
166
|
end
|
152
167
|
|
168
|
+
def suite_has_package?(suite, pkg_name)
|
169
|
+
pkg_versions = get_subpackage_versions(pkg_name)[codename_to_suite(suite)]
|
170
|
+
|
171
|
+
pkg_versions.length > 0
|
172
|
+
end
|
173
|
+
|
153
174
|
def suite_has_higher_pkg_version?(suite, pkg, version)
|
154
175
|
used_versions = get_subpackage_versions(pkg.name)[codename_to_suite(suite)]
|
155
176
|
|
@@ -228,10 +249,12 @@ module Dr
|
|
228
249
|
reprepro = "reprepro -b #{@location}/archive " +
|
229
250
|
"--gnupghome #{location}/gnupg-keyring/ removesrc " +
|
230
251
|
"#{suite} #{pkg.name}"
|
231
|
-
ShellCmd.new reprepro, :tag => "reprepro", :show_out =>
|
252
|
+
ShellCmd.new reprepro, :tag => "reprepro", :show_out => false
|
232
253
|
else
|
233
|
-
log :
|
234
|
-
|
254
|
+
log :warn, "The same package of a higher version is already in the " +
|
255
|
+
"#{suite} suite."
|
256
|
+
|
257
|
+
raise AlreadyExists.new "Push failed"
|
235
258
|
end
|
236
259
|
end
|
237
260
|
|
data/lib/dr/shellcmd.rb
CHANGED
data/lib/dr/version.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.14
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Radek Pazdera
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-05-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: tco
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: bundler
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,39 +55,37 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
|
-
description:
|
95
|
-
|
96
|
-
|
97
|
-
|
83
|
+
description: |-
|
84
|
+
dr works with distribution-level packaging
|
85
|
+
tools and helps you make and distribute your own
|
86
|
+
Debian packages through your own repository.
|
87
|
+
This is a super early release, certainly NOT ready
|
88
|
+
for production.
|
98
89
|
email:
|
99
90
|
- radek@kano.me
|
100
91
|
executables:
|
@@ -125,27 +116,26 @@ files:
|
|
125
116
|
homepage: http://github.com/KanoComputing/kano-package-system
|
126
117
|
licenses:
|
127
118
|
- GPLv2
|
119
|
+
metadata: {}
|
128
120
|
post_install_message:
|
129
121
|
rdoc_options: []
|
130
122
|
require_paths:
|
131
123
|
- lib
|
132
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
125
|
requirements:
|
135
|
-
- -
|
126
|
+
- - '>='
|
136
127
|
- !ruby/object:Gem::Version
|
137
128
|
version: '0'
|
138
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
130
|
requirements:
|
141
|
-
- -
|
131
|
+
- - '>='
|
142
132
|
- !ruby/object:Gem::Version
|
143
133
|
version: '0'
|
144
134
|
requirements: []
|
145
135
|
rubyforge_project:
|
146
|
-
rubygems_version:
|
136
|
+
rubygems_version: 2.0.14
|
147
137
|
signing_key:
|
148
|
-
specification_version:
|
138
|
+
specification_version: 4
|
149
139
|
summary: dr stands for debian-repository. It is a packaging tool that helps you make,
|
150
140
|
distribute and maintain you own disto packages and repositories. It's in a very
|
151
141
|
early stage, NOT READY for production.
|