Check-in [ce6477055a]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | - Start prototyping generic package creator. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ce6477055ad1c671f79843f82189d09c |
User & Date: | jls@semicomplete.com 2011-01-03 21:10:15 |
Context
2011-01-03
| ||
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 | |
20:08 | first commit check-in: 2b439be7d6 user: jls@semicomplete.com tags: trunk | |
Changes
Added 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 | #!/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.arch = 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 package_path = settings.package_path package_path.gsub!(/VERSION/, eval('"#{version}-#{package_iteration}"', metadata)) package_path.gsub!(/ARCH/, eval("architecture", metadata)) type = package_path.split(".")[-1] if type != "deb" $stderr.puts "Unsupported package type '#{type}'" return 1 end paths = args mkbinding = lambda do package = settings.package_name version = settings.version package_iteration = 1 maintainer = "<#{ENV["USER"]}>" category = "X11" summary = "sample summary" architecture = %x(uname -m).chomp url = "http://www.semicomplete.com/" dependencies = [] return binding end metadata = mkbinding.call 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) |
Added templates/.deb.erb.swp.
cannot compute difference between binary files
Added templates/deb.erb.
> > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 | Package: <%= package %> Version: <%= version %>-<%= package_iteration %> Architecture: <%= architecture %> Maintainer: <%= maintainer %> Installed-Size: 12345 Depends: <%= dependencies.join(", ") %> Section: <%= category %> Priority: extra Homepage: <%= url %> Description: <%= summary %> <%= summary %> |