autobuild 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Changes.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == Version 1.2.3
2
+ * Fix git update again. FETCH_HEAD may resolve as an ID which is not the one
3
+ to be selected for merge
4
+ * Make the dependency on RMail optional
5
+ * added the orogen package type
6
+
1
7
  == Version 1.2
2
8
  * Fix git update
3
9
  * Fix cmake dependency handling. Give a way to always run cmake before running
data/Manifest.txt CHANGED
@@ -20,6 +20,7 @@ lib/autobuild/packages/autotools.rb
20
20
  lib/autobuild/packages/cmake.rb
21
21
  lib/autobuild/packages/genom.rb
22
22
  lib/autobuild/packages/import.rb
23
+ lib/autobuild/packages/orogen.rb
23
24
  lib/autobuild/packages/pkgconfig.rb
24
25
  lib/autobuild/pkgconfig.rb
25
26
  lib/autobuild/reporting.rb
data/bin/autobuild CHANGED
@@ -29,10 +29,14 @@ begin
29
29
  load conffile
30
30
 
31
31
  if Autobuild.mail[:to]
32
- Reporting << MailReporter.new(Autobuild.mail)
32
+ if !Autobuild::HAS_RMAIL
33
+ STDERR.puts "RMail is not available. Mail notification is disabled"
34
+ else
35
+ Reporting << MailReporter.new(Autobuild.mail)
36
+ end
33
37
  end
34
38
 
35
- targets = ['import']
39
+ targets = ['import']
36
40
  targets += ['prepare', 'build'] if Autobuild.do_build
37
41
  targets.each do |phase|
38
42
  packages = Autobuild.packages
data/lib/autobuild.rb CHANGED
@@ -3,6 +3,6 @@ require 'autobuild/reporting'
3
3
  require 'autobuild/package'
4
4
 
5
5
  module Autobuild
6
- VERSION = "1.2.2" unless defined? Autobuild::VERSION
6
+ VERSION = "1.2.3" unless defined? Autobuild::VERSION
7
7
  end
8
8
 
@@ -31,18 +31,26 @@ module Autobuild
31
31
  def update(package)
32
32
  Dir.chdir(package.srcdir) do
33
33
  if !File.directory?('.git')
34
- raise "#{package.srcdir} is not a git repository"
34
+ raise ConfigException, "#{package.srcdir} is not a git repository"
35
35
  end
36
36
 
37
37
  # Fetch and merge if the merge leads to a fast-forward
38
38
  Subprocess.run(package.name, :import, Autobuild.tool('git'), 'fetch')
39
- common_commit = `git merge-base HEAD FETCH_HEAD`.chomp
39
+ if !File.readable?( File.join('.git', 'FETCH_HEAD') )
40
+ return
41
+ end
42
+
43
+ fetch_commit = File.readlines( File.join('.git', 'FETCH_HEAD') ).
44
+ delete_if { |l| l =~ /not-for-merge/ }
45
+ return if fetch_commit.empty?
46
+ fetch_commit = fetch_commit.first.split(/\s+/).first
47
+
48
+ common_commit = `git merge-base HEAD #{fetch_commit}`.chomp
40
49
  head_commit = `git rev-parse HEAD`.chomp
41
- fetch_commit = `git rev-parse FETCH_HEAD`.chomp
42
50
 
43
51
  if common_commit != fetch_commit
44
52
  if merge? || common_commit == head_commit
45
- Subprocess.run(package.name, :import, Autobuild.tool('git'), 'merge', 'FETCH_HEAD')
53
+ Subprocess.run(package.name, :import, Autobuild.tool('git'), 'merge', fetch_commit)
46
54
  else
47
55
  raise "importing the current version would lead to a non fast-forward"
48
56
  end
@@ -0,0 +1,48 @@
1
+ module Autobuild
2
+ def self.orogen(opts, &proc)
3
+ Orogen.new(opts, &proc)
4
+ end
5
+
6
+ class Orogen < CMake
7
+ class << self
8
+ attr_accessor :corba
9
+ end
10
+
11
+ attr_accessor :corba
12
+
13
+ attr_accessor :orogen_file
14
+ def initialize(*args, &config)
15
+ @corba = Orogen.corba
16
+ super
17
+
18
+ @orogen_file ||= "#{File.basename(name)}.orogen"
19
+
20
+ task "#{name}-prepare" => genstamp
21
+ file genstamp => File.join(srcdir, orogen_file) do
22
+ regen
23
+ end
24
+ end
25
+
26
+ def depends_on(*packages)
27
+ super
28
+
29
+ packages.each do |p|
30
+ file genstamp => Package[p].installstamp
31
+ end
32
+ end
33
+
34
+ def genstamp; File.join(srcdir, '.orogen', 'orogen-stamp') end
35
+
36
+ def regen
37
+ cmdline = [Autobuild.tool('orogen')]
38
+ cmdline << '--corba' if corba
39
+ cmdline << orogen_file
40
+
41
+ Dir.chdir(srcdir) do
42
+ Subprocess.run name, 'orogen', *cmdline
43
+ touch_stamp genstamp
44
+ end
45
+ end
46
+ end
47
+ end
48
+
@@ -1,5 +1,11 @@
1
- require 'rmail'
2
- require 'rmail/serialize'
1
+ begin
2
+ require 'rmail'
3
+ require 'rmail/serialize'
4
+ Autobuild::HAS_RMAIL = true
5
+ rescue LoadError
6
+ Autobuild::HAS_RMAIL = false
7
+ end
8
+
3
9
  require 'net/smtp'
4
10
  require 'socket'
5
11
  require 'etc'
@@ -70,8 +76,11 @@ module Autobuild
70
76
  end
71
77
  end
72
78
  end
79
+ end
73
80
 
74
- ## Report by mail
81
+ ## Report by mail
82
+ if Autobuild::HAS_RMAIL
83
+ module Autobuild
75
84
  class MailReporter < Reporter
76
85
  def default_mail
77
86
  Etc::endpwent
@@ -154,5 +163,6 @@ module RMail
154
163
  end
155
164
  end
156
165
  end
166
+ end # if Autobuild::HAS_RMAIL
157
167
 
158
168
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autobuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-17 00:00:00 +02:00
12
+ date: 2008-10-09 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,13 +44,13 @@ dependencies:
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: hoe
47
- type: :runtime
47
+ type: :development
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 1.6.0
53
+ version: 1.7.0
54
54
  version:
55
55
  description: This work is licensed under the GPLv2 license. See License.txt for details == What's autobuild ? Autobuild imports, configures, builds and installs various kinds of software packages. It can be used in software development to make sure that nothing is broken in the build process of a set of packages, or can be used as an automated installation tool. Autobuild config files are Ruby scripts which configure rake to * imports the package from a SCM or (optionnaly) updates it * configures it. This phase can handle code generation, configuration (for instance for autotools-based packages), ... * build * install It takes the dependencies between packages into account in its build process, updates the needed environment variables (+PKG_CONFIG_PATH+, +PATH+, +LD_LIBRARY_PATH+, ...)
56
56
  email: sylvain.joyeux@m4x.org
@@ -85,6 +85,7 @@ files:
85
85
  - lib/autobuild/packages/cmake.rb
86
86
  - lib/autobuild/packages/genom.rb
87
87
  - lib/autobuild/packages/import.rb
88
+ - lib/autobuild/packages/orogen.rb
88
89
  - lib/autobuild/packages/pkgconfig.rb
89
90
  - lib/autobuild/pkgconfig.rb
90
91
  - lib/autobuild/reporting.rb