public
Description: master respository for deprec - deployment recipes for capistrano
Homepage: http://www.deprec.org/
Clone URL: git://github.com/mbailey/deprec.git
Extend capistrano_extensions.rb to allow install from git sources.
jasherai (author)
Thu Aug 21 09:18:01 -0700 2008
mbailey (committer)
Mon Sep 08 19:39:50 -0700 2008
commit  65e8d87ab33e3dc8767d54728cb9e392da010d96
tree    2f24293c067cf3ab24b446143fec78a76eb67680
parent  c1137ac58d70072ea4c441651cf05b0723de1b69
...
254
255
256
257
258
259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
261
262
263
264
265
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
268
269
270
271
272
273
274
275
276
277
278
 
279
280
281
282
283
284
285
 
 
 
 
 
 
 
286
287
288
...
254
255
256
 
 
 
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
 
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
 
 
 
300
301
302
303
304
 
305
306
 
 
 
 
 
 
307
308
309
310
311
312
313
314
315
316
0
@@ -254,35 +254,63 @@ module Deprec2
0
     if defined?(src_package[:md5sum])
0
       md5_clause = " && echo '#{src_package[:md5sum]}' | md5sum -c - "
0
     end
0
-    apt.install( {:base => %w(wget)}, :stable )
0
-    # XXX replace with invoke_command
0
-    run "cd #{src_dir} && test -f #{src_package[:filename]} #{md5_clause} || #{sudo} wget --quiet --timestamping #{src_package[:url]}"
0
+    case src_package[:download_method]
0
+      # when getting source with git
0
+      when :git
0
+        # ensure git is installed
0
+        apt.install( {:base => %w(git-core)}, :stable) #TODO fix this to test ubuntu version <hardy might need specific git version for full git submodules support
0
+        package_dir = File.join(src_dir, src_package[:dir])
0
+        run "if [ -d #{package_dir} ]; then cd #{package_dir} && #{sudo} git pull && #{sudo} git submodule init && #{sudo} git submodule update; else #{sudo} git clone #{src_package[:url]} #{package_dir} && cd #{package_dir} && #{sudo} git submodule init && #{sudo} git submodule update ; fi"
0
+  # Checkout the revision wanted if defined
0
+  invoke_command "cd #{package_dir} && git co #{src_package[:version]}", :via => :via if src_package[:version]
0
+      # when getting source with wget
0
+      when :http
0
+        # ensure wget is installed
0
+        apt.install( {:base => %w(wget)}, :stable )
0
+        # XXX replace with invoke_command
0
+        run "cd #{src_dir} && test -f #{src_package[:filename]} #{md5_clause} || #{sudo} wget --quiet --timestamping #{src_package[:url]}"
0
+      else
0
+        puts "DOWNLOAD SRC: Download method not recognised. src_package[:download_method]: #{src_package[:download_method]}"
0
+    end
0
   end
0
 
0
   # unpack src and make it writable by the group
0
   def unpack_src(src_package, src_dir)
0
     set_package_defaults(src_package)
0
     package_dir = File.join(src_dir, src_package[:dir])
0
-    # XXX replace with invoke_command
0
+    case src_package[:download_method]
0
+      # when unpacking git sources - nothing to do
0
+      when :git
0
+        puts "UNPACK SRC: nothing to do for git installs"
0
+      when :http
0
+        sudo <<-EOF
0
+        bash -c '
0
+        cd #{src_dir};
0
+        test -d #{package_dir}.old && rm -fr #{package_dir}.old;
0
+        test -d #{package_dir} && mv #{package_dir} #{package_dir}.old;
0
+        #{src_package[:unpack]}
0
+        '
0
+        EOF
0
+      else
0
+        puts "UNPACK SRC: Download method not recognised. src_package[:download_method]: #{src_package[:download_method]} "
0
+    end
0
     sudo <<-EOF
0
     bash -c '
0
     cd #{src_dir};
0
-    test -d #{package_dir}.old && rm -fr #{package_dir}.old;
0
-    test -d #{package_dir} && mv #{package_dir} #{package_dir}.old;
0
-    #{src_package[:unpack]}
0
     chgrp -R #{group} #{package_dir};  
0
     chmod -R g+w #{package_dir};
0
     '
0
     EOF
0
   end
0
-  
0
+
0
   def set_package_defaults(pkg)
0
-      pkg[:filename] ||= File.basename(pkg[:url])  
0
-      pkg[:dir] ||= pkg[:filename].sub(/(\.tgz|\.tar\.gz)/,'')  
0
-      pkg[:unpack] ||= "tar zxf #{pkg[:filename]};"
0
-      pkg[:configure] ||= './configure ;'
0
-      pkg[:make] ||= 'make;'
0
-      pkg[:install] ||= 'make install;'
0
+    pkg[:filename] ||= File.basename(pkg[:url])
0
+    pkg[:dir] ||= pkg[:filename].sub(/(\.tgz|\.tar\.gz)/,'')
0
+    pkg[:download_method] ||= :http
0
+    pkg[:unpack] ||= "tar zxf #{pkg[:filename]};"
0
+    pkg[:configure] ||= './configure ;'
0
+    pkg[:make] ||= 'make;'
0
+    pkg[:install] ||= 'make install;'
0
   end
0
 
0
   # install package from source

Comments