c5ae74d56d
Use TASK_VERBOSE environment variable to select which tasks should emit output when invoked.
161 lines
5 KiB
Text
161 lines
5 KiB
Text
# Copyright (c) 2017 The NetBSD Foundation, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This code is derived from software contributed to The NetBSD Foundation
|
|
# by Johnny C. Lam.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions
|
|
# are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# NAME
|
|
# postinstall.subr -- post-installation actions for packages
|
|
#
|
|
# SYNOPSIS
|
|
# task_postinstall <datafile>
|
|
#
|
|
# DESCRIPTION
|
|
# The task_postinstall function performs actions that SHOULD occur
|
|
# AFTER the package files are installed into their final location
|
|
# for the installation:
|
|
#
|
|
# o Copy configuration files into correct locations.
|
|
# o Set special permissions on package files and directories.
|
|
# o Rebuild the system run-time library search path database.
|
|
# o Update fonts databases.
|
|
# o Create caches within GTK+ icon theme directories.
|
|
# o Register shells in the system shells database.
|
|
# o Register GNU info files.
|
|
# o Update OCaml module run-time library search path database.
|
|
#
|
|
# The datafile contains lines of the form:
|
|
#
|
|
# # <keyword>: <arg> ...
|
|
#
|
|
# These lines are used as input to the various script functions.
|
|
#
|
|
# RETURN VALUES
|
|
# Returns 0 on success, and >0 if an error occurs.
|
|
#
|
|
# ENVIRONMENT
|
|
# The following variables are used if they are set:
|
|
#
|
|
# TASK_VERBOSE
|
|
# List of package tasks that should emit verbose output.
|
|
# If ${TASK_VERBOSE} is "all", then all tasks are verbose.
|
|
# If ${TASK_VERBOSE} is "none", then no tasks are verbose.
|
|
# Otherwise, if one of the tasks is "default", then the
|
|
# default list of tasks are verbose.
|
|
#
|
|
|
|
__task_postinstall__="yes"
|
|
|
|
task_load directories
|
|
task_load files
|
|
task_load fonts
|
|
task_load icon_themes
|
|
task_load info_files
|
|
task_load ocaml_findlib
|
|
task_load permissions
|
|
task_load shells
|
|
task_load shlibs
|
|
task_load sort
|
|
task_load taskfunc
|
|
|
|
task_postinstall()
|
|
{
|
|
: ${TASK_VERBOSE:=default}
|
|
|
|
[ $# -gt 0 ] || return 127
|
|
local datafile="$1"; shift
|
|
|
|
[ -f "$datafile" ] || return 1
|
|
|
|
local post_tasks=
|
|
# Copy configuration/support files into place.
|
|
post_tasks="files"
|
|
# Set special permissions on files and directories that need them.
|
|
post_tasks="$post_tasks permissions"
|
|
# Rebuild the system run-time library search path database.
|
|
post_tasks="$post_tasks shlibs"
|
|
# Update font databases.
|
|
post_tasks="$post_tasks fonts"
|
|
# Update GTK+ icon theme caches.
|
|
post_tasks="$post_tasks icon_themes"
|
|
# Register shells.
|
|
post_tasks="$post_tasks shells"
|
|
# Register GNU info files.
|
|
post_tasks="$post_tasks info_files"
|
|
# Update OCaml module run-time library search path database.
|
|
post_tasks="$post_tasks ocaml_findlib"
|
|
# Run generic package tasks.
|
|
post_tasks="$post_tasks function"
|
|
|
|
# Seed checks with actions from preinstall, in order.
|
|
local post_checks="directories"
|
|
|
|
local result=0
|
|
local stage="postinstall"
|
|
|
|
# $verbose are the package tasks that give verbose output.
|
|
# Expand "all", "default" and "none" to a fixed list of tasks.
|
|
#
|
|
local verbose="${TASK_VERBOSE}"
|
|
case " $verbose " in
|
|
" all ")
|
|
verbose="files fonts function icon_themes info_files"
|
|
verbose="$verbose ocaml_findlib permissions shells shlibs" ;;
|
|
*" default "*)
|
|
# These tasks are verbose by default since they touch
|
|
# system files and directories.
|
|
#
|
|
verbose="$verbose files permissions shells" ;;
|
|
" none ")
|
|
verbose= ;;
|
|
esac
|
|
|
|
local task post_fn silent
|
|
for task in $post_tasks; do
|
|
post_fn="task_$task"
|
|
case " $verbose " in
|
|
*" $task "*)
|
|
silent= ;;
|
|
*) silent="-s" ;;
|
|
esac
|
|
$post_fn $silent add $stage < $datafile || result=1
|
|
post_checks="$post_checks $task"
|
|
done
|
|
|
|
# Run all checks after all post-installation actions have completed
|
|
# and write messages to standard output for any checks that don't
|
|
# pass.
|
|
#
|
|
for check in $post_checks; do
|
|
post_fn="task_$check"
|
|
case $check in
|
|
directories)
|
|
# Sort data lines for this task.
|
|
task_sort < $datafile | $post_fn check-add $stage ;;
|
|
*) $post_fn check-add $stage < $datafile ;;
|
|
esac
|
|
done
|
|
|
|
return $result
|
|
}
|