Files
WrenchBoradWeb/wrenchboard/src/mailsend/scripts/mk_debian_package.rb
T
2020-07-31 04:58:02 -04:00

194 lines
4.2 KiB
Ruby
Executable File

#!/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 <<EOD
Package: mailsend
Section: utils
Version: #{@mailsend_ver}-ubuntu
Maintainer: Muhammad Muquit <muquit@muquit.com>
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 <<EOD
mailsend
Copyright #{year} Muhammad Muquit <muquit@muquit.com>
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 <<EOD
##########################################
To install the package, type:
sudo dpkg -i #{@package_name}
To remove the package, type:
sudo dpkg -r mailsend
##########################################
EOD
end
def doit
check
make_dirs
gen_control_file
gen_copyright
copy_files
make_package
lintian
print_install_inst
end
end
if __FILE__ == $0
deb = MakeDebianPackage.new
deb.doit
end