Commit 2c3b469b authored by Michał Siwek's avatar Michał Siwek

Initial commit

parent e426cb61
chromebrew
==========
Package manager for Chrome OS
Overview
--------
Chromebooks with Chrome OS run a linux kernel - the only missing piece to use them as full-featured linux distro was gcc and make with their dependencies. Well, the piece isn't missing anymore. Say hello to chromebrew!
Installation
------------
Download and run the installation script
wget -q -O - https://raw.github.com/skycocker/chromebrew/master/install.sh | bash
Usage
-----
sudo crew <command> <package>
Where available commands are:
* search [looks for a package]
* download [downloads a package to CREW_BREW_DIR(/usr/local/tmp/cbrew by default), but doesn't install it]
* install [installs a package along with its dependencies. You'll be prompted for confirmation, must be ran as root]
* remove [removes a package. Must be ran as root]
Available packages are listed in the [packages directory](https://github.com/skycocker/chromebrew/tree/master/packages).
/*
* Examples
*
* Isolated sections of example content for each component or feature. Usually
* followed by a code snippet.
*/
.bs-example {
position: relative;
padding: 15px 15px 15px;
margin: 0 -15px 15px;
background-color: #fafafa;
box-shadow: inset 0 3px 6px rgba(0,0,0,.05);
border-color: #e5e5e5 #eee #eee;
border-style: solid;
border-width: 1px 0;
}
/* Echo out a label for the example */
/*.bs-example:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
font-size: 12px;
font-weight: bold;
color: #bbb;
text-transform: uppercase;
letter-spacing: 1px;
}*/
/* Tweak display of the code snippets when following an example */
.bs-example + .highlight {
margin: -15px -15px 15px;
border-radius: 0;
border-width: 0 0 1px;
}
/* Make the examples and snippets not full-width */
@media screen and (min-width: 768px) {
.bs-example {
margin-left: 0;
margin-right: 0;
background-color: #fff;
border-width: 1px;
border-color: #ddd;
border-radius: 4px 4px 0 0;
box-shadow: none;
}
.bs-example + .highlight {
margin-top: -16px;
margin-left: 0;
margin-right: 0;
border-width: 1px;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
}
/* Tweak content of examples for optimum awesome */
.bs-example > p:last-child,
.bs-example > ul:last-child,
.bs-example > ol:last-child,
.bs-example > blockquote:last-child,
.bs-example > .form-control:last-child,
.bs-example > .table:last-child,
.bs-example > .navbar:last-child,
.bs-example > .jumbotron:last-child,
.bs-example > .alert:last-child,
.bs-example > .panel:last-child,
.bs-example > .list-group:last-child,
.bs-example > .well:last-child,
.bs-example > .progress:last-child,
.bs-example > .table-responsive:last-child > .table {
margin-bottom: 0;
}
.bs-example > p > .close {
float: none;
}
/* Typography */
.bs-example-type .table td:last-child {
color: #999;
vertical-align: middle;
}
.bs-example-type .table td {
padding: 15px 0;
border-color: #eee;
}
.bs-example-type .table tr:first-child td {
border-top: 0;
}
.bs-example-type h1,
.bs-example-type h2,
.bs-example-type h3,
.bs-example-type h4,
.bs-example-type h5,
.bs-example-type h6 {
margin: 0;
}
/* Images */
.bs-example > .img-circle,
.bs-example > .img-rounded,
.bs-example > .img-thumbnail {
margin: 5px;
}
/* Buttons */
.bs-example > .btn,
.bs-example > .btn-group {
margin-top: 5px;
margin-bottom: 5px;
}
.bs-example > .btn-toolbar + .btn-toolbar {
margin-top: 10px;
}
/* Forms */
.bs-example-control-sizing select,
.bs-example-control-sizing input[type="text"] + input[type="text"] {
margin-top: 10px;
}
.bs-example-form .input-group {
margin-bottom: 10px;
}
.bs-example > textarea.form-control {
resize: vertical;
}
/* List groups */
.bs-example > .list-group {
max-width: 400px;
}
/* Navbars */
.bs-example .navbar:last-child {
margin-bottom: 0;
}
#!/usr/bin/env ruby
require 'find'
require 'net/http'
require 'uri'
require 'digest/sha1'
require 'json'
require 'fileutils'
@command = ARGV[0]
@pkgName = ARGV[1]
CREW_PREFIX = '/usr/local'
CREW_LIB_PATH = CREW_PREFIX + '/lib/crew/'
CREW_CONFIG_PATH = CREW_PREFIX + '/etc/crew/'
CREW_BREW_DIR = CREW_PREFIX + '/tmp/crew/'
CREW_DEST_DIR = CREW_BREW_DIR + '/dest'
$LOAD_PATH.push CREW_LIB_PATH
USER = `whoami`.chomp
@device = JSON.parse(File.read(CREW_CONFIG_PATH + 'device.json'), symbolize_names: true)
#symbolize also values
@device.each do |key, elem|
@device[key] = @device[key].to_sym rescue @device[key]
end
def setPkg (pkgName, silent = false)
require CREW_LIB_PATH + 'packages/' + pkgName
@pkg = Object.const_get(pkgName.capitalize)
@pkg.name = pkgName
puts "Found #{pkgName}, version #{@pkg.version}" unless silent
end
def search (pkgName, silent = false)
Find.find (CREW_LIB_PATH + 'packages') do |filename|
return setPkg(pkgName, silent) if filename == CREW_LIB_PATH + 'packages/' + pkgName + '.rb'
end
abort "package #{pkgName} not found :("
end
def download
if @pkg.binary_url && @pkg.binary_url.has_key?(@device[:architecture])
url = @pkg.binary_url[@device[:architecture]]
source = false
puts "Precompiled binary available, downloading..."
else
url = @pkg.source_url
source = true
puts "No precompiled binary available for your platform, downloading source..."
end
uri = URI.parse url
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
system('wget', '--content-disposition', '--no-check-certificate', '-N', url)
abort 'Checksum mismatch :/ try again' unless Digest::SHA1.hexdigest( File.read("./#{filename}") ) == sha1sum
end
puts "Archive downloaded"
return {source: source, filename: filename}
end
def resolveDependenciesAndInstall
origin = @pkgName
resolveDependencies
search origin
install
#cleanup
unless ARGV[2] == 'keep'
Dir.chdir CREW_BREW_DIR do
system "rm -rf *"
system "mkdir dest" #this is a little ugly, feel free to find a better way
end
end
end
def resolveDependencies
@dependencies = []
def pushDeps
if @pkg.dependencies
@dependencies << @pkg.dependencies
@pkg.dependencies.each do |dep|
search dep, true
pushDeps
end
end
end
pushDeps
return if @dependencies.empty?
puts "Following packages also need to be installed: "
@dependencies.flatten!.each do |dep|
print dep + " "
end
puts ""
puts "Do you agree? [Y/n]"
response = STDIN.getc
case response
when "n"
abort "No changes made."
when "\n", "y", "Y"
puts "Proceeding..."
proceed = true
else
puts "I don't understand '#{response}' :("
abort "No changes made."
end
if proceed
@dependencies.each do |dep|
search dep
install
end
end
end
def install
if @device[:installed_packages].any? { |pkg| pkg[:name] == @pkg.name }
puts "Package #{@pkg.name} already installed, skipping..."
return
end
unless @pkg.is_fake?
meta = download
Dir.chdir CREW_BREW_DIR do
puts "Unpacking archive, this may take a while..."
system "tar", "xf", meta[:filename]
if meta[:source] == true
abort "You don't have a working C compiler. Run 'crew install buildessential' to get one and try again." unless system("gcc", "--version")
topdir = `tar -tf #{meta[:filename]} | sed -e 's@/.*@@' | uniq`.chomp!
Dir.chdir CREW_BREW_DIR + topdir do
puts "Building from source, this may take a while..."
@pkg.build
system "rm -rf", CREW_DEST_DIR + "/*" #wipe crew destdir
puts "Preconfiguring package..."
@pkg.install
end
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"
#create resulting folders list
directories = []
Dir.glob('*').select do |fn|
if File.directory?(fn)
directories.push(fn)
end
end
#wipe directories with the same name in brew dir to avoid conflicts
directories.each do |dir|
system "rm -rf ../" + dir.chomp
end
#move result files and directories to brew dir
system "mv * ../"
end
end
puts "Installing..."
FileUtils.mv 'dlist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.directorylist"
FileUtils.mv 'filelist', CREW_CONFIG_PATH + "meta/#{@pkg.name}.filelist"
File.open(CREW_CONFIG_PATH + "meta/#{@pkg.name}.directorylist").each_line do |line|
system "sudo", "mkdir", "-p", line.chomp
end
File.open(CREW_CONFIG_PATH + "meta/#{@pkg.name}.filelist").each_line do |line|
system "sudo", "mv", CREW_BREW_DIR + line.chomp, line.chomp
end
end
end
#add to installed packages
@device[:installed_packages].push(name: @pkg.name, version: @pkg.version)
File.open(CREW_CONFIG_PATH + 'device.json', 'w') do |file|
output = JSON.parse @device.to_json
file.write JSON.pretty_generate(output)
end
puts "#{@pkg.name.capitalize} installed!"
end
def remove
unless @device[:installed_packages].any? { |pkg| pkg[:name] == @pkg.name }
puts "Package #{@pkg.name} isn't installed."
return
end
unless @pkg.is_fake?
Dir.chdir CREW_CONFIG_PATH do
File.open("meta/#{@pkg.name}.filelist").each_line do |line|
begin
File.unlink line.chomp
rescue => exception #swallow exception
end
end
File.readlines("meta/#{@pkg.name}.directorylist").reverse.each do |line|
begin
Dir.rmdir line.chomp
rescue => exception #swallow exception
end
end
File.unlink "meta/#{@pkg.name}.filelist"
File.unlink "meta/#{@pkg.name}.directorylist"
end
end
#remove from installed packages
@device[:installed_packages].each do |elem|
@device[:installed_packages].delete elem if elem[:name] == @pkg.name
end
File.open(CREW_CONFIG_PATH + 'device.json', 'w') do |file|
out = JSON.parse @device.to_json
file.write JSON.pretty_generate(out)
end
puts "#{@pkgName.capitalize} removed!"
end
case @command
when "search"
search @pkgName
when "download"
search @pkgName
download
when "update"
unless @pkgName == 'crew'
Dir.chdir CREW_LIB_PATH do
system "git fetch origin master"
system "git reset --hard origin/master"
end
puts "Package lists updated."
else
abort 'Updating crew itself must be done as root.' unless USER == 'root'
#update crew binary
Dir.chdir CREW_PREFIX + '/bin' do
system "wget", "-N", "https://raw.github.com/skycocker/chromebrew/master/crew"
system "sudo", "chmod", "+x", "crew"
end
#update crew library
Dir.chdir CREW_LIB_PATH do
system "wget", "-N", "https://raw.github.com/skycocker/chromebrew/master/lib/package.rb"
system "wget", "-N", "https://raw.github.com/skycocker/chromebrew/master/lib/package_helpers.rb"
end
end
when "install"
search @pkgName
resolveDependenciesAndInstall
when "remove"
abort 'Removing actions must be ran with sudo.' unless USER == 'root'
search @pkgName
remove
when nil
puts "Chromebrew, version 0.1"
puts "Usage: crew [command] [package]"
puts "Available commands: search, download, install, remove"
else
puts "I have no idea how to do #{@command} :("
puts "Available commands: search, download, install, remove"
end
.footer p {
text-transform: lowercase;
}
.footer p a {
color: inherit;
}
.footer .name {
word-spacing: -0.3em;
}
.footer .name-first {
opacity: 0.7;
}
.jumbotron {
background-color: #E2EEFF;
color: #5F5F5F;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The missing package manager for Chrome OS">
<meta name="author" content="Michal Siwek">
<link rel="shortcut icon" href="favicon.png">
<title>Chromebrew - the software source you missed so much</title>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
<link href="jumbotron-narrow.css" rel="stylesheet">
<link href="bs-example.css" rel="stylesheet">
<link href="crew-specific.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="../../assets/js/html5shiv.js"></script>
<script src="../../assets/js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="header">
<ul class="nav nav-pills pull-right">
<iframe src="http://ghbtns.com/github-btn.html?user=skycocker&repo=chromebrew&type=watch&size=large"
allowtransparency="true" frameborder="0" scrolling="0" width="80" height="30"></iframe>
</ul>
<h3 class="text-muted">Chromebrew</h3>
</div>
<div class="jumbotron">
<h1>Chromebrew</h1>
<p class="lead">The missing package manager for Chrome OS</p>
<pre>wget -q -O - https://raw.github.com/skycocker/chromebrew/master/install.sh | sh</pre>
<!--<p><a class="btn btn-lg btn-success" href="#">Sign up today</a></p>-->
</div>
<div class="row marketing">
<div class="col-lg-6">
<div class="bs-example bs-example-type">
<h4>Chromebrew installs what you need</h4>
</div>
<div class="highlight">
<pre><code>$ crew install vim</code></pre>
</div>
</div>
</div>
<div class="footer">
<p>&copy; <a href="http://msiwek.com/" target="_"><span class="name"><span class="name-first">Michal</span> Siwek</span></a> 2013</p>
</div>
</div> <!-- /container -->
</body>
</html>
#chromebrew directories
CREW_PREFIX=/usr/local
CREW_LIB_PATH=$CREW_PREFIX/lib/crew/
CREW_CONFIG_PATH=$CREW_PREFIX/etc/crew/
CREW_BREW_DIR=$CREW_PREFIX/tmp/crew/
CREW_DEST_DIR=$CREW_BREW_DIR/dest
CREW_PACKAGES_PATH=$CREW_LIB_PATH/packages
user=$(whoami)
#prepare directories
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/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_DEST_DIR && sudo chown -R $user:$user $CREW_DEST_DIR
sudo mkdir -p $CREW_PACKAGES_PATH && sudo chown -R $user:$user $CREW_PACKAGES_PATH
#cd into the brew directory, everything will happen there
cd $CREW_BREW_DIR
#download ruby
echo "Downloading ruby..."
architecture=$(uname -m)
case "$architecture" in
"i686")
link='https://dl.dropboxusercontent.com/s/tufbuqcn80ubypx/ruby-2.0.0p247-chromeos-i686.tar.gz?token_hash=AAGu_5wuqZe2eDOkfL5oh4esQ8HAZJIvbMG7GplnQrSa3g&dl=1'
echo $link
;;
esac
wget --content-disposition $link
#extract and install ruby
echo "Extracting ruby (this may take a while)..."
tar -xf ruby-2.0.0p247-chromeos-$architecture.tar.gz
echo "Installing ruby (this may take a while)..."
sudo cp -r ./usr/* /usr
mv ./dlist $CREW_CONFIG_PATH/meta/ruby.directorylist
mv ./filelist $CREW_CONFIG_PATH/meta/ruby.filelist
#download, prepare and install chromebrew
wget https://raw.github.com/skycocker/chromebrew/master/crew
chmod +x crew
sudo mv crew $CREW_PREFIX/bin
#install crew library
cd $CREW_LIB_PATH
wget https://raw.github.com/skycocker/chromebrew/master/lib/package.rb
wget https://raw.github.com/skycocker/chromebrew/master/lib/package_helpers.rb
#create the device.json file
cd $CREW_CONFIG_PATH
touch device.json
echo "{" > device.json
echo ' "architecture": "'$architecture'",' >> device.json
echo ' "installed_packages": [' >> device.json
echo ' {' >> device.json
echo ' "name": "ruby",' >> device.json
echo ' "version": "2.0.0p247"' >> device.json
echo ' }' >> device.json
echo ' ]' >> device.json
echo "}" >> device.json
#download git and its dependencies .rb package files
cd $CREW_PACKAGES_PATH
wget https://raw.github.com/skycocker/chromebrew/master/packages/git.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/zlib.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/libssh2.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/perl.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/openssl.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/curl.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/expat.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/gettext.rb
wget https://raw.github.com/skycocker/chromebrew/master/packages/python.rb
#install git
(echo y;) | sudo crew install git
#prepare sparse checkout .rb packages directory and do it
cd $CREW_LIB_PATH
git init
git remote add -f origin https://github.com/skycocker/chromebrew.git
git config core.sparsecheckout true
echo packages >> .git/info/sparse-checkout
git fetch origin master
git reset --hard origin/master
echo "Chromebrew installed successfully and package lists updated."
/* Space out content a bit */
body {
padding-top: 20px;
padding-bottom: 20px;
}
/* Everything but the jumbotron gets side spacing for mobile first views */
.header,
.marketing,
.footer {
padding-left: 15px;
padding-right: 15px;
}
/* Custom page header */
.header {
border-bottom: 1px solid #e5e5e5;
}
/* Make the masthead heading the same height as the navigation */
.header h3 {
margin-top: 0;
margin-bottom: 0;
line-height: 40px;
padding-bottom: 19px;
}
/* Custom page footer */
.footer {
padding-top: 19px;
color: #777;
border-top: 1px solid #e5e5e5;
}
/* Customize container */
@media (min-width: 768px) {
.container {
max-width: 730px;
}
}
.container-narrow > hr {
margin: 30px 0;
}
/* Main marketing message and sign up button */
.jumbotron {
text-align: center;
border-bottom: 1px solid #e5e5e5;
}
.jumbotron .btn {
font-size: 21px;
padding: 14px 24px;
}
/* Supporting marketing content */
.marketing {
margin: 40px 0;
}
.marketing p + h4 {
margin-top: 28px;
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
/* Remove the padding we set earlier */
.header,
.marketing,
.footer {
padding-left: 0;
padding-right: 0;
}
/* Space out the masthead */
.header {
margin-bottom: 30px;
}
/* Remove the bottom border on the jumbotron for visual effect */
.jumbotron {
border-bottom: 0;
}
}
require 'package_helpers'
class Package
property :version, :binary_url, :binary_sha1, :source_url, :source_sha1, :is_fake
class << self
attr_reader :dependencies, :is_fake
attr_accessor :name
end
def self.depends_on (dependency = nil)
@dependencies = [] unless @dependencies
if dependency
@dependencies << dependency
end
@dependencies
end
def self.is_fake
@is_fake = true
end
def self.is_fake?
@is_fake
end
def self.build
end
end
def property(*properties)
properties.each do |prop|
self.class_eval("def self.#{prop}(#{prop} = nil); @#{prop} = #{prop} if #{prop}; @#{prop}; end")
end
end
require 'package'
class Binutils < Package
version '2.12'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/u3cp7mpdyfx99ij/binutils-2.23.2-chromeos-i686.tar.gz?token_hash=AAGsFB9HXNb5tSAm_Wd2GyIUL59BkZYgMTHkj4CkHLxggg&dl=1'
})
binary_sha1 ({
i686: 'a7edc9bdaf9fc72112fe6b370f158a9a1aee87ac'
})
end
require 'package'
class Buildessential < Package
version '1.0'
is_fake
depends_on 'gcc'
depends_on 'make'
depends_on 'linuxheaders'
end
require 'package'
class Curl < Package
version '7.32.0'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/h3x2iiy5ibi97vr/curl-7.32.0-chromeos-i686.tar.gz?token_hash=AAETu-MnNyBTCHQbkh4O817QbNK3wRLbAP_gQhjgNyFGtw&dl=1'
})
binary_sha1 ({
i686: 'af3abbae663884ed367c5b6b467ebb310052f53f'
})
end
require 'package'
class Expat < Package
version '2.1.0'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/jh5uw42elm40t9a/expat-2.1.0-chromeos-i686.tar.gz?token_hash=AAGYckE0KoTPsydZGG85KTkpr7Nt5U1OUs0egJ1K0iJ1mg&dl=1'
})
binary_sha1 ({
i686: '9ab42ec03d06cc64d5d9944cb4cc7eaa61a0af84'
})
end
require 'package'
class Gcc < Package
version '4.8.1-baseline'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/c06pcge8ogsqfcd/gcc-4.8.1-baseline-chromeos-i686.tar.gz?token_hash=AAFLnE_8iL_lAnGtAAVM5G_sYqejA44jGW8D9r0a8xCjrQ&dl=1"
})
binary_sha1 ({
i686: "d720c9a804d26728d730b93748072ffa6df7ee3d"
})
depends_on 'binutils'
depends_on 'gmp'
depends_on 'mpc'
depends_on 'mpfr'
depends_on 'glibc'
end
require 'package'
class Gettext < Package
version '0.18.3.1'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/xmsfr7q9r99dhcs/gettext-0.18.3.1-chromeos-i686.tar.gz?token_hash=AAGJo0pqudCOkGU3NHOcBuFG2zLwWpapNXLX-zUJLcS3aA&dl=1'
})
binary_sha1 ({
i686: '1ecbff59d6134c7f8804bcf18fb2b1b7a9a6d4c0'
})
end
require 'package'
class Git < Package
version '1.8.4'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/g3binxopw5nfky1/git-1.8.4-chromeos-i686.tar.gz?token_hash=AAEWnMNBfozSIzLD1unbYGJzT4FGkEfJmLFQ-3uzydfT_A&dl=1'
})
binary_sha1 ({
i686: '8c1bf4bcffb0e9c17bf20dd05981e86ea34d5d65'
})
depends_on 'zlib'
depends_on 'libssh2'
depends_on 'perl'
depends_on 'openssl'
depends_on 'curl'
depends_on 'expat'
depends_on 'gettext'
depends_on 'python'
end
require 'package'
class Glibc < Package
version '2.17.90-baseline'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/dic47f8eqxhpf89/glibc-2.17.90-baseline-chromeos-i686.tar.gz?token_hash=AAHx_77YtWLLnkjCJRaCJt7RsdKrfkT6lgKS9BZc4O-0Pg&dl=1"
})
binary_sha1 ({
i686: "3c3a0b86ed4591ec59daeb24d2dcda139574de1b"
})
end
require 'package'
class Gmp < Package
version "5.1.2"
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/9cwila1kaomsyl2/gmp-5.1.2-chromeos-i686.tar.gz?token_hash=AAHO9VxBpvXU2GPWBwimsp4hL8DADIItfNnIaFbfcyynMg&dl=1"
})
binary_sha1 ({
i686: "b03b9508463588bfe9d09303c0725068cddd8810"
})
end
require 'package'
class Libssh2 < Package
version '1.4.3'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/zjnild1c2i10h53/libssh2-1.4.3-chromeos-i686.tar.gz?token_hash=AAG_aZ7_dPKOiOMCMUiW2g3mLkz8UKHnGn5jLcDAGcNCIA&dl=1'
})
binary_sha1 ({
i686: '21b4b1a9608b12c0b3d1e6f0b6615f4a4152acb3'
})
end
require 'package'
class Linuxheaders < Package
version '3.4.0'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/mdzdoyq7dtnz682/linux-headers-3.4.0-chromeos-i686.tar.gz?token_hash=AAE4yw5oH_SfZ3lAx02mFP603rnjmoB9Gp4vqTY14NsA-A&dl=1"
})
binary_sha1 ({
i686: "31c933f3a4e82fd9310b0f5b32d79c9a51514fee"
})
end
require 'package'
class Make < Package
version '3.82'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/f6pg4bkg6m3vn7q/make-3.82-chromeos-i686.tar.gz?token_hash=AAHP__I3leN8BCLdP0pLbkNopoFGGhDuKX0sN-I6Zx4JYg&dl=1"
})
binary_sha1 ({
i686: "ccb01c7358e5abdf8b06305eb31b1969b8b174f7"
})
end
require 'package'
class Mpc < Package
version '1.0.1'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/3o6uc8n4uy3oved/mpc-1.0.1-chromeos-i686.tar.gz?token_hash=AAH_OlvQWGUF7lyFhV3DXXgYRM1fupgKoHIwyiVmmVyWUQ&dl=1"
})
binary_sha1 ({
i686: "f11c6e74e9059bf400b0978e6e05fe67c7f3dfe9"
})
end
require 'package'
class Mpfr < Package
version '3.1.2'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/lo9ks3g7ar3zpfu/mpfr-3.1.2-chromeos-i686.tar.gz?token_hash=AAH1GlLfYtUs4uxl1ayeGTBe8RJ5uTXzOAsXgSlv8G5rrA&dl=1"
})
binary_sha1 ({
i686: "eb81b9bb83ebb43b94ab33e43293f1df3bcbad7c"
})
end
require 'package'
class Ncurses < Package
version '5.9'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/aule5impm7ek644/ncurses-5.9-chromeos-i686.tar.gz?token_hash=AAH6Z34Dd17OeG_to_cD7z_1bc95AObrDrfU2mHGhZ-3bg&dl=1'
})
binary_sha1 ({
i686: 'a46463be1b8f7cd3af8309e49fd6bc60cf0e5341'
})
end
require 'package'
class Openssl < Package
version '1.0.1e'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/w6y84tusor5xz5f/openssl-1.0.1e-chromeos-i686.tar.gz?token_hash=AAGQ2xjngbnzme2CKee7Mz5WvkylBtFy1rwUzWDVNuOQ_Q&dl=1'
})
binary_sha1 ({
i686: 'cadea32ec770c4b44d565b7e5fdf96a469a05757'
})
end
require 'package'
class Perl < Package
version '5.16.3'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/qwbwhvqed0yyv3l/perl-5.16.3-chromeos-i686.tar.gz?token_hash=AAHjq1OrZ3iNYerA9y6QIPtsn3fOnW5QeIFbYlBbBN-OkA&dl=1'
})
binary_sha1 ({
i686: 'e2a8c5280b8a4abec70256f41d5e5b04253d6796'
})
end
require 'package'
class Python < Package
version '3.3.2'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/mxgfmq992hhiawk/python-3.3.2-chromeos-i686.tar.gz?token_hash=AAFA2YzFp293uyV3zYfP70iwCk8oH9HCLKMTrK0dtMU8GQ&dl=1'
})
binary_sha1 ({
i686: 'a985a4bba243b4fa701db302dc2fa554aef76f1c'
})
end
require 'package'
class Ruby < Package
version '2.0.0p247'
binary_url ({
i686: "https://dl.dropboxusercontent.com/s/tufbuqcn80ubypx/ruby-2.0.0p247-chromeos-i686.tar.gz?token_hash=AAGu_5wuqZe2eDOkfL5oh4esQ8HAZJIvbMG7GplnQrSa3g&dl=1"
})
binary_sha1 ({
i686: "49eeba5d542e4c3e6aa3686f215485e0946fb99a"
})
end
require 'package'
class Vim < Package
version '7.4'
source_url 'ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2'
source_sha1 '601abf7cc2b5ab186f40d8790e542f86afca86b7'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/s6ya4cyeee7ywo9/vim-7.3-chromeos-i686.tar.gz?token_hash=AAEI_tXjoKfOGEWKN3fajxskcCxlOjxuANGIvu-nSABANQ&dl=1'
})
binary_sha1 ({
i686: '5ff6cf19c34582027092d342fc835b0f32c63be0'
})
depends_on 'ncurses'
def self.build
system "make"
end
def self.install
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install"
end
end
require 'package'
class Zlib < Package
version '1.2.8'
binary_url ({
i686: 'https://dl.dropboxusercontent.com/s/ljhhvr12u1izayj/zlib-1.2.8-chromeos-i686.tar.gz?token_hash=AAEABTatYkxOOybZGoCj3Kg_DKEbFbSfolzZklfHwCsP_A&dl=1'
})
binary_sha1 ({
i686: 'e02974780bfb3bf46940183043d15897a765ab4e'
})
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