#!/usr/bin/env ruby ################################################## # make a debian binary package for ubuntu # muquit@muquit.com Mar-28-2012 ################################################## # require 'fileutils' class MakeDebianPackage def initialize @dirs = [] @dirs << Dir.pwd + "/debian/DEBIAN" @dirs << Dir.pwd + "/debian/usr/bin" @dirs << Dir.pwd + "/debian/usr/share/doc/mailsend" @dirs << Dir.pwd + "/debian/usr/share/man/man1" @depends = "libc6 (>= 2.4)" # XXX CHANGE if needed @mailsend_ver = '' @package_name = '' @control_file = Dir.pwd + "/debian/DEBIAN/control" end def log(msg) t = Time.new puts "#{t}: #{msg}" end def check file = Dir.pwd + "/mailsend" if !File.exists?(file) log "#{file} does not exist, compile first" exit(1) end file = Dir.pwd + "/changelog.debian" if !File.exists?(file) log "#{file} does not exist, compile first" exit(1) end end def gen_control_file mailsend_version begin f = File.open(@control_file, "w") f.puts < Installed-Size: 104 Homepage: http://muquit.com/muquit/software/mailsend/mailsend.html Priority: optional Architecture: i386 Depends: #{@depends} Description: Send mail via SMTP protocol mailsend is a simple command line program to send mail via SMTP protocol. Among other things it supports ESMTP authentication and MIME attachments. STARTTLS and SMTP over SSL is also supported. It was originally written for Microsoft Windows but later on ported to Linux/Unix. The Homepage of mailsend is at: http://muquit.com/muquit/software/mailsend/mailsend.html License is BSD. EOD f.close rescue => ex log "Could not create '#{@control_file}' (#{ex})" end end def gen_copyright f = File.open("./debian/usr/share/doc/mailsend/COPYRIGHT", "w") year = Time.new.year f.puts < License: BSD On Debian systems, the full text of the BSD can be found at /usr/share/common-licenses/BSD EOD f.close end def compress(file) cmd = "gzip --force --best #{file}" system(cmd) end def strip_binary(file) cmd = "strip #{file}" system(cmd) end def copy_files FileUtils.copy("./mailsend", "./debian/usr/bin") strip_binary("./debian/usr/bin/mailsend") FileUtils.copy("./doc/mailsend.1.gz", "./debian/usr/share/man/man1") file = "./debian/usr/share/doc/mailsend/changelog" FileUtils.copy("./changelog.debian", file) compress(file) file = "./debian/usr/share/doc/mailsend/changelog.Debian" FileUtils.copy("./changelog.debian", file) compress(file) end def make_dirs @dirs.each do |dir| log "Make directory: #{dir}" FileUtils.mkdir_p(dir) end end def lintian package_name = get_package_name log "Running lintian on #{package_name}" cmd = "lintian #{package_name}" system(cmd) end def mailsend_version ver = `./mailsend -V 2>&1` a = ver.split("\n") l = a[0].to_s.chomp if l =~ /.*v(.*)$/ @mailsend_ver = $1 log "mailsend version: '#{@mailsend_ver}'" else log "Could not determine mailsend version" exit(1) end end def get_package_name pname = "mailsend_#{@mailsend_ver}-ubuntu_i386.deb" @package_name = pname return pname end def make_package package_name = get_package_name FileUtils.remove("./debian.deb") if File.exists?("./debian.deb") cmd = "fakeroot dpkg-deb --build debian" log "Running: #{cmd}" system(cmd) FileUtils.mv("debian.deb", package_name) log "Package: #{package_name}" end def print_install_inst puts <