Commit 184af33a authored by Michał Siwek's avatar Michał Siwek

Implement building from source, add vim scenario as a test package

parent 549e336f
...@@ -13,6 +13,7 @@ CREW_PREFIX = '/usr/local' ...@@ -13,6 +13,7 @@ CREW_PREFIX = '/usr/local'
CREW_LIB_PATH = CREW_PREFIX + '/lib/crew/' CREW_LIB_PATH = CREW_PREFIX + '/lib/crew/'
CREW_CONFIG_PATH = CREW_PREFIX + '/etc/crew/' CREW_CONFIG_PATH = CREW_PREFIX + '/etc/crew/'
CREW_BREW_DIR = CREW_PREFIX + '/tmp/crew/' CREW_BREW_DIR = CREW_PREFIX + '/tmp/crew/'
CREW_DEST_DIR = CREW_BREW_DIR + '/dest'
$LOAD_PATH.push CREW_LIB_PATH $LOAD_PATH.push CREW_LIB_PATH
...@@ -48,9 +49,14 @@ def download ...@@ -48,9 +49,14 @@ def download
end end
uri = URI.parse url uri = URI.parse url
filename = File.basename(uri.path) filename = File.basename(uri.path)
if source
sha1sum = @pkg.source_sha1
else
sha1sum = @pkg.binary_sha1[@device[:architecture]]
end
Dir.chdir CREW_BREW_DIR do Dir.chdir CREW_BREW_DIR do
system('wget', '--content-disposition', url) system('wget', '--content-disposition', url)
abort 'Checksum mismatch :/ try again' unless Digest::SHA1.hexdigest( File.read("./#{filename}") ) == @pkg.binary_sha1[@device[:architecture]] abort 'Checksum mismatch :/ try again' unless Digest::SHA1.hexdigest( File.read("./#{filename}") ) == sha1sum
end end
puts "Archive downloaded" puts "Archive downloaded"
return {source: source, filename: filename} return {source: source, filename: filename}
...@@ -117,22 +123,38 @@ def install ...@@ -117,22 +123,38 @@ def install
unless @pkg.is_fake? unless @pkg.is_fake?
meta = download meta = download
Dir.chdir CREW_BREW_DIR do
puts "Unpacking archive, this may take a while..."
system "tar", "zxf", meta[:filename]
if meta[:source] == true if meta[:source] == true
puts "Building from source, this may take a while..." puts "Building from source, this may take a while..."
sytem "cd *"
@pkg.build @pkg.build
system "rm -rf", CREW_DEST_DIR + "/*" #wipe crew destdir
puts "Installing..." puts "Installing..."
@pkg.install @pkg.install
else
Dir.chdir CREW_BREW_DIR do
puts "Unpacking archive, this may take a while..."
system "tar", "zxf", meta[:filename]
Dir.chdir CREW_DEST_DIR do
#create directory list
system "find . -type f > ../filelist"
system "find . -type l >> ../filelist"
system "cut -c2- ../filelist > filelist"
#create file list
system "find . -type d > ../dlist"
system "cut -c2- ../dlist > dlistcut"
system "tail -n +2 dlistcut > dlist"
#remove temporary files
system "rm dlistcut ../dlist ../filelist"
#move result files and directories to brew dir
system "mv * ../"
end
end
puts "Installing..." puts "Installing..."
FileUtils.mv './dlist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.directorylist" FileUtils.mv './dlist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.directorylist"
FileUtils.mv './filelist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.filelist" FileUtils.mv './filelist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.filelist"
end
Dir.chdir CREW_CONFIG_PATH do Dir.chdir CREW_CONFIG_PATH do
File.open("meta/#{@pkg.name}.directorylist").each_line do |line| File.open("meta/#{@pkg.name}.directorylist").each_line do |line|
system "mkdir", "-p", line.chomp system "mkdir", "-p", line.chomp
......
...@@ -3,6 +3,7 @@ CREW_PREFIX=/usr/local ...@@ -3,6 +3,7 @@ CREW_PREFIX=/usr/local
CREW_LIB_PATH=$CREW_PREFIX/lib/crew/ CREW_LIB_PATH=$CREW_PREFIX/lib/crew/
CREW_CONFIG_PATH=$CREW_PREFIX/etc/crew/ CREW_CONFIG_PATH=$CREW_PREFIX/etc/crew/
CREW_BREW_DIR=$CREW_PREFIX/tmp/crew/ CREW_BREW_DIR=$CREW_PREFIX/tmp/crew/
CREW_DEST_DIR=$CREW_BREW_DIR/dest
CREW_PACKAGES_PATH=$CREW_LIB_PATH/packages CREW_PACKAGES_PATH=$CREW_LIB_PATH/packages
user=$(whoami) user=$(whoami)
...@@ -12,6 +13,7 @@ sudo mkdir -p $CREW_LIB_PATH && sudo chown -R $user:$user $CREW_LIB_PATH ...@@ -12,6 +13,7 @@ sudo mkdir -p $CREW_LIB_PATH && sudo chown -R $user:$user $CREW_LIB_PATH
sudo mkdir -p $CREW_CONFIG_PATH && sudo chown -R $user:$user $CREW_CONFIG_PATH sudo mkdir -p $CREW_CONFIG_PATH && sudo chown -R $user:$user $CREW_CONFIG_PATH
sudo mkdir -p $CREW_CONFIG_PATH/meta && sudo chown -R $user:$user $CREW_CONFIG_PATH/meta sudo mkdir -p $CREW_CONFIG_PATH/meta && sudo chown -R $user:$user $CREW_CONFIG_PATH/meta
sudo mkdir -p $CREW_BREW_DIR && sudo chown -R $user:$user $CREW_BREW_DIR sudo mkdir -p $CREW_BREW_DIR && sudo chown -R $user:$user $CREW_BREW_DIR
sudo mkdir -p $CREW_DEST_DIR && sudo chown -R $user:$user $CREW_DEST_DIR
sudo mkdir -p $CREW_PACKAGES_PATH && sudo chown -R $user:$user $CREW_PACKAGES_PATH sudo mkdir -p $CREW_PACKAGES_PATH && sudo chown -R $user:$user $CREW_PACKAGES_PATH
#cd into the brew directory, everything will happen there #cd into the brew directory, everything will happen there
......
require 'package_helpers' require 'package_helpers'
class Package class Package
property :version, :binary_url, :binary_sha1, :source_url, :is_fake property :version, :binary_url, :binary_sha1, :source_url, :source_sha1, :is_fake
class << self class << self
attr_reader :dependencies, :is_fake attr_reader :dependencies, :is_fake
...@@ -22,4 +22,8 @@ class Package ...@@ -22,4 +22,8 @@ class Package
def self.is_fake? def self.is_fake?
@is_fake @is_fake
end end
def self.build
end
end end
require 'package' require 'package'
class Vim < Package class Vim < Package
version '7.3' version '7.4'
source_url 'ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2'
source_sha1 '601abf7cc2b5ab186f40d8790e542f86afca86b7'
binary_url ({ binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/s6ya4cyeee7ywo9/vim-7.3-chromeos-i686.tar.gz?token_hash=AAEI_tXjoKfOGEWKN3fajxskcCxlOjxuANGIvu-nSABANQ&dl=1' i686: 'https://dl.dropboxusercontent.com/s/s6ya4cyeee7ywo9/vim-7.3-chromeos-i686.tar.gz?token_hash=AAEI_tXjoKfOGEWKN3fajxskcCxlOjxuANGIvu-nSABANQ&dl=1'
}) })
...@@ -10,4 +12,12 @@ class Vim < Package ...@@ -10,4 +12,12 @@ class Vim < Package
}) })
depends_on 'ncurses' depends_on 'ncurses'
def self.build
system "make"
end
def self.install
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install"
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment