diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..f466aa3 --- /dev/null +++ b/Gemfile @@ -0,0 +1,5 @@ +source "http://rubygems.org" + +gemspec + +gem 'ruby-debug' diff --git a/README.md b/README.md index 3229996..4facbde 100644 --- a/README.md +++ b/README.md @@ -78,3 +78,7 @@ $ dpkg --info pkg/git_1.7.5.4-1+github1_amd64.deb Homepage: http://git-scm.com Description: The Git DVCS with custom patches and bugfixes for GitHub. ``` + +## Building on OSX + +Some packages can be built on OSX, but you must install the [dpkg](https://raw.github.com/gist/1137917/318569ae4f6748024fa9416271a012bb97e1f6e5/dpkg-homebrew), findutils, and gnu-tar packages from homebrew. diff --git a/bin/brew2deb b/bin/brew2deb index 9e83995..b36def1 100755 --- a/bin/brew2deb +++ b/bin/brew2deb @@ -1,33 +1,5 @@ #!/usr/bin/env ruby -require 'optparse' -require 'fileutils' -formula = ARGV.find{ |arg| arg =~ /\.rb$/ and File.exists?(arg) } -formula ||= 'formula.rb' - -unless File.exists?(formula) - STDERR.puts '*** No formula.rb found in the working directory' - exit(1) -end - -Dir.chdir File.dirname(File.expand_path(formula)) - -if ARGV.include? 'clean' - FileUtils.rm_rf %w[ tmp-build tmp-install ], :verbose => true - exit -end - -$:.unshift File.expand_path('../../lib', __FILE__) -require 'debian_formula' - -Object.__send__ :remove_const, :HOMEBREW_CACHE -HOMEBREW_WORKDIR = Pathname.new(Dir.pwd) -HOMEBREW_CACHE = HOMEBREW_WORKDIR+'src' -FileUtils.mkdir_p(HOMEBREW_CACHE) - -$:.unshift File.expand_path('.') -load formula - -klass = File.read(formula)[/class (\w+)/, 1] -eval(klass).package! +require 'brew2deb' +Brew2Deb::CLI.run diff --git a/brew2deb.gemspec b/brew2deb.gemspec new file mode 100644 index 0000000..5370e06 --- /dev/null +++ b/brew2deb.gemspec @@ -0,0 +1,20 @@ +require 'date' + +Gem::Specification.new do |s| + s.name = 'brew2deb' + s.version = '0.0.0' + s.date = Date.today.to_s + + s.summary = "homebrew + fpm = debian packages" + s.description = s.summary + + s.authors = ['Aman Gupta'] + s.email = 'aman@tmm1.net' + s.homepage = 'http://github.com/tmm1/brew2deb' + + s.files = Dir['lib/**/*'] + s.bindir = 'bin' + s.default_executable = 'bin/brew2deb' + + s.add_dependency 'fpm' +end diff --git a/fpm/lib/fpm/builder.rb b/fpm/lib/fpm/builder.rb index c86d161..47150b9 100644 --- a/fpm/lib/fpm/builder.rb +++ b/fpm/lib/fpm/builder.rb @@ -203,7 +203,7 @@ def generate_md5sums def checksum(paths) paths.collect do |path| next if !File.exists?(path) - %x{find #{path} -type f -printf %P\\\\0 | xargs -0 md5sum}.split("\n") + %x{gfind #{path} -type f -printf %P\\\\0 | xargs -0 md5sum}.split("\n") end.flatten end # def checksum end diff --git a/fpm/lib/fpm/source.rb b/fpm/lib/fpm/source.rb index 50e6e78..cd509ca 100644 --- a/fpm/lib/fpm/source.rb +++ b/fpm/lib/fpm/source.rb @@ -129,7 +129,7 @@ def tar(output, paths, chdir=".") files_tar = [ tar_cmd ] \ + excludes \ - + [ "--owner=root", "--group=root", "-rf", output ] \ + + [ "--owner=root", "-rf", output ] \ + paths ::Dir.chdir(chdir) do system(*files_tar) @@ -139,7 +139,7 @@ def tar(output, paths, chdir=".") def tar_cmd # Rely on gnu tar for solaris. case %x{uname -s}.chomp - when "SunOS" + when "SunOS", "Darwin" return "gtar" else return "tar" diff --git a/lib/brew2deb.rb b/lib/brew2deb.rb new file mode 100644 index 0000000..0e47539 --- /dev/null +++ b/lib/brew2deb.rb @@ -0,0 +1,52 @@ +require 'fileutils' +require 'optparse' +require 'ostruct' +require 'tempfile' + +require 'fpm' +require "fpm/program" + +module Brew2Deb + def self.clean(env) + [env.build_dir, env.install_dir].each do |dir| + FileUtils.rm_rf dir, :verbose => env.verbose + end + end + + def self.build(env) + load_hacks!(env) + + formula = load_formula(env) + + formula.package!(env) + end + + def self.load_hacks!(env) + load_homebrew(env) + load_extensions + end + + def self.load_homebrew(env) + Kernel.eval("::HOMEBREW_WORKDIR = Pathname.new('#{env.base_dir}')") + Kernel.eval("::HOMEBREW_CACHE = Pathname.new('#{env.cache_dir}')") + + $:.unshift(env.homebrew_library_dir) + require 'global' + require 'formula' + end + + def self.load_extensions + require 'brew2deb/ext/string' + require 'brew2deb/ext/formula' + require 'brew2deb/ext/debian_formula' + require 'brew2deb/ext/debian_source_formula' + end + + def self.load_formula(env) + load env.formula + eval(File.read(env.formula)[/class (\w+)/, 1]) + end +end + +require 'brew2deb/cli' +require 'brew2deb/env' diff --git a/lib/brew2deb/cli.rb b/lib/brew2deb/cli.rb new file mode 100644 index 0000000..c28e095 --- /dev/null +++ b/lib/brew2deb/cli.rb @@ -0,0 +1,72 @@ +module Brew2Deb + module CLI + def self.run(argv = ARGV) + options = {} + + if argv.empty? + options[:formula] = 'formula.rb' + elsif argv.first !~ /^-/ + options[:formula] = argv.shift + end + + parse(options, argv) + + env = Env.new(options) + Brew2Deb.send(env.action, env) + end + + def self.parse(options, argv) + optparse = OptionParser.new do |opts| + opts.on('-a', '--architecture', 'i386 or amd64') do |arch| + options[:architecture] = arch + end + + opts.on('-b', '--build', 'Build the formula (DEFAULT)') do + options[:action] = :build + end + + opts.on('-c', '--clean', 'Clean the package.') do + options[:action] = :clean + end + + opts.on('-d', '--dir DIR', 'Working directory. Defaults to pwd.') do |dir| + options[:base_dir] = Pathname.new(dir) + end + + opts.on('-e', '--cache-dir DIR', 'Cache directory. Defaults to pwd/tmp-cache.') do |dir| + options[:cache_dir] = Pathname.new(dir) + end + + opts.on('-f', '--formula FILE', 'The homebrew formula file.') do |file| + options[:formula] = file + end + + opts.on('-i', '--install-dir DIR', 'Build directory. Defaults to pwd/tmp-install.') do |dir| + options[:install_dir] = Pathname.new(dir) + end + + opts.on('-o', '--homebrew-dir DIR', 'Homebrew installation dir.') do |dir| + options[:homebrew_dir] = Pathname.new(dir) + end + + opts.on('-p', '--package-dir DIR', 'Package directory. Defaults to pwd/pkg.') do |dir| + options[:package_dir] = Pathname.new(dir) + end + + opts.on('-u', '--build-dir DIR', 'Build directory. Defaults to pwd/tmp-build.') do |dir| + options[:build_dir] = Pathname.new(dir) + end + + opts.on('-t', '--output-dir DIR', 'Output directory. Defaults to pwd.') do |dir| + options[:output_dir] = Pathname.new(dir) + end + + opts.on('-v', '--verbose') do + options[:verbose] = true + end + end + + optparse.parse(argv) + end + end +end diff --git a/lib/brew2deb/env.rb b/lib/brew2deb/env.rb new file mode 100644 index 0000000..cff62ab --- /dev/null +++ b/lib/brew2deb/env.rb @@ -0,0 +1,42 @@ +module Brew2Deb + class Env < OpenStruct + def self.defaults + { + :action => :build, + :architecture => 'i386', + :base_dir => Pathname.new(Dir.pwd), + :homebrew_dir => Pathname.new(File.dirname(__FILE__)) + 'vendor' + 'homebrew', + } + end + + def self.new(attrs = {}) + super(defaults.merge(attrs)) + end + + def build_dir + super || begin + base_dir + 'tmp-build' + end + end + + def install_dir + super || begin + base_dir + 'tmp-install' + end + end + + def homebrew_library_dir + homebrew_dir + 'Library/Homebrew' + end + + def package_dir + super || begin + base_dir + 'pkg' + end + end + + def output_dir + super || base_dir + end + end +end diff --git a/lib/debian_formula.rb b/lib/brew2deb/ext/debian_formula.rb similarity index 73% rename from lib/debian_formula.rb rename to lib/brew2deb/ext/debian_formula.rb index 028ab6d..efe82ec 100644 --- a/lib/debian_formula.rb +++ b/lib/brew2deb/ext/debian_formula.rb @@ -1,49 +1,3 @@ -$:.unshift File.expand_path('../../homebrew/Library/Homebrew', __FILE__) -require 'tempfile' -require 'global' -require 'formula' - -class String - # Useful for writing indented String and unindent on demand, based on the - # first line with indentation. - def unindent - find_indent = proc{ |l| l.find{|l| !l.strip.empty?}.to_s[/^(\s+)/, 1] } - - lines = self.split("\n") - space = find_indent[lines] - space = find_indent[lines.reverse] unless space - - strip.gsub(/^#{space}/, '') - end - alias ui unindent - - # Destructive variant of undindent, replacing the String - def unindent! - self.replace unindent - end - alias ui! unindent! -end - -class Formula - def self.attr_rw_list(*attrs) - attrs.each do |attr| - instance_variable_set("@#{attr}", []) - class_eval %Q{ - def self.#{attr}(*list) - @#{attr} ||= superclass.respond_to?(:#{attr}) ? superclass.#{attr} : [] - list.empty? ? @#{attr} : @#{attr} += list - @#{attr}.uniq! - @#{attr} - end - def self.#{attr}!(*list) - @#{attr} = [] - #{attr}(*list) - end - } - end - end -end - class DebianFormula < Formula attr_rw :name, :description attr_rw :maintainer, :section, :arch @@ -53,9 +7,11 @@ class DebianFormula < Formula attr_rw_list :provides, :conflicts, :replaces attr_rw_list :config_files - attr_accessor :skip_build + attr_accessor :skip_build, :env attr_writer :installing + attr_accessor :workdir, :builddir, :destdir, :pkgdir, :outputdir + build_depends \ 'build-essential', 'libc6-dev', @@ -144,11 +100,17 @@ def postrm end end - def self.package! + def self.package!(env) raise 'Missing name/version' if self == DebianFormula and (!name or !version) f = new + f.workdir = env.base_dir + f.builddir = env.build_dir + f.destdir = env.install_dir + f.pkgdir = env.package_dir + f.outputdir = env.output_dir + unless RUBY_PLATFORM =~ /darwin/ # Check for build deps. system '/usr/bin/dpkg-checkbuilddeps', '-d', f.class.build_depends.join(', '), '/dev/null' @@ -158,13 +120,14 @@ def self.package! end end - built_file = HOMEBREW_WORKDIR + "tmp-build/.built-#{f.name}-#{f.version.gsub(/[^\w]/,'_')}" - if File.exists?(built_file) + built_file = f.builddir + ".built-#{f.name}-#{f.version.gsub(/[^\w]/,'_')}" + + if File.exists?(built_file) && f.version != 'HEAD' f.skip_build = true f.send :ohai, 'Skipping build (`brew2deb clean` to rebuild)' end - env = ENV.to_hash + real_env = ENV.to_hash f.brew do unless f.skip_build @@ -187,7 +150,7 @@ def self.package! f.installing = false end - ENV.replace(env) + ENV.replace(real_env) f.send :ohai, 'Packaging into a .deb' f.package @@ -195,8 +158,8 @@ def self.package! end def package - FileUtils.mkdir_p(HOMEBREW_WORKDIR+'pkg') - Dir.chdir HOMEBREW_WORKDIR+'pkg' do + FileUtils.mkdir_p(pkgdir) + Dir.chdir pkgdir do epoch, ver = self.class.version.split(':', 2) if ver.nil? ver, epoch = epoch, nil @@ -250,8 +213,10 @@ def package opts << '.' - safe_system File.expand_path('../../fpm/bin/fpm', __FILE__), *opts + fpm(opts.map {|o| o.to_s}) end + + end protected @@ -272,10 +237,6 @@ def skip_clean_all? true end - def builddir - HOMEBREW_WORKDIR+'tmp-build' - end - def mkbuilddir FileUtils.mkdir_p(builddir) raise "Couldn't create build sandbox" if not builddir.directory? @@ -303,10 +264,6 @@ def maintainer end end - def workdir - HOMEBREW_WORKDIR - end - def prefix current_pathname_for('usr') end @@ -323,10 +280,6 @@ def current_pathname_for(dir) @installing ? destdir + dir : Pathname.new("/#{dir}") end - def destdir - HOMEBREW_WORKDIR+'tmp-install' - end - def configure(*args) if args.last.is_a?(Hash) opts = args.pop @@ -353,30 +306,15 @@ def build def install make :install, 'DESTDIR' => destdir end -end -class DebianSourceFormula < DebianFormula - build_depends \ - 'fakeroot', - 'devscripts', - 'dpkg-dev' + def fpm(opts = {}) + program = FPM::Program.new + paths = program.options(opts) + settings = program.instance_variable_get(:@settings) - def build - ENV['DEBEMAIL'] = maintainer - if ver = self.class.version - safe_system 'dch', '-v', ver, 'brew2deb package' - end - safe_system 'dpkg-buildpackage', '-rfakeroot', '-us', '-uc' - end - - def install - end + builder = FPM::Builder.new(settings, paths) + builder.assemble! - def package - FileUtils.mkdir_p(HOMEBREW_WORKDIR+'pkg') - Dir[HOMEBREW_WORKDIR+'tmp-build'+'*.{dsc,gz,changes,deb,udeb}'].each do |file| - FileUtils.cp file, HOMEBREW_WORKDIR+'pkg' - end + FileUtils.cp builder.output, outputdir end end - diff --git a/lib/brew2deb/ext/debian_source_formula.rb b/lib/brew2deb/ext/debian_source_formula.rb new file mode 100644 index 0000000..d312ced --- /dev/null +++ b/lib/brew2deb/ext/debian_source_formula.rb @@ -0,0 +1,24 @@ +class DebianSourceFormula < DebianFormula + build_depends \ + 'fakeroot', + 'devscripts', + 'dpkg-dev' + + def build + ENV['DEBEMAIL'] = maintainer + if ver = self.class.version + safe_system 'dch', '-v', ver, 'brew2deb package' + end + safe_system 'dpkg-buildpackage', '-rfakeroot', '-us', '-uc' + end + + def install + end + + def package + FileUtils.mkdir_p(pkgdir+'pkg') + Dir[builddir+'*.{dsc,gz,changes,deb,udeb}'].each do |file| + FileUtils.cp file, pkgdir + end + end +end diff --git a/lib/brew2deb/ext/formula.rb b/lib/brew2deb/ext/formula.rb new file mode 100644 index 0000000..2227481 --- /dev/null +++ b/lib/brew2deb/ext/formula.rb @@ -0,0 +1,19 @@ +class Formula + def self.attr_rw_list(*attrs) + attrs.each do |attr| + instance_variable_set("@#{attr}", []) + class_eval %Q{ + def self.#{attr}(*list) + @#{attr} ||= superclass.respond_to?(:#{attr}) ? superclass.#{attr} : [] + list.empty? ? @#{attr} : @#{attr} += list + @#{attr}.uniq! + @#{attr} + end + def self.#{attr}!(*list) + @#{attr} = [] + #{attr}(*list) + end + } + end + end +end diff --git a/lib/brew2deb/ext/string.rb b/lib/brew2deb/ext/string.rb new file mode 100644 index 0000000..fbb233d --- /dev/null +++ b/lib/brew2deb/ext/string.rb @@ -0,0 +1,20 @@ +class String + # Useful for writing indented String and unindent on demand, based on the + # first line with indentation. + def unindent + find_indent = proc{ |l| l.find{|l| !l.strip.empty?}.to_s[/^(\s+)/, 1] } + + lines = self.split("\n") + space = find_indent[lines] + space = find_indent[lines.reverse] unless space + + strip.gsub(/^#{space}/, '') + end + alias ui unindent + + # Destructive variant of undindent, replacing the String + def unindent! + self.replace unindent + end + alias ui! unindent! +end diff --git a/lib/brew2deb/task.rb b/lib/brew2deb/task.rb new file mode 100644 index 0000000..68872b7 --- /dev/null +++ b/lib/brew2deb/task.rb @@ -0,0 +1,23 @@ +require 'rake' +require 'rake/tasklib' +require 'brew2deb' + +module Brew2Deb + class BuildTask < Rake::TaskLib + def initialize(formula) + @name = File.basename(formula).sub(/\.rb$/, '.deb') + + @env = Env.new(:formula => formula) + + yield @env if block_given? + + define + end + + def define + task @name do + Brew2Deb.send(:build, @env) + end + end + end +end diff --git a/homebrew/.gitignore b/lib/brew2deb/vendor/homebrew/.gitignore similarity index 100% rename from homebrew/.gitignore rename to lib/brew2deb/vendor/homebrew/.gitignore diff --git a/homebrew/Library/Homebrew/LICENSE b/lib/brew2deb/vendor/homebrew/Library/Homebrew/LICENSE similarity index 100% rename from homebrew/Library/Homebrew/LICENSE rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/LICENSE diff --git a/homebrew/Library/Homebrew/blacklist.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/blacklist.rb similarity index 100% rename from homebrew/Library/Homebrew/blacklist.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/blacklist.rb diff --git a/homebrew/Library/Homebrew/cleaner.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cleaner.rb similarity index 100% rename from homebrew/Library/Homebrew/cleaner.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cleaner.rb diff --git a/homebrew/Library/Homebrew/cmd/--cache.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--cache.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--cache.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--cache.rb diff --git a/homebrew/Library/Homebrew/cmd/--cellar.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--cellar.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--cellar.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--cellar.rb diff --git a/homebrew/Library/Homebrew/cmd/--config.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--config.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--config.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--config.rb diff --git a/homebrew/Library/Homebrew/cmd/--env.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--env.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--env.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--env.rb diff --git a/homebrew/Library/Homebrew/cmd/--prefix.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--prefix.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--prefix.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--prefix.rb diff --git a/homebrew/Library/Homebrew/cmd/--repository.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--repository.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/--repository.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/--repository.rb diff --git a/homebrew/Library/Homebrew/cmd/audit.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/audit.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/audit.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/audit.rb diff --git a/homebrew/Library/Homebrew/cmd/cat.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/cat.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/cat.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/cat.rb diff --git a/homebrew/Library/Homebrew/cmd/cleanup.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/cleanup.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/cleanup.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/cleanup.rb diff --git a/homebrew/Library/Homebrew/cmd/create.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/create.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/create.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/create.rb diff --git a/homebrew/Library/Homebrew/cmd/deps.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/deps.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/deps.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/deps.rb diff --git a/homebrew/Library/Homebrew/cmd/diy.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/diy.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/diy.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/diy.rb diff --git a/homebrew/Library/Homebrew/cmd/doctor.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/doctor.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/doctor.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/doctor.rb diff --git a/homebrew/Library/Homebrew/cmd/edit.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/edit.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/edit.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/edit.rb diff --git a/homebrew/Library/Homebrew/cmd/fetch.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/fetch.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/fetch.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/fetch.rb diff --git a/homebrew/Library/Homebrew/cmd/help.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/help.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/help.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/help.rb diff --git a/homebrew/Library/Homebrew/cmd/home.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/home.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/home.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/home.rb diff --git a/homebrew/Library/Homebrew/cmd/info.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/info.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/info.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/info.rb diff --git a/homebrew/Library/Homebrew/cmd/install.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/install.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/install.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/install.rb diff --git a/homebrew/Library/Homebrew/cmd/link.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/link.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/link.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/link.rb diff --git a/homebrew/Library/Homebrew/cmd/list.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/list.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/list.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/list.rb diff --git a/homebrew/Library/Homebrew/cmd/log.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/log.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/log.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/log.rb diff --git a/homebrew/Library/Homebrew/cmd/options.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/options.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/options.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/options.rb diff --git a/homebrew/Library/Homebrew/cmd/outdated.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/outdated.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/outdated.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/outdated.rb diff --git a/homebrew/Library/Homebrew/cmd/prune.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/prune.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/prune.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/prune.rb diff --git a/homebrew/Library/Homebrew/cmd/search.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/search.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/search.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/search.rb diff --git a/homebrew/Library/Homebrew/cmd/test.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/test.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/test.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/test.rb diff --git a/homebrew/Library/Homebrew/cmd/uninstall.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/uninstall.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/uninstall.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/uninstall.rb diff --git a/homebrew/Library/Homebrew/cmd/unlink.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/unlink.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/unlink.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/unlink.rb diff --git a/homebrew/Library/Homebrew/cmd/update.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/update.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/update.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/update.rb diff --git a/homebrew/Library/Homebrew/cmd/uses.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/uses.rb similarity index 100% rename from homebrew/Library/Homebrew/cmd/uses.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/cmd/uses.rb diff --git a/homebrew/Library/Homebrew/compatibility.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/compatibility.rb similarity index 100% rename from homebrew/Library/Homebrew/compatibility.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/compatibility.rb diff --git a/homebrew/Library/Homebrew/download_strategy.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/download_strategy.rb similarity index 97% rename from homebrew/Library/Homebrew/download_strategy.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/download_strategy.rb index c487cc8..599133a 100644 --- a/homebrew/Library/Homebrew/download_strategy.rb +++ b/lib/brew2deb/vendor/homebrew/Library/Homebrew/download_strategy.rb @@ -87,7 +87,7 @@ def stage when /^PK\003\004/ # .zip archive quiet_safe_system '/usr/bin/unzip', {:quiet_flag => '-qq'}, @tarball_path chdir - when /^\037\213/, /^BZh/, /^\037\235/ # gzip/bz2/compress compressed + when /^\037\213/n, /^BZh/, /^\037\235/n # gzip/bz2/compress compressed # TODO check if it's really a tar archive safe_system 'tar', 'xf', @tarball_path chdir @@ -313,7 +313,7 @@ def fetch git_args = %w(git clone) git_args << "--depth" << "1" if support_depth? git_args << @url << @clone - safe_system *git_args + quiet_safe_system *git_args else puts "Updating #{@clone}" Dir.chdir(@clone) do @@ -521,6 +521,24 @@ def stage end end +class DirectoryStrategy < AbstractDownloadStrategy + def initialize url, name, version, specs + super + @dir = Pathname(url) + end + + def fetch ; end + + def stage + pwd = Pathname(Dir.getwd) + puts pwd + pwd.unlink + pwd.make_symlink(@dir) + Dir.chdir(pwd.to_path) + puts @dir + end +end + def detect_download_strategy url case url # We use a special URL pattern for cvs @@ -538,6 +556,7 @@ def detect_download_strategy url when %r[^https?://(.+?\.)?googlecode\.com/svn] then SubversionDownloadStrategy when %r[^https?://(.+?\.)?sourceforge\.net/svnroot/] then SubversionDownloadStrategy when %r[^http://svn.apache.org/repos/] then SubversionDownloadStrategy + when %r[^/] then DirectoryStrategy # Otherwise just try to download else CurlDownloadStrategy end diff --git a/homebrew/Library/Homebrew/exceptions.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/exceptions.rb similarity index 100% rename from homebrew/Library/Homebrew/exceptions.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/exceptions.rb diff --git a/homebrew/Library/Homebrew/extend/ARGV.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/ARGV.rb similarity index 100% rename from homebrew/Library/Homebrew/extend/ARGV.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/ARGV.rb diff --git a/homebrew/Library/Homebrew/extend/ENV.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/ENV.rb similarity index 100% rename from homebrew/Library/Homebrew/extend/ENV.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/ENV.rb diff --git a/homebrew/Library/Homebrew/extend/pathname.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/pathname.rb similarity index 100% rename from homebrew/Library/Homebrew/extend/pathname.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/pathname.rb diff --git a/homebrew/Library/Homebrew/extend/string.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/string.rb similarity index 100% rename from homebrew/Library/Homebrew/extend/string.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/extend/string.rb diff --git a/homebrew/Library/Homebrew/formula.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/formula.rb similarity index 100% rename from homebrew/Library/Homebrew/formula.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/formula.rb diff --git a/homebrew/Library/Homebrew/formula_installer.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/formula_installer.rb similarity index 100% rename from homebrew/Library/Homebrew/formula_installer.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/formula_installer.rb diff --git a/homebrew/Library/Homebrew/global.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/global.rb similarity index 84% rename from homebrew/Library/Homebrew/global.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/global.rb index 264294c..7a2d456 100644 --- a/homebrew/Library/Homebrew/global.rb +++ b/lib/brew2deb/vendor/homebrew/Library/Homebrew/global.rb @@ -10,12 +10,14 @@ HOMEBREW_VERSION = '0.8' HOMEBREW_WWW = 'http://mxcl.github.com/homebrew/' -HOMEBREW_CACHE = if Process.uid == 0 - # technically this is not the correct place, this cache is for *all users* - # so in that case, maybe we should always use it, root or not? - Pathname.new("/Library/Caches/Homebrew") -else - Pathname.new("~/Library/Caches/Homebrew").expand_path +if not defined? HOMEBREW_CACHE + HOMEBREW_CACHE = if Process.uid == 0 + # technically this is not the correct place, this cache is for *all users* + # so in that case, maybe we should always use it, root or not? + Pathname.new("/Library/Caches/Homebrew") + else + Pathname.new("~/Library/Caches/Homebrew").expand_path + end end if not defined? HOMEBREW_BREW_FILE diff --git a/homebrew/Library/Homebrew/hardware.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware.rb similarity index 100% rename from homebrew/Library/Homebrew/hardware.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware.rb diff --git a/homebrew/Library/Homebrew/hardware/linux.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware/linux.rb similarity index 100% rename from homebrew/Library/Homebrew/hardware/linux.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware/linux.rb diff --git a/homebrew/Library/Homebrew/hardware/osx.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware/osx.rb similarity index 100% rename from homebrew/Library/Homebrew/hardware/osx.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/hardware/osx.rb diff --git a/homebrew/Library/Homebrew/install.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/install.rb similarity index 100% rename from homebrew/Library/Homebrew/install.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/install.rb diff --git a/homebrew/Library/Homebrew/keg.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/keg.rb similarity index 100% rename from homebrew/Library/Homebrew/keg.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/keg.rb diff --git a/homebrew/Library/Homebrew/keg_fix_install_names.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/keg_fix_install_names.rb similarity index 100% rename from homebrew/Library/Homebrew/keg_fix_install_names.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/keg_fix_install_names.rb diff --git a/homebrew/Library/Homebrew/test/fixtures/updater_fixture.yaml b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/fixtures/updater_fixture.yaml similarity index 100% rename from homebrew/Library/Homebrew/test/fixtures/updater_fixture.yaml rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/fixtures/updater_fixture.yaml diff --git a/homebrew/Library/Homebrew/test/patches/noop-a.diff b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/patches/noop-a.diff similarity index 100% rename from homebrew/Library/Homebrew/test/patches/noop-a.diff rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/patches/noop-a.diff diff --git a/homebrew/Library/Homebrew/test/patches/noop-b.diff b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/patches/noop-b.diff similarity index 100% rename from homebrew/Library/Homebrew/test/patches/noop-b.diff rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/patches/noop-b.diff diff --git a/homebrew/Library/Homebrew/test/tarballs/configure_fails.tar.gz b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tarballs/configure_fails.tar.gz similarity index 100% rename from homebrew/Library/Homebrew/test/tarballs/configure_fails.tar.gz rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tarballs/configure_fails.tar.gz diff --git a/homebrew/Library/Homebrew/test/tarballs/testball-0.1.tbz b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tarballs/testball-0.1.tbz similarity index 100% rename from homebrew/Library/Homebrew/test/tarballs/testball-0.1.tbz rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tarballs/testball-0.1.tbz diff --git a/homebrew/Library/Homebrew/test/test_ARGV.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_ARGV.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_ARGV.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_ARGV.rb diff --git a/homebrew/Library/Homebrew/test/test_ENV.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_ENV.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_ENV.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_ENV.rb diff --git a/homebrew/Library/Homebrew/test/test_bucket.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_bucket.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_bucket.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_bucket.rb diff --git a/homebrew/Library/Homebrew/test/test_checksums.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_checksums.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_checksums.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_checksums.rb diff --git a/homebrew/Library/Homebrew/test/test_external_deps.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_external_deps.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_external_deps.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_external_deps.rb diff --git a/homebrew/Library/Homebrew/test/test_formula.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_formula.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_formula.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_formula.rb diff --git a/homebrew/Library/Homebrew/test/test_formula_install.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_formula_install.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_formula_install.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_formula_install.rb diff --git a/homebrew/Library/Homebrew/test/test_hardware.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_hardware.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_hardware.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_hardware.rb diff --git a/homebrew/Library/Homebrew/test/test_inreplace.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_inreplace.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_inreplace.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_inreplace.rb diff --git a/homebrew/Library/Homebrew/test/test_patching.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_patching.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_patching.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_patching.rb diff --git a/homebrew/Library/Homebrew/test/test_pathname_install.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_pathname_install.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_pathname_install.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_pathname_install.rb diff --git a/homebrew/Library/Homebrew/test/test_string.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_string.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_string.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_string.rb diff --git a/homebrew/Library/Homebrew/test/test_updater.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_updater.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_updater.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_updater.rb diff --git a/homebrew/Library/Homebrew/test/test_utils.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_utils.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_utils.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_utils.rb diff --git a/homebrew/Library/Homebrew/test/test_versions.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_versions.rb similarity index 100% rename from homebrew/Library/Homebrew/test/test_versions.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/test_versions.rb diff --git a/homebrew/Library/Homebrew/test/testball.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/testball.rb similarity index 100% rename from homebrew/Library/Homebrew/test/testball.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/testball.rb diff --git a/homebrew/Library/Homebrew/test/testing_env.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/testing_env.rb similarity index 100% rename from homebrew/Library/Homebrew/test/testing_env.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/testing_env.rb diff --git a/homebrew/Library/Homebrew/test/tests b/lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tests similarity index 100% rename from homebrew/Library/Homebrew/test/tests rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/test/tests diff --git a/homebrew/Library/Homebrew/utils.rb b/lib/brew2deb/vendor/homebrew/Library/Homebrew/utils.rb similarity index 100% rename from homebrew/Library/Homebrew/utils.rb rename to lib/brew2deb/vendor/homebrew/Library/Homebrew/utils.rb diff --git a/homebrew/README.md b/lib/brew2deb/vendor/homebrew/README.md similarity index 100% rename from homebrew/README.md rename to lib/brew2deb/vendor/homebrew/README.md diff --git a/homebrew/bin/brew b/lib/brew2deb/vendor/homebrew/bin/brew similarity index 100% rename from homebrew/bin/brew rename to lib/brew2deb/vendor/homebrew/bin/brew diff --git a/packages/cowsay/formula.rb b/packages/cowsay/formula.rb new file mode 100644 index 0000000..22273e5 --- /dev/null +++ b/packages/cowsay/formula.rb @@ -0,0 +1,16 @@ +class Cowsay < DebianFormula + url 'http://www.nog.net/~tony/warez/cowsay-3.03.tar.gz' + homepage 'http://www.nog.net/~tony/warez/cowsay.shtml' + md5 'b29169797359420dadb998079021a494' + + name 'cowsay' + version '3.03+github1' + + def install + system "/bin/sh", "install.sh", prefix + mv prefix+'man', share + end + + def configure(*) ; end + def make(*) ; end +end diff --git a/packages/openssl/formula.rb b/packages/openssl/formula.rb index 90a53b1..cbec68d 100644 --- a/packages/openssl/formula.rb +++ b/packages/openssl/formula.rb @@ -1,4 +1,4 @@ class OpenSSL < DebianSourceFormula - url 'http://backports.debian.org/debian-backports/pool/main/o/openssl/openssl_0.9.8o-4~bpo50+1.dsc' + url 'http://www.jp.backports.org/pool/main/o/openssl/openssl_0.9.8o-4~bpo50+1.dsc' md5 '0ce765777672340889a9cad03ee50fe6' end