Allow system nodejs install

Allow setting the nodejs_version to 'system' which will tell the
module to install the nodejs and npm packages from their system
package manager rather than building the specified version from
source, and symlink the expected interpreter name.

Change-Id: I9831526581a5fc1f2014c9985637664c79b937bf
This commit is contained in:
Clark Boylan 2015-08-19 15:26:19 -07:00 committed by Jeremy Stanley
parent cc8e0cbad8
commit 6a254faec5
1 changed files with 57 additions and 39 deletions

View File

@ -15,6 +15,7 @@ class etherpad_lite (
$ep_user = 'eplite', $ep_user = 'eplite',
$base_log_dir = '/var/log', $base_log_dir = '/var/log',
$base_install_dir = '/opt/etherpad-lite', $base_install_dir = '/opt/etherpad-lite',
# If set to system will install system package.
$nodejs_version = 'v0.10.21', $nodejs_version = 'v0.10.21',
$eplite_version = 'develop', $eplite_version = 'develop',
$ep_ensure = 'present', $ep_ensure = 'present',
@ -44,46 +45,63 @@ class etherpad_lite (
mode => '0664', mode => '0664',
} }
vcsrepo { "${base_install_dir}/nodejs": if ($nodejs_version != 'system') {
ensure => present, vcsrepo { "${base_install_dir}/nodejs":
provider => git, ensure => present,
source => 'https://github.com/joyent/node.git', provider => git,
revision => $nodejs_version, source => 'https://github.com/joyent/node.git',
require => [ revision => $nodejs_version,
Package['git'], require => [
File[$base_install_dir], Package['git'],
], File[$base_install_dir],
],
}
package { [
'gzip',
'curl',
'python',
'libssl-dev',
'pkg-config',
'abiword',
'build-essential',
]:
ensure => present,
}
package { ['nodejs', 'npm']:
ensure => purged,
}
buildsource { "${base_install_dir}/nodejs":
timeout => 900, # 15 minutes
creates => '/usr/local/bin/node',
require => [
Package['gzip'],
Package['curl'],
Package['python'],
Package['libssl-dev'],
Package['pkg-config'],
Package['build-essential'],
Vcsrepo["${base_install_dir}/nodejs"],
],
before => Anchor['nodejs-anchor'],
}
} else {
package { ['nodejs', 'npm']:
ensure => present,
before => Anchor['nodejs-anchor'],
}
file { '/usr/local/bin/node':
ensure => link,
target => '/usr/bin/nodejs',
before => Anchor['nodejs-anchor'],
require => Package['nodejs'],
}
} }
package { [ anchor { 'nodejs-anchor': }
'gzip',
'curl',
'python',
'libssl-dev',
'pkg-config',
'abiword',
'build-essential',
]:
ensure => present,
}
package { ['nodejs', 'npm']:
ensure => purged,
}
buildsource { "${base_install_dir}/nodejs":
timeout => 900, # 15 minutes
creates => '/usr/local/bin/node',
require => [
Package['gzip'],
Package['curl'],
Package['python'],
Package['libssl-dev'],
Package['pkg-config'],
Package['build-essential'],
Vcsrepo["${base_install_dir}/nodejs"],
],
}
vcsrepo { "${base_install_dir}/etherpad-lite": vcsrepo { "${base_install_dir}/etherpad-lite":
ensure => $ep_ensure, ensure => $ep_ensure,
@ -105,7 +123,7 @@ class etherpad_lite (
environment => "HOME=${base_log_dir}/${ep_user}", environment => "HOME=${base_log_dir}/${ep_user}",
require => [ require => [
Vcsrepo["${base_install_dir}/etherpad-lite"], Vcsrepo["${base_install_dir}/etherpad-lite"],
Buildsource["${base_install_dir}/nodejs"], Anchor['nodejs-anchor'],
], ],
before => File["${base_install_dir}/etherpad-lite/settings.json"], before => File["${base_install_dir}/etherpad-lite/settings.json"],
creates => "${base_install_dir}/etherpad-lite/node_modules", creates => "${base_install_dir}/etherpad-lite/node_modules",