packo 0.0.1.alpha.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.
Files changed (107) hide show
  1. data/bin/packo +78 -0
  2. data/bin/packo-base +24 -0
  3. data/bin/packo-build +24 -0
  4. data/bin/packo-db +24 -0
  5. data/bin/packo-env +24 -0
  6. data/bin/packo-files +24 -0
  7. data/bin/packo-profile +24 -0
  8. data/bin/packo-repository +24 -0
  9. data/bin/packo-select +24 -0
  10. data/lib/packo.rb +186 -0
  11. data/lib/packo/cli.rb +79 -0
  12. data/lib/packo/cli/base.rb +554 -0
  13. data/lib/packo/cli/build.rb +488 -0
  14. data/lib/packo/cli/database.rb +55 -0
  15. data/lib/packo/cli/database/definition.rb +65 -0
  16. data/lib/packo/cli/database/helpers.rb +20 -0
  17. data/lib/packo/cli/environment.rb +45 -0
  18. data/lib/packo/cli/files.rb +153 -0
  19. data/lib/packo/cli/profile.rb +31 -0
  20. data/lib/packo/cli/repository.rb +561 -0
  21. data/lib/packo/cli/repository/binary.rb +74 -0
  22. data/lib/packo/cli/repository/helpers.rb +20 -0
  23. data/lib/packo/cli/repository/repository.rb +48 -0
  24. data/lib/packo/cli/repository/source.rb +91 -0
  25. data/lib/packo/cli/repository/virtual.rb +53 -0
  26. data/lib/packo/cli/select.rb +61 -0
  27. data/lib/packo/do.rb +249 -0
  28. data/lib/packo/environment.rb +269 -0
  29. data/lib/packo/extensions.rb +70 -0
  30. data/lib/packo/flags.rb +64 -0
  31. data/lib/packo/host.rb +121 -0
  32. data/lib/packo/models.rb +171 -0
  33. data/lib/packo/models/installed_package.rb +190 -0
  34. data/lib/packo/models/installed_package/content.rb +50 -0
  35. data/lib/packo/models/installed_package/dependency.rb +39 -0
  36. data/lib/packo/models/repository.rb +209 -0
  37. data/lib/packo/models/repository/binary.rb +32 -0
  38. data/lib/packo/models/repository/binary/mirror.rb +35 -0
  39. data/lib/packo/models/repository/package.rb +73 -0
  40. data/lib/packo/models/repository/package/binary.rb +34 -0
  41. data/lib/packo/models/repository/package/binary/build.rb +36 -0
  42. data/lib/packo/models/repository/package/source.rb +36 -0
  43. data/lib/packo/models/repository/package/source/feature.rb +36 -0
  44. data/lib/packo/models/repository/package/source/flavor.rb +36 -0
  45. data/lib/packo/models/repository/package/virtual.rb +32 -0
  46. data/lib/packo/models/repository/source.rb +30 -0
  47. data/lib/packo/models/repository/virtual.rb +30 -0
  48. data/lib/packo/models/selector.rb +34 -0
  49. data/lib/packo/models/tag.rb +30 -0
  50. data/lib/packo/package.rb +239 -0
  51. data/lib/packo/package/blocker.rb +100 -0
  52. data/lib/packo/package/blockers.rb +40 -0
  53. data/lib/packo/package/dependencies.rb +40 -0
  54. data/lib/packo/package/dependency.rb +100 -0
  55. data/lib/packo/package/feature.rb +55 -0
  56. data/lib/packo/package/features.rb +105 -0
  57. data/lib/packo/package/flavor.rb +101 -0
  58. data/lib/packo/package/tags.rb +60 -0
  59. data/lib/packo/package/tags/expression.rb +130 -0
  60. data/lib/packo/package/tags/expression/group.rb +28 -0
  61. data/lib/packo/package/tags/expression/logic.rb +48 -0
  62. data/lib/packo/package/tags/expression/name.rb +28 -0
  63. data/lib/packo/profile.rb +174 -0
  64. data/lib/packo/rbuild.rb +22 -0
  65. data/lib/packo/rbuild/behaviors.rb +20 -0
  66. data/lib/packo/rbuild/behaviors/default.rb +27 -0
  67. data/lib/packo/rbuild/feature.rb +64 -0
  68. data/lib/packo/rbuild/features.rb +65 -0
  69. data/lib/packo/rbuild/flavor.rb +67 -0
  70. data/lib/packo/rbuild/module.rb +40 -0
  71. data/lib/packo/rbuild/modules.rb +27 -0
  72. data/lib/packo/rbuild/modules/building.rb +24 -0
  73. data/lib/packo/rbuild/modules/building/autotools.rb +315 -0
  74. data/lib/packo/rbuild/modules/building/cmake.rb +38 -0
  75. data/lib/packo/rbuild/modules/building/patch.rb +84 -0
  76. data/lib/packo/rbuild/modules/building/rake.rb +74 -0
  77. data/lib/packo/rbuild/modules/building/strip.rb +41 -0
  78. data/lib/packo/rbuild/modules/misc.rb +26 -0
  79. data/lib/packo/rbuild/modules/misc/fetcher.rb +177 -0
  80. data/lib/packo/rbuild/modules/misc/fetching.rb +22 -0
  81. data/lib/packo/rbuild/modules/misc/fetching/git.rb +57 -0
  82. data/lib/packo/rbuild/modules/misc/fetching/github.rb +31 -0
  83. data/lib/packo/rbuild/modules/misc/fetching/gnu.rb +59 -0
  84. data/lib/packo/rbuild/modules/misc/fetching/mercurial.rb +51 -0
  85. data/lib/packo/rbuild/modules/misc/fetching/sourceforge.rb +47 -0
  86. data/lib/packo/rbuild/modules/misc/fetching/subversion.rb +51 -0
  87. data/lib/packo/rbuild/modules/misc/fetching/wget.rb +57 -0
  88. data/lib/packo/rbuild/modules/misc/unpacker.rb +70 -0
  89. data/lib/packo/rbuild/modules/misc/unpacking.rb +23 -0
  90. data/lib/packo/rbuild/modules/misc/unpacking/lzma.rb +34 -0
  91. data/lib/packo/rbuild/modules/misc/unpacking/tar.rb +35 -0
  92. data/lib/packo/rbuild/modules/misc/unpacking/xz.rb +34 -0
  93. data/lib/packo/rbuild/modules/misc/unpacking/zip.rb +26 -0
  94. data/lib/packo/rbuild/modules/packaging.rb +20 -0
  95. data/lib/packo/rbuild/modules/packaging/pko.rb +78 -0
  96. data/lib/packo/rbuild/package.rb +281 -0
  97. data/lib/packo/rbuild/package/manifest.rb +169 -0
  98. data/lib/packo/rbuild/stages.rb +171 -0
  99. data/lib/packo/rbuild/stages/callbacks.rb +96 -0
  100. data/lib/packo/rbuild/stages/stage.rb +50 -0
  101. data/lib/packo/repository.rb +95 -0
  102. data/lib/packo/repository/binary.rb +116 -0
  103. data/lib/packo/repository/source.rb +77 -0
  104. data/lib/packo/repository/virtual.rb +66 -0
  105. data/lib/packo/system.rb +53 -0
  106. data/lib/packo/version.rb +26 -0
  107. metadata +276 -0
data/bin/packo ADDED
@@ -0,0 +1,78 @@
1
+ #! /usr/bin/env ruby
2
+ # encoding: utf-8
3
+ #--
4
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
5
+ #
6
+ # This file is part of packo.
7
+ #
8
+ # packo is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU Affero General Public License as published
10
+ # by the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # packo is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU Affero General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU Affero General Public License
19
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
20
+ #++
21
+
22
+ commands = Dir.glob('/usr/bin/packo-*').map {|path|
23
+ File.basename(path).sub('packo-', '')
24
+ }
25
+
26
+ descriptions = {
27
+ :base => 'Manage packages in the system',
28
+ :files => 'Manage various informations about package contents',
29
+ :build => 'Manage packø building system',
30
+ :select => 'Manage various configurations',
31
+ :repository => 'Manage packø repositories',
32
+ :env => 'Manage packø environment',
33
+ :db => 'Manage packø databases',
34
+ :profile => 'Manage packø profiles',
35
+ }
36
+
37
+ trusted = [:base, :select, :db, :profile]
38
+
39
+ if commands.member?(ARGV.first)
40
+ command = ARGV.shift
41
+ sandbox = false
42
+ fakeroot = false
43
+
44
+ ENV['PATH'].split(':').each {|folder|
45
+ sandbox = File.executable?("#{folder}/sandbox") if !sandbox
46
+ fakeroot = File.executable?("#{folder}/fakeroot") if !fakeroot
47
+ }
48
+
49
+ warn "sandbox isn't installed" if !sandbox
50
+ warn "fakeroot isn't installed" if !fakeroot
51
+
52
+ exit system(*([((!trusted.include?(command.to_sym)) ? 'sandbox' : nil), 'fakeroot', "packo-#{command}"] + ARGV).compact)
53
+ end
54
+
55
+ require 'rubygems' unless defined?(Gem)
56
+
57
+ require 'packo'
58
+ require 'packo/cli/base'
59
+
60
+ class Application < Packo::CLI::Base
61
+ class_option :help, :type => :boolean, :desc => 'Show help usage'
62
+
63
+ desc 'version', 'Show current version'
64
+ map '-v' => :version, '--version' => :version
65
+ def version
66
+ puts "packø v. #{Packo.version}"
67
+ end
68
+ end
69
+
70
+ commands.each {|command|
71
+ Application.class_eval %{
72
+ desc '#{command} [ARGUMENTS...]', '#{descriptions[command.to_sym] || '...'}'
73
+ def #{command} (*arguments)
74
+ end
75
+ }
76
+ }
77
+
78
+ Application.start(ARGV)
data/bin/packo-base ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/base'
24
+ Packo::CLI::Base.start(ARGV)
data/bin/packo-build ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/build'
24
+ Packo::CLI::Build.start(ARGV)
data/bin/packo-db ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/database'
24
+ Packo::CLI::Database.start(ARGV)
data/bin/packo-env ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/environment'
24
+ Packo::CLI::Environment.start(ARGV)
data/bin/packo-files ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/files'
24
+ Packo::CLI::Files.start(ARGV)
data/bin/packo-profile ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/profile'
24
+ Packo::CLI::Profile.start(ARGV)
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/repository'
24
+ Packo::CLI::Repository.start(ARGV)
data/bin/packo-select ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
4
+ #
5
+ # This file is part of packo.
6
+ #
7
+ # packo is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # packo is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with packo. If not, see <http://www.gnu.org/licenses/>.
19
+ #++
20
+
21
+ require 'rubygems' unless defined?(Gem)
22
+
23
+ require 'packo/cli/select'
24
+ Packo::CLI::Select.start(ARGV)
data/lib/packo.rb ADDED
@@ -0,0 +1,186 @@
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 'ostruct'
21
+
22
+ module Packo
23
+ def self.sh (*cmd, &block)
24
+ options = (Hash === cmd.last) ? cmd.pop : {}
25
+
26
+ if !block_given?
27
+ show_command = cmd.join(' ')
28
+ show_command = show_command[0, 42] + '...' unless $trace
29
+
30
+ block = lambda {|ok, status|
31
+ ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}] in {#{Dir.pwd}}"
32
+ }
33
+ end
34
+
35
+ if options[:silent]
36
+ options[:out] = '/dev/null'
37
+ options[:err] = '/dev/null'
38
+ else
39
+ print "#{cmd.first} "
40
+ cmd[1 .. cmd.length].each {|cmd|
41
+ if cmd.match(/[ \$'`]/)
42
+ print %Q{"#{cmd}" }
43
+ else
44
+ print "#{cmd} "
45
+ end
46
+ }
47
+ print "\n"
48
+ end
49
+
50
+ options.delete :silent
51
+
52
+ result = Kernel.system(options[:env] || {}, *cmd, options)
53
+ status = $?
54
+
55
+ block.call(result, status)
56
+ end
57
+
58
+ def self.debug (argument, options={})
59
+ if !Packo.const_defined?(:System) || (!System.env[:DEBUG] && !options[:force])
60
+ return
61
+ end
62
+
63
+ if System.env[:DEBUG].to_i < (options[:level] || 1) && !options[:force]
64
+ return
65
+ end
66
+
67
+ output = "[#{Time.new}] From: #{caller[0, options[:deep] || 1].join("\n")}\n"
68
+
69
+ if argument.is_a?(Exception)
70
+ output << "#{argument.class}: #{argument.message}\n"
71
+ output << argument.backtrace.collect {|stack|
72
+ stack
73
+ }.join("\n")
74
+ output << "\n\n"
75
+ elsif argument.is_a?(String)
76
+ output << "#{argument}\n"
77
+ else
78
+ output << "#{argument.inspect}\n"
79
+ end
80
+
81
+ if options[:separator]
82
+ output << options[:separator]
83
+ end
84
+
85
+ puts output
86
+ end
87
+
88
+ def self.load (path, options={})
89
+ if !File.readable? path
90
+ raise LoadError.new("no such file to load -- #{path}")
91
+ end
92
+
93
+ eval("#{options[:before]}#{File.read(path, encoding: 'utf-8').split(/^__END__$/).first}#{options[:after]}", options[:binding] || binding, path, 1)
94
+ end
95
+
96
+ def self.loadPackage (path, package=nil)
97
+ options = {
98
+ before: 'module ::Packo::RBuild;',
99
+ after: ';end'
100
+ }
101
+
102
+ files = {}
103
+
104
+ if package
105
+ if File.exists?("#{path}/digest.xml") && (digest = Nokogiri::XML.parse(File.read("#{path}/digest.xml")))
106
+ features = digest.xpath("//build[@version = '#{package.version}'][@slot = '#{package.slot}']/features").first
107
+
108
+ if features
109
+ features.text.split(' ').each {|feature|
110
+ next if RBuild::Features::Default[feature.to_sym]
111
+
112
+ (package.environment || Environment.new).profiles.each {|profile|
113
+ begin
114
+ Packo.load "#{profile.features}/#{feature}", options
115
+ rescue LoadError
116
+ rescue Exception => e
117
+ CLI.warn "Something went wrong while loading #{feature} feature." if System.env[:VERBOSE]
118
+ Packo.debug e
119
+ end
120
+ }
121
+ }
122
+ end
123
+
124
+ # FIXME: maybe check slot too?
125
+ digest.xpath("//build[@version = '#{package.version}']/files/file").each {|file|
126
+ tmp = OpenStruct.new(
127
+ name: file['name'],
128
+ url: file['url'],
129
+ digest: file.text
130
+ )
131
+
132
+ files[file['name']] = tmp
133
+ files[file['url']] = tmp
134
+ }
135
+ end
136
+
137
+ begin
138
+ Packo.load "#{path}/#{package.name}.rbuild", options
139
+
140
+ if (pkg = RBuild::Package.last) && (tmp = File.read("#{path}/#{package.name}.rbuild").split(/^__END__$/)).length > 1
141
+ pkg.filesystem.parse(tmp.last.lstrip)
142
+ end
143
+ rescue Exception => e
144
+ Packo.debug e
145
+ end
146
+
147
+ Packo.load "#{path}/#{package.name}-#{package.version}.rbuild", options
148
+
149
+ if RBuild::Package.last.name == package.name && RBuild::Package.last.version == package.version
150
+ RBuild::Package.last.filesystem.merge!(pkg.filesystem)
151
+
152
+ if (tmp = File.read("#{path}/#{package.name}-#{package.version}.rbuild").split(/^__END__$/)).length > 1
153
+ RBuild::Package.last.filesystem.parse(tmp.last.lstrip)
154
+ end
155
+
156
+ if File.directory?("#{path}/data")
157
+ RBuild::Package.last.filesystem.load("#{path}/data")
158
+ end
159
+
160
+ RBuild::Package.last.digests = files
161
+
162
+ return RBuild::Package.last
163
+ end
164
+ else
165
+ begin
166
+ Packo.load path, options
167
+
168
+ if (pkg = RBuild::Package.last) && (tmp = File.read(path).split(/^__END__$/)).length > 1
169
+ pkg.filesystem.parse(tmp.last.lstrip)
170
+ end
171
+ rescue Exception => e
172
+ Packo.debug e
173
+ end
174
+
175
+ return RBuild::Package.last
176
+ end
177
+ end
178
+ end
179
+
180
+ require 'packo/version'
181
+ require 'packo/extensions'
182
+ require 'packo/system'
183
+ require 'packo/do'
184
+ require 'packo/cli'
185
+ require 'packo/repository'
186
+ require 'packo/package'