69 lines
2.3 KiB
Ruby
69 lines
2.3 KiB
Ruby
#
|
|
# Author:: Marius Ducea (marius@promethost.com)
|
|
# Cookbook Name:: nodejs
|
|
# Recipe:: source
|
|
#
|
|
# Copyright 2010-2012, Promet Solutions
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
include_recipe "build-essential"
|
|
|
|
case node['platform_family']
|
|
when 'rhel','fedora'
|
|
package "openssl-devel"
|
|
when 'debian'
|
|
package "libssl-dev"
|
|
end
|
|
|
|
nodejs_tar = "node-v#{node['nodejs']['version']}.tar.gz"
|
|
nodejs_tar_path = nodejs_tar
|
|
if node['nodejs']['version'].split('.')[1].to_i >= 5
|
|
nodejs_tar_path = "v#{node['nodejs']['version']}/#{nodejs_tar_path}"
|
|
end
|
|
# Let the user override the source url in the attributes
|
|
nodejs_src_url = "#{node['nodejs']['src_url']}/#{nodejs_tar_path}"
|
|
|
|
remote_file "/usr/local/src/#{nodejs_tar}" do
|
|
source nodejs_src_url
|
|
checksum node['nodejs']['checksum']
|
|
mode 0644
|
|
action :create_if_missing
|
|
end
|
|
|
|
# --no-same-owner required overcome "Cannot change ownership" bug
|
|
# on NFS-mounted filesystem
|
|
execute "tar --no-same-owner -zxf #{nodejs_tar}" do
|
|
cwd "/usr/local/src"
|
|
creates "/usr/local/src/node-v#{node['nodejs']['version']}"
|
|
end
|
|
|
|
bash "compile node.js (on #{node['nodejs']['make_threads']} cpu)" do
|
|
# OSX doesn't have the attribute so arbitrarily default 2
|
|
cwd "/usr/local/src/node-v#{node['nodejs']['version']}"
|
|
code <<-EOH
|
|
PATH="/usr/local/bin:$PATH"
|
|
./configure --prefix=#{node['nodejs']['dir']} && \
|
|
make -j #{node['nodejs']['make_threads']}
|
|
EOH
|
|
creates "/usr/local/src/node-v#{node['nodejs']['version']}/node"
|
|
end
|
|
|
|
execute "nodejs make install" do
|
|
environment({"PATH" => "/usr/local/bin:/usr/bin:/bin:$PATH"})
|
|
command "make install"
|
|
cwd "/usr/local/src/node-v#{node['nodejs']['version']}"
|
|
not_if {::File.exists?("#{node['nodejs']['dir']}/bin/node") && `#{node['nodejs']['dir']}/bin/node --version`.chomp == "v#{node['nodejs']['version']}" }
|
|
end
|