Check-in [66a149b044]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | - Move to bin/ |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
66a149b044726dc5dd0da3c01fa8e0b2 |
User & Date: | jls@semicomplete.com 2011-01-03 21:19:08 |
Context
2011-01-03
| ||
21:23 | - finish move check-in: 2bf48dfe8e user: jls@semicomplete.com tags: trunk | |
21:19 | - Move to bin/ check-in: 66a149b044 user: jls@semicomplete.com tags: trunk | |
21:10 | - Start prototyping generic package creator. check-in: ce6477055a user: jls@semicomplete.com tags: trunk | |
Changes
Added bin/pkg.rb.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | #!/usr/bin/env ruby # require "optparse" require "ostruct" require "erb" def main(args) settings = OpenStruct.new opts = OptionParser.new do |opts| opts.banner = "Usage: #{$0} [options]" opts.on("-p PACKAGEFILE", "--package PACKAGEFILE", "The package file to manage") do |path| if path =~ /^\// settings.package_path = path else settings.package_path = "#{Dir.pwd}/#{path}" end end opts.on("-n PACKAGENAME", "--name PACKAGENAME", "What name to give to the package") do |name| settings.package_name = name end opts.on("-v VERSION", "--version VERSION", "version to give the package") do |version| settings.version = version end opts.on("-d DEPENDENCY", "--depends DEPENDENCY") do |dep| settings.dependencies ||= [] settings.dependencies << dep end opts.on("-a ARCHITECTURE", "--architecture ARCHITECTURE") do |arch| settings.architecture = arch end opts.on("-m MAINTAINER", "--maintainer MAINTAINER") do |maint| settings.maintainer = maintainer end opts.on("-C DIRECTORY", "Change directory before searching for files") do |dir| settings.chdir = dir end end # OptionParser opts.parse!(args) # Actions: # create package # # files: add, remove # scripts: add, remove # metadata: set, add, remove if !settings.package_path $stderr.puts "No package file given to manage. Give with -p PACKAGEFILE" return 1 end paths = args type = settings.package_path.split(".")[-1] mkbinding = lambda do package = settings.package_name version = settings.version package_iteration = 1 maintainer = (settings.maintainer or "<#{ENV["USER"]}>") category = (settings.category or "X11") summary = (settings.summary or "no summary given for #{package}-#{version}") architecture = (settings.architecture or %x(uname -m).chomp) if architecture == "x86_64" && type == "deb" architecture = "amd64" end url = (settings.url or "http://example.com/") dependencies = (settings.dependencies or []) return binding end metadata = mkbinding.call package_path = settings.package_path package_path.gsub!(/VERSION/, eval('"#{version}-#{package_iteration}"', metadata)) package_path.gsub!(/ARCH/, eval("architecture", metadata)) if type != "deb" $stderr.puts "Unsupported package type '#{type}'" return 1 end builddir = "#{Dir.pwd}/build-#{type}-#{File.basename(package_path)}" Dir.mkdir(builddir) if !File.directory?(builddir) template = File.new("#{File.dirname(__FILE__)}/templates/#{type}.erb").read() Dir.chdir(settings.chdir || ".") do puts Dir.pwd system(*["tar","-zcf", "#{builddir}/data.tar.gz", *paths]) # Generate md5sums md5sums = [] paths.each do |path| md5sums += %x{find #{path} -type f -print0 | xargs -0 md5sum}.split("\n") end File.open("#{builddir}/md5sums", "w") { |f| f.puts md5sums.join("\n") } # Generate 'control' file control = ERB.new(template).result(metadata) File.open("#{builddir}/control", "w") { |f| f.puts control } end # create control.tar.gz Dir.chdir(builddir) do system("tar -zcf control.tar.gz control md5sums") end Dir.chdir(builddir) do # create debian-binary File.open("debian-binary", "w") { |f| f.puts "2.0" } end Dir.chdir(builddir) do system("ar -qc #{package_path} debian-binary control.tar.gz data.tar.gz") end end ret = main(ARGV) exit(ret != nil ? ret : 0) |