packo 0.0.1.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/packo +78 -0
- data/bin/packo-base +24 -0
- data/bin/packo-build +24 -0
- data/bin/packo-db +24 -0
- data/bin/packo-env +24 -0
- data/bin/packo-files +24 -0
- data/bin/packo-profile +24 -0
- data/bin/packo-repository +24 -0
- data/bin/packo-select +24 -0
- data/lib/packo.rb +186 -0
- data/lib/packo/cli.rb +79 -0
- data/lib/packo/cli/base.rb +554 -0
- data/lib/packo/cli/build.rb +488 -0
- data/lib/packo/cli/database.rb +55 -0
- data/lib/packo/cli/database/definition.rb +65 -0
- data/lib/packo/cli/database/helpers.rb +20 -0
- data/lib/packo/cli/environment.rb +45 -0
- data/lib/packo/cli/files.rb +153 -0
- data/lib/packo/cli/profile.rb +31 -0
- data/lib/packo/cli/repository.rb +561 -0
- data/lib/packo/cli/repository/binary.rb +74 -0
- data/lib/packo/cli/repository/helpers.rb +20 -0
- data/lib/packo/cli/repository/repository.rb +48 -0
- data/lib/packo/cli/repository/source.rb +91 -0
- data/lib/packo/cli/repository/virtual.rb +53 -0
- data/lib/packo/cli/select.rb +61 -0
- data/lib/packo/do.rb +249 -0
- data/lib/packo/environment.rb +269 -0
- data/lib/packo/extensions.rb +70 -0
- data/lib/packo/flags.rb +64 -0
- data/lib/packo/host.rb +121 -0
- data/lib/packo/models.rb +171 -0
- data/lib/packo/models/installed_package.rb +190 -0
- data/lib/packo/models/installed_package/content.rb +50 -0
- data/lib/packo/models/installed_package/dependency.rb +39 -0
- data/lib/packo/models/repository.rb +209 -0
- data/lib/packo/models/repository/binary.rb +32 -0
- data/lib/packo/models/repository/binary/mirror.rb +35 -0
- data/lib/packo/models/repository/package.rb +73 -0
- data/lib/packo/models/repository/package/binary.rb +34 -0
- data/lib/packo/models/repository/package/binary/build.rb +36 -0
- data/lib/packo/models/repository/package/source.rb +36 -0
- data/lib/packo/models/repository/package/source/feature.rb +36 -0
- data/lib/packo/models/repository/package/source/flavor.rb +36 -0
- data/lib/packo/models/repository/package/virtual.rb +32 -0
- data/lib/packo/models/repository/source.rb +30 -0
- data/lib/packo/models/repository/virtual.rb +30 -0
- data/lib/packo/models/selector.rb +34 -0
- data/lib/packo/models/tag.rb +30 -0
- data/lib/packo/package.rb +239 -0
- data/lib/packo/package/blocker.rb +100 -0
- data/lib/packo/package/blockers.rb +40 -0
- data/lib/packo/package/dependencies.rb +40 -0
- data/lib/packo/package/dependency.rb +100 -0
- data/lib/packo/package/feature.rb +55 -0
- data/lib/packo/package/features.rb +105 -0
- data/lib/packo/package/flavor.rb +101 -0
- data/lib/packo/package/tags.rb +60 -0
- data/lib/packo/package/tags/expression.rb +130 -0
- data/lib/packo/package/tags/expression/group.rb +28 -0
- data/lib/packo/package/tags/expression/logic.rb +48 -0
- data/lib/packo/package/tags/expression/name.rb +28 -0
- data/lib/packo/profile.rb +174 -0
- data/lib/packo/rbuild.rb +22 -0
- data/lib/packo/rbuild/behaviors.rb +20 -0
- data/lib/packo/rbuild/behaviors/default.rb +27 -0
- data/lib/packo/rbuild/feature.rb +64 -0
- data/lib/packo/rbuild/features.rb +65 -0
- data/lib/packo/rbuild/flavor.rb +67 -0
- data/lib/packo/rbuild/module.rb +40 -0
- data/lib/packo/rbuild/modules.rb +27 -0
- data/lib/packo/rbuild/modules/building.rb +24 -0
- data/lib/packo/rbuild/modules/building/autotools.rb +315 -0
- data/lib/packo/rbuild/modules/building/cmake.rb +38 -0
- data/lib/packo/rbuild/modules/building/patch.rb +84 -0
- data/lib/packo/rbuild/modules/building/rake.rb +74 -0
- data/lib/packo/rbuild/modules/building/strip.rb +41 -0
- data/lib/packo/rbuild/modules/misc.rb +26 -0
- data/lib/packo/rbuild/modules/misc/fetcher.rb +177 -0
- data/lib/packo/rbuild/modules/misc/fetching.rb +22 -0
- data/lib/packo/rbuild/modules/misc/fetching/git.rb +57 -0
- data/lib/packo/rbuild/modules/misc/fetching/github.rb +31 -0
- data/lib/packo/rbuild/modules/misc/fetching/gnu.rb +59 -0
- data/lib/packo/rbuild/modules/misc/fetching/mercurial.rb +51 -0
- data/lib/packo/rbuild/modules/misc/fetching/sourceforge.rb +47 -0
- data/lib/packo/rbuild/modules/misc/fetching/subversion.rb +51 -0
- data/lib/packo/rbuild/modules/misc/fetching/wget.rb +57 -0
- data/lib/packo/rbuild/modules/misc/unpacker.rb +70 -0
- data/lib/packo/rbuild/modules/misc/unpacking.rb +23 -0
- data/lib/packo/rbuild/modules/misc/unpacking/lzma.rb +34 -0
- data/lib/packo/rbuild/modules/misc/unpacking/tar.rb +35 -0
- data/lib/packo/rbuild/modules/misc/unpacking/xz.rb +34 -0
- data/lib/packo/rbuild/modules/misc/unpacking/zip.rb +26 -0
- data/lib/packo/rbuild/modules/packaging.rb +20 -0
- data/lib/packo/rbuild/modules/packaging/pko.rb +78 -0
- data/lib/packo/rbuild/package.rb +281 -0
- data/lib/packo/rbuild/package/manifest.rb +169 -0
- data/lib/packo/rbuild/stages.rb +171 -0
- data/lib/packo/rbuild/stages/callbacks.rb +96 -0
- data/lib/packo/rbuild/stages/stage.rb +50 -0
- data/lib/packo/repository.rb +95 -0
- data/lib/packo/repository/binary.rb +116 -0
- data/lib/packo/repository/source.rb +77 -0
- data/lib/packo/repository/virtual.rb +66 -0
- data/lib/packo/system.rb +53 -0
- data/lib/packo/version.rb +26 -0
- metadata +276 -0
@@ -0,0 +1,209 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
require 'packo/repository'
|
21
|
+
|
22
|
+
require 'packo/models/repository/package'
|
23
|
+
|
24
|
+
require 'packo/models/repository/binary'
|
25
|
+
require 'packo/models/repository/source'
|
26
|
+
require 'packo/models/repository/virtual'
|
27
|
+
|
28
|
+
module Packo; module Models
|
29
|
+
|
30
|
+
class Repository
|
31
|
+
include DataMapper::Resource
|
32
|
+
|
33
|
+
property :id, Serial
|
34
|
+
|
35
|
+
property :type, Enum[:binary, :source, :virtual], required: true
|
36
|
+
property :name, String, required: true
|
37
|
+
|
38
|
+
property :uri, URI, required: true
|
39
|
+
property :path, Text, required: true
|
40
|
+
|
41
|
+
has n, :packages, constraint: :destroy
|
42
|
+
|
43
|
+
after :create do |repo|
|
44
|
+
case repo.type
|
45
|
+
when :binary; Binary.create(repo: repo)
|
46
|
+
when :source; Source.create(repo: repo)
|
47
|
+
when :virtual; Virtual.create(repo: repo)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
after :save do |repo|
|
52
|
+
repo.data.save if repo.data
|
53
|
+
end
|
54
|
+
|
55
|
+
after :destroy do |repo|
|
56
|
+
repo.data.destroy! if repo.data
|
57
|
+
end
|
58
|
+
|
59
|
+
def data
|
60
|
+
case type
|
61
|
+
when :binary; Binary.first_or_create(repo: self)
|
62
|
+
when :source; Source.first_or_create(repo: self)
|
63
|
+
when :virtual; Virtual.first_or_create(repo: self)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def to_hash
|
68
|
+
Hash[
|
69
|
+
type: self.type,
|
70
|
+
name: self.name,
|
71
|
+
uri: self.uri,
|
72
|
+
path: self.path
|
73
|
+
]
|
74
|
+
end
|
75
|
+
|
76
|
+
def URI
|
77
|
+
case type
|
78
|
+
when :binary; data.mirrors.to_a.map {|m| m.uri}.join("\n")
|
79
|
+
when :source; data.address
|
80
|
+
when :virtual; data.address
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def search (expression, exact=false)
|
85
|
+
if expression.start_with?('[') && expression.end_with?(']')
|
86
|
+
expression = expression[1, expression.length - 2]
|
87
|
+
|
88
|
+
if DataMapper.repository.adapter.respond_to? :select
|
89
|
+
result = _find_by_expression(expression).map {|id|
|
90
|
+
Package.get(id)
|
91
|
+
}
|
92
|
+
else
|
93
|
+
expression = Packo::Package::Tags::Expression.parse(expression)
|
94
|
+
|
95
|
+
result = packages.all.select {|pkg|
|
96
|
+
expression.evaluate(Packo::Package.wrap(pkg))
|
97
|
+
}
|
98
|
+
end
|
99
|
+
else
|
100
|
+
if matches = expression.match(/^([<>]?=?)/)
|
101
|
+
validity = ((matches[1] && !matches[1].empty?) ? matches[1] : nil)
|
102
|
+
expression = expression.sub(/^([<>]?=?)/, '')
|
103
|
+
|
104
|
+
validity = nil if validity == '='
|
105
|
+
else
|
106
|
+
validity = nil
|
107
|
+
end
|
108
|
+
|
109
|
+
package = Packo::Package.parse(expression)
|
110
|
+
|
111
|
+
conditions = { order: [:name.asc] }
|
112
|
+
|
113
|
+
if exact
|
114
|
+
conditions[:name] = package.name if package.name
|
115
|
+
conditions[:version] = package.version if package.version
|
116
|
+
conditions[:slot] = package.slot if package.slot
|
117
|
+
else
|
118
|
+
conditions[:name.like] = "%#{package.name}%" if package.name
|
119
|
+
conditions[:version.like] = package.version if package.version
|
120
|
+
conditions[:slot.like] = "%#{package.slot}%" if package.slot
|
121
|
+
end
|
122
|
+
|
123
|
+
result = packages.all(conditions)
|
124
|
+
|
125
|
+
if !package.tags.empty?
|
126
|
+
result = result.to_a.select {|pkg|
|
127
|
+
Packo::Package.wrap(pkg).tags == package.tags
|
128
|
+
}
|
129
|
+
end
|
130
|
+
|
131
|
+
if validity
|
132
|
+
result = result.select {|pkg|
|
133
|
+
case validity
|
134
|
+
when '>'; pkg.version > package.version
|
135
|
+
when '>='; pkg.version >= package.version
|
136
|
+
when '<'; pkg.version < package.version
|
137
|
+
when '<='; pkg.version <= package.version
|
138
|
+
end
|
139
|
+
}
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
return result
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
|
148
|
+
def _expression_to_sql (value)
|
149
|
+
value.downcase!
|
150
|
+
value.gsub!(/(\s+and\s+|\s*&&\s*)/i, ' && ')
|
151
|
+
value.gsub!(/(\s+or\s+|\s*\|\|\s*)/i, ' || ')
|
152
|
+
value.gsub!(/(\s+not\s+|\s*!\s*)/i, ' !')
|
153
|
+
value.gsub!(/\(\s*!/, '(!')
|
154
|
+
|
155
|
+
joins = String.new
|
156
|
+
names = []
|
157
|
+
expression = value.clone
|
158
|
+
|
159
|
+
expression.scan(/(("(([^\\"]|\\.)*)")|([^\s&!|()]+))/) {|match|
|
160
|
+
names.push((match[2] || match[4]).downcase)
|
161
|
+
}
|
162
|
+
|
163
|
+
names.compact!
|
164
|
+
names.uniq!
|
165
|
+
|
166
|
+
names.each_index {|index|
|
167
|
+
joins << %{
|
168
|
+
LEFT JOIN (
|
169
|
+
SELECT _used_tag_#{index}.package_id
|
170
|
+
|
171
|
+
FROM packo_models_package_tags AS _used_tag_#{index}
|
172
|
+
|
173
|
+
INNER JOIN packo_models_tags AS _tag_#{index}
|
174
|
+
ON _used_tag_#{index}.tag_id = _tag_#{index}.id AND _tag_#{index}.name = ?
|
175
|
+
) AS _tag_check_#{index}
|
176
|
+
ON packo_models_repository_packages.id = _tag_check_#{index}.package_id
|
177
|
+
}
|
178
|
+
|
179
|
+
if (replace = names[index]).match(/[\s&!|]/)
|
180
|
+
replace = %{"#{replace}"}
|
181
|
+
end
|
182
|
+
|
183
|
+
expression.gsub!(/([\s()]|\G)!\s*#{Regexp.escape(replace)}([\s()]|$)/, "\\1 (_tag_check_#{index}.package_id IS NULL) \\2")
|
184
|
+
expression.gsub!(/([\s()]|\G)#{Regexp.escape(replace)}([\s()]|$)/, "\\1 (_tag_check_#{index}.package_id IS NOT NULL) \\2")
|
185
|
+
}
|
186
|
+
|
187
|
+
expression.gsub!(/([\G\s()])&&([\s()\A])/, '\1 AND \2')
|
188
|
+
expression.gsub!(/([\G\s()])\|\|([\s()\A])/, '\1 OR \2')
|
189
|
+
expression.gsub!(/([\G\s()])!([\s()\A])/, '\1 NOT \2')
|
190
|
+
|
191
|
+
return joins, names, expression
|
192
|
+
end
|
193
|
+
|
194
|
+
def _find_by_expression (expression)
|
195
|
+
joins, names, expression = _expression_to_sql(expression)
|
196
|
+
|
197
|
+
repository.adapter.select(%{
|
198
|
+
SELECT DISTINCT packo_models_repository_packages.id
|
199
|
+
|
200
|
+
FROM packo_models_repository_packages
|
201
|
+
|
202
|
+
#{joins}
|
203
|
+
|
204
|
+
WHERE packo_models_repository_packages.repo_id = ? #{"AND (#{expression})" if !expression.empty?}
|
205
|
+
}, *(names + [id])) rescue []
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
end; end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
require 'packo/models/repository/binary/mirror'
|
21
|
+
|
22
|
+
module Packo; module Models; class Repository
|
23
|
+
|
24
|
+
class Binary
|
25
|
+
include DataMapper::Resource
|
26
|
+
|
27
|
+
belongs_to :repo, 'Repository', key: true
|
28
|
+
|
29
|
+
has n, :mirrors, constraint: :destroy
|
30
|
+
end
|
31
|
+
|
32
|
+
end; end; end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
module Packo; module Models; class Repository; class Binary
|
21
|
+
|
22
|
+
class Mirror
|
23
|
+
include DataMapper::Resource
|
24
|
+
|
25
|
+
property :id, Serial
|
26
|
+
|
27
|
+
belongs_to :binary
|
28
|
+
|
29
|
+
property :id, Serial
|
30
|
+
|
31
|
+
property :binary_id, Integer, unique_index: :a
|
32
|
+
property :uri, URI, unique_index: :a
|
33
|
+
end
|
34
|
+
|
35
|
+
end; end; end; end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
require 'packo/models/tag'
|
21
|
+
require 'packo/models/repository/package/binary'
|
22
|
+
require 'packo/models/repository/package/source'
|
23
|
+
require 'packo/models/repository/package/virtual'
|
24
|
+
|
25
|
+
module Packo; module Models; class Repository
|
26
|
+
|
27
|
+
class Package
|
28
|
+
include DataMapper::Resource
|
29
|
+
|
30
|
+
property :id, Serial
|
31
|
+
|
32
|
+
belongs_to :repo, 'Repository'
|
33
|
+
has n, :tags, through: Resource, constraint: :destroy
|
34
|
+
|
35
|
+
property :repository_id, Integer, unique_index: :a
|
36
|
+
property :tags_hashed, String, length: 40, required: true, unique_index: :a
|
37
|
+
property :name, String, length: 255, required: true, unique_index: :a
|
38
|
+
property :version, Version, required: true, unique_index: :a
|
39
|
+
property :slot, String, default: '', unique_index: :a
|
40
|
+
property :revision, Integer, default: 0
|
41
|
+
|
42
|
+
property :description, Text
|
43
|
+
property :homepage, Text
|
44
|
+
property :license, Text
|
45
|
+
|
46
|
+
property :maintainer, String
|
47
|
+
|
48
|
+
after :create do |package|
|
49
|
+
case package.repo.type
|
50
|
+
when :binary; Binary.create(package: package)
|
51
|
+
when :source; Source.create(package: package)
|
52
|
+
when :virtual; Virtual.create(package: package)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
after :save do |package|
|
57
|
+
package.data.save if package.data
|
58
|
+
end
|
59
|
+
|
60
|
+
after :destroy do |package|
|
61
|
+
package.data.destroy! if package.data
|
62
|
+
end
|
63
|
+
|
64
|
+
def data
|
65
|
+
case repo.type
|
66
|
+
when :binary; Binary.first_or_create(package: self)
|
67
|
+
when :source; Source.first_or_create(package: self)
|
68
|
+
when :virtual; Virtual.first_or_create(package: self)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end; end; end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
require 'packo/models/repository/package/binary/build'
|
21
|
+
|
22
|
+
module Packo; module Models; class Repository; class Package
|
23
|
+
|
24
|
+
class Binary
|
25
|
+
include DataMapper::Resource
|
26
|
+
|
27
|
+
belongs_to :package, key: true
|
28
|
+
|
29
|
+
property :features, Text, default: ''
|
30
|
+
|
31
|
+
has n, :builds, constraint: :destroy
|
32
|
+
end
|
33
|
+
|
34
|
+
end; end; end; end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
module Packo; module Models; class Repository; class Package; class Binary
|
21
|
+
|
22
|
+
class Build
|
23
|
+
include DataMapper::Resource
|
24
|
+
|
25
|
+
belongs_to :binary
|
26
|
+
|
27
|
+
property :id, Serial
|
28
|
+
|
29
|
+
property :binary_package_id, Integer, unique_index: :a
|
30
|
+
property :flavor, Text, default: '', unique_index: :a
|
31
|
+
property :features, Text, default: '', unique_index: :a
|
32
|
+
|
33
|
+
property :digest, Text, default: ''
|
34
|
+
end
|
35
|
+
|
36
|
+
end; end; end; end; end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
require 'packo/models/repository/package/source/feature'
|
21
|
+
require 'packo/models/repository/package/source/flavor'
|
22
|
+
|
23
|
+
module Packo; module Models; class Repository; class Package
|
24
|
+
|
25
|
+
class Source
|
26
|
+
include DataMapper::Resource
|
27
|
+
|
28
|
+
belongs_to :package, key: true
|
29
|
+
|
30
|
+
property :path, Text, default: ''
|
31
|
+
|
32
|
+
has n, :features, constraint: :destroy
|
33
|
+
has n, :flavor, constraint: :destroy
|
34
|
+
end
|
35
|
+
|
36
|
+
end; end; end; end
|