Skip to content

Commit 4d369ce

Browse files
committed
Merge Upstream. Set default version to latest LTS (6.10.0)
Conflicts: node/binary.sls
2 parents 0e59710 + 714749a commit 4d369ce

File tree

6 files changed

+103
-24
lines changed

6 files changed

+103
-24
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
This formula installs [node.js](https://nodejs.org/en/).
44

5+
## Installing from PPA
6+
7+
An example pillar for installing from Debian based PPA repository:
8+
9+
node:
10+
version: 6.9.4
11+
install_from_ppa: True
12+
ppa:
13+
repository_url: https://deb.nodesource.com/node_6.x
14+
515
## Installing from source
616

717
An example pillar file looks as follows:

node/binary.sls

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% set node = pillar.get('node', {}) -%}
2-
{% set version = node.get('version', '5.4.0') -%}
3-
{% set checksum = node.get('checksum', 'sha256=f037e2734f52b9de63e6d4a4e80756477b843e6f106e0be05591a16b71ec2bd0') -%}
2+
{% set version = node.get('version', '6.10.0') -%}
3+
{% set checksum = node.get('checksum', 'f037e2734f52b9de63e6d4a4e80756477b843e6f106e0be05591a16b71ec2bd0') -%}
44
{% if grains.get('osarch', {}) == 'armhf' -%}
55
{% set arch = 'armv7l' -%}
66
{% else -%}
@@ -16,17 +16,40 @@
1616
{% set tar_options = 'z' -%}
1717
{% endif -%}
1818

19+
Get binary package:
20+
file.managed:
21+
- name: /usr/local/src/{{ pkgname }}.tar.{{ format }}
22+
- source: https://nodejs.org/dist/v{{ version }}/{{ pkgname }}.tar.{{ format }}
23+
- source_hash: sha256={{ checksum }}
24+
1925
Extract binary package:
2026
archive.extracted:
2127
- name: /usr/local/src/
22-
- source: https://nodejs.org/dist/v{{ version }}/{{ pkgname }}.tar.{{ format }}
2328
- source_hash: {{ checksum }}
29+
- source: /usr/local/src/{{ pkgname }}.tar.gz
2430
- archive_format: tar
2531
- tar_options: {{ tar_options }}
2632
- if_missing: /usr/local/src/{{ pkgname }}
33+
- require:
34+
- file: Get binary package
35+
36+
Remove existing include directory:
37+
file.absent:
38+
- name: /usr/local/include/node
39+
- unless: cmp /usr/local/bin/node /usr/local/src/{{ pkgname }}/bin/node
40+
- require:
41+
- archive: Extract binary package
42+
43+
Remove existing npm:
44+
file.absent:
45+
- name: /usr/local/lib/node_modules/npm
46+
- onchanges:
47+
- file: Remove existing include directory
2748

2849
Copy lib:
2950
cmd.run:
3051
- cwd: /usr/local/src/{{ pkgname }}/
3152
- name: cp -r bin/ include/ lib/ share/ /usr/local/
32-
- unless: cmp /usr/local/bin/node /usr/local/src/{{ pkgname }}/bin/node
53+
- unless:
54+
- cmp /usr/local/bin/node /usr/local/src/{{ pkgname }}/bin/node
55+
- npm --version

node/map.jinja

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
{% set pillar_get = salt['pillar.get'] -%}
22

33
{% if pillar_get('node:install_from_source') %}
4-
{% set default_npm_prefix = '/usr/local' %}
4+
{% set default_npm_prefix = '/usr/local' %}
55
{% else %}
6-
{% set default_npm_prefix = '/usr' %}
6+
{% set default_npm_prefix = '/usr' %}
77
{% endif %}
88
{% set npm_prefix = pillar_get('npm:prefix', default_npm_prefix) %}
99
{% set npm_bin = '{0}/bin/npm'.format(npm_prefix) %}
1010
{% set npm_src_requirement = 'file: {0}'.format(npm_bin) %}
1111

1212
{% if npm_prefix == '/usr' %}
13-
{% set npmrc_prefix = '' %}
13+
{% set npmrc_prefix = '' %}
1414
{% else %}
15-
{% set npmrc_prefix = npm_prefix %}
15+
{% set npmrc_prefix = npm_prefix %}
1616
{% endif %}
1717
{% set npmrc = '{0}/etc/npmrc'.format(npmrc_prefix) %}
1818

@@ -35,8 +35,17 @@
3535
},
3636
}, grain='os', merge=pillar_get('node:lookup')) %}
3737

38-
{% if pillar_get('node:install_from_source') or (grains['os'] == 'Debian' and grains['osrelease']|float < 8 and not pillar_get('node:install_from_ppa')) %}
39-
{% set npm_requirement = npm_src_requirement %}
38+
{% if pillar_get('node:install_from_source') or (grains['os_family'] == 'Debian' and grains['osrelease']|float < 8 and not pillar_get('node:install_from_ppa')) %}
39+
{% set npm_requirement = npm_src_requirement %}
4040
{% else %}
41-
{% set npm_requirement = 'pkg: {0}'.format(node['npm_pkg']) %}
41+
{% set npm_requirement = 'pkg: {0}'.format(node['npm_pkg']) %}
4242
{% endif %}
43+
44+
{% set from_src_requirements = salt['grains.filter_by']({
45+
'Debian': {
46+
'pkgs': ['git', 'curl', 'gcc', 'pkg-config', 'build-essential', 'checkinstall', 'libssl-dev', 'g++']
47+
},
48+
'RedHat': {
49+
'pkgs': ['git', 'curl', 'gcc','openssl-devel','pkgconfig', 'gcc-c++', 'make', 'automake']
50+
},
51+
}, grain='os_family', merge=pillar_get('from_src_requirements:lookup'), default='Debian') %}

node/pkg.sls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{%- from "node/map.jinja" import node, npm_bin with context %}
22
3-
{%- if grains['os'] in ['Ubuntu', 'Debian'] and salt['pillar.get']('node:install_from_ppa') %}
3+
{%- if grains['os_family'] in ['Ubuntu', 'Debian'] and salt['pillar.get']('node:install_from_ppa') %}
44
nodejs.ppa:
55
pkg.installed:
66
- name: apt-transport-https
77
- require_in:
88
- pkgrepo: nodejs.ppa
99
pkgrepo.managed:
1010
- humanname: NodeSource Node.js Repository
11-
- name: deb {{ salt['pillar.get']('node:ppa:repository_url', 'https://deb.nodesource.com/node_0.12') }} {{ grains['oscodename'] }} main
11+
- name: deb {{ salt['pillar.get']('node:ppa:repository_url', 'https://deb.nodesource.com/node_6.x') }} {{ grains['oscodename'] }} main
1212
- dist: {{ grains['oscodename'] }}
1313
- file: /etc/apt/sources.list.d/nodesource.list
1414
- keyid: "68576280"

node/source.sls

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
{% from "node/map.jinja" import from_src_requirements with context %}
2+
13
{% set node = pillar.get('node', {}) -%}
24
{% set version = node.get('version', '5.1.0') -%}
35
{% set checksum = node.get('checksum', '25b2d3b7dd57fe47a483539fea240a3c6bbbdab4d89a45a812134cf1380ecb94') -%}
@@ -12,15 +14,19 @@
1214
1315
Ensure required packages are present:
1416
pkg.installed:
15-
- names:
16-
- libssl-dev
17-
- git
18-
- pkg-config
19-
- build-essential
20-
- curl
17+
- names: {{ from_src_requirements.pkgs|json }}
18+
19+
{% if grains['os_family'] in ['RedHat', 'CentOS'] %}
20+
Alternative checkinstall requirement:
21+
pkg.installed:
22+
- pkgs:
23+
- ruby-devel
2124
- gcc
22-
- g++
23-
- checkinstall
25+
26+
fpm:
27+
gem.installed:
28+
- user: root
29+
{% endif %}
2430
2531
Download node sources:
2632
file.managed:
@@ -48,11 +54,42 @@ make-node:
4854
- cwd: /usr/src/node-v{{ version }}
4955
- name: make --jobs={{ make_jobs }}
5056
57+
{% if grains['os_family'] in ['RedHat', 'CentOS'] %}
58+
make-install-node:
59+
cmd.run:
60+
- cwd: /usr/src/node-v{{ version }}
61+
- name: make install DESTDIR=/usr/src/node-v{{ version }}/tmp
62+
- onchanges:
63+
- cmd: make-node
64+
65+
fpm-node:
66+
cmd.run:
67+
- cwd: /usr/src/node-v{{ version }}
68+
- name: fpm -s dir -t rpm -C /usr/src/node-v{{ version }}/tmp --name=node --version "{{ version }}" --iteration 1 --description "Node package v{{ version }} (fpm)" --force
69+
- onchanges:
70+
- cmd: make-install-node
71+
72+
install-node:
73+
pkg.installed:
74+
- sources:
75+
- node: /usr/src/node-v{{ version }}/node-{{ version }}-1.x86_64.rpm
76+
- onchanges:
77+
- cmd: fpm-node
78+
{% else %}
79+
5180
install-node:
5281
cmd.run:
5382
- cwd: /usr/src/node-v{{ version }}
5483
- name: checkinstall --install=yes --pkgname=node --pkgversion "{{ version }}" --default
5584
- onchanges:
5685
- cmd: make-node
5786
58-
{% endif %}
87+
{% endif %}
88+
89+
{% else %}
90+
91+
Version Control:
92+
test.succeed_without_changes:
93+
- name: Node version {{ nodeVersion }} already installed
94+
95+
{% endif %}

pillar.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ node:
1313

1414
# Install from PPA:
1515
node:
16-
version: 5.4.0
16+
version: 6.9.4
1717
install_from_ppa: True
1818
ppa:
19-
repository_url: https://deb.nodesource.com/node_5.x
19+
repository_url: https://deb.nodesource.com/node_6.x

0 commit comments

Comments
 (0)