config/software/runit.rb (35 lines of code) (raw):
#
# Copyright 2012-2014 Chef Software, Inc.
#
# 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.
#
name 'runit'
default_version '2.1.2'
license 'BSD-3-Clause'
license_file '../package/COPYING'
skip_transitive_dependency_licensing true
version '2.1.2' do
source sha256: '6fd0160cb0cf1207de4e66754b6d39750cff14bb0aa66ab49490992c0c47ba18'
end
source url: "http://smarden.org/runit/runit-#{version}.tar.gz"
relative_path "admin/runit-#{version}/src"
build do
# Patch runit to not consider status of log service associated with a service
# on determining output of status command. For details, check
# https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4008
patch source: 'log-status.patch'
env = with_standard_compiler_flags(with_embedded_path)
# Put runit where we want it, not where they tell us to
command 'sed -i -e "s/^char\ \*varservice\ \=\"\/service\/\";$/char\ \*varservice\ \=\"' + install_dir.gsub('/', '\\/') + '\/service\/\";/" sv.c', env: env
# TODO: the following is not idempotent
command 'sed -i -e s:-static:: Makefile', env: env
# Build it
make env: env
make 'check', env: env
# Move it
mkdir "#{install_dir}/embedded/bin"
copy "#{project_dir}/chpst", "#{install_dir}/embedded/bin"
copy "#{project_dir}/runit", "#{install_dir}/embedded/bin"
copy "#{project_dir}/runit-init", "#{install_dir}/embedded/bin"
copy "#{project_dir}/runsv", "#{install_dir}/embedded/bin"
copy "#{project_dir}/runsvchdir", "#{install_dir}/embedded/bin"
copy "#{project_dir}/runsvdir", "#{install_dir}/embedded/bin"
copy "#{project_dir}/sv", "#{install_dir}/embedded/bin"
copy "#{project_dir}/svlogd", "#{install_dir}/embedded/bin"
copy "#{project_dir}/utmpset", "#{install_dir}/embedded/bin"
erb source: 'runsvdir-start.erb',
dest: "#{install_dir}/embedded/bin/runsvdir-start",
mode: 0755,
vars: { install_dir: install_dir }
# Setup service directories
touch "#{install_dir}/service/.gitkeep"
touch "#{install_dir}/sv/.gitkeep"
touch "#{install_dir}/init/.gitkeep"
end