Cross package maker. DEB/RPM generation or conversion. Derived from jordansissel/fpm.

⌈⌋ ⎇ branch:  cross package maker


Check-in [5279f5e5af]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add beginnings of MiniTest::Spec support, and some basic template tests.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 5279f5e5af057774a020e4cc9df675d990505167
User & Date: ohookins@gmail.com 2012-01-02 11:15:21
Context
2012-02-20
20:45
Merge pull request #140 from ohookins/minitest Add beginnings of MiniTest::Spec support, and some basic template tests. check-in: e5c9b05d6e user: jls@semicomplete.com tags: trunk
2012-01-02
11:15
Add beginnings of MiniTest::Spec support, and some basic template tests. check-in: 5279f5e5af user: ohookins@gmail.com tags: trunk
2011-12-20
19:23
Merge pull request #137 from rajatvig/master Fixed the issues for Gems when making RPM's check-in: b5610e0be5 user: jls@semicomplete.com tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to README.md.

79
80
81
82
83
84
85
86


87
88
89
90
91
92
93
94
95
96
97
98

* deb
* rpm
* solaris

## Something broken?

FPM lacks automated testing (though I have that planned).



To compensate for lack of automated testing, should you find any bugs that
would prevent you from using fpm yourself, please let me know (file a ticket,
find me on IRC, email me, etc) and I'll fix it as quickly as I can (usually
blocker bugs get fixed within a few minutes of me finding out about such a bug)

If you have feature requests, feel free to send them my way.

## Other Documentation

[See the wiki for more docs](https://github.com/jordansissel/fpm/wiki)








|
>
>












79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

* deb
* rpm
* solaris

## Something broken?

FPM lacks much automated testing. It does have:
* BASH-based acceptance tests for finished packages
* MiniTest-based unit tests (in their infancy)

To compensate for lack of automated testing, should you find any bugs that
would prevent you from using fpm yourself, please let me know (file a ticket,
find me on IRC, email me, etc) and I'll fix it as quickly as I can (usually
blocker bugs get fixed within a few minutes of me finding out about such a bug)

If you have feature requests, feel free to send them my way.

## Other Documentation

[See the wiki for more docs](https://github.com/jordansissel/fpm/wiki)

Changes to Rakefile.



1
2
3
4








5
6
7
8
9
10
11
12
13
14
15
16
17


task :default => [:package]

task :test do
  system("make -C test")








end

task :package => [:test, :package_real]  do
end

task :package_real do
  system("gem build fpm.gemspec")
end

task :publish do
  latest_gem = %x{ls -t fpm*.gem}.split("\n").first
  system("gem push #{latest_gem}")
end
>
>




>
>
>
>
>
>
>
>













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
require 'rake/testtask'

task :default => [:package]

task :test do
  system("make -C test")
  Rake::Task[:minitest].invoke # Run these tests as well.
  # Eventually all the tests should be minitest-run or initiated.
end

# MiniTest tests
Rake::TestTask.new do |t|
  t.pattern = 'test/fpm/*.rb'
  t.name = 'minitest'
end

task :package => [:test, :package_real]  do
end

task :package_real do
  system("gem build fpm.gemspec")
end

task :publish do
  latest_gem = %x{ls -t fpm*.gem}.split("\n").first
  system("gem push #{latest_gem}")
end

Added test/fpm/fpm_target_deb.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
require 'rubygems'
require 'minitest/autorun'
require 'fpm/target/deb'
require 'fpm/source/dir'
require 'erb'

describe FPM::Target::Deb do
  it 'renders the control file template correctly' do
    # Use the 'dir' source as it is the simplest to test in isolation
    root = File.join(File.dirname(__FILE__), 'test_data')
    # paths = root = File.join(File.dirname(__FILE__), 'test_data')
    # FIXME: Should be a fully-specifed path, but needs
    # some fixes in the path handling to remove the root components.
    paths = './test_data/dir/'
    source = FPM::Source::Dir.new(paths, root)
    deb = FPM::Target::Deb.new(source)

    # Fix some properties of the package to get consistent output
    deb.scripts = {}
    deb.architecture = 'all'
    deb.maintainer = '<testdude@example.com>'

    # Render the template and compare it to our canned output
    control_output = deb.render_spec
    test_file = File.join(File.dirname(__FILE__), 'test_data', 'test_deb.control')
    file_output = File.read(test_file)
    control_output.must_equal file_output
  end
end

Added test/fpm/fpm_target_rpm.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
require 'rubygems'
require 'minitest/autorun'
require 'fpm/target/rpm'
require 'fpm/source/dir'
require 'erb'

describe FPM::Target::Rpm do
  it 'renders the spec file template correctly' do
    # Use the 'dir' source as it is the simplest to test in isolation
    root = File.join(File.dirname(__FILE__), 'test_data')
    # paths = root = File.join(File.dirname(__FILE__), 'test_data')
    # FIXME: Should be a fully-specifed path, but needs
    # some fixes in the path handling to remove the root components.
    paths = './test_data/dir/'
    source = FPM::Source::Dir.new(paths, root)
    rpm = FPM::Target::Rpm.new(source)

    # Fix some properties of the package to get consistent output
    rpm.scripts = {}
    rpm.architecture = 'all'

    # Render the template and compare it to our canned output
    spec_output = rpm.render_spec
    test_file = File.join(File.dirname(__FILE__), 'test_data', 'test_rpm.spec')
    file_output = File.read(test_file)
    spec_output.must_equal file_output
  end
end

Added test/fpm/test_data/dir/foo.

Added test/fpm/test_data/test_deb.control.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
Package: test-data
Version: 1.0
Architecture: all
Maintainer: <testdude@example.com>
Standards-Version: 3.9.1
Section: default
Priority: extra
Homepage: http://nourlgiven.example.com/no/url/given
Description: no description given

Added test/fpm/test_data/test_rpm.spec.















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
%define __jar_repack 0

Name: test_data
Version: 1.0
Release: 1
Summary: no description given
BuildArch: noarch
AutoReqProv: no

Group: default
License: unknown
URL: http://nourlgiven.example.com/no/url/given
Source0:  %{_sourcedir}/data.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

%description
no description given

%prep
# noop

%build
# noop

%install
# some rpm implementations delete the build dir and then recreate it by
# default, for some reason. Whatever, let's work around it.
cd $RPM_BUILD_ROOT
tar -zxf %SOURCE0

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)

/test_data/dir/

%changelog