include/spec-install-post.sh
author yippi
Thu, 31 May 2012 20:16:52 +0000
changeset 22481 1ff6784d9b6f
parent 22190 ce8390a5afd2
permissions -rwxr-xr-x
2012-05-31 Brian Cameron <[email protected]> * base-specs/shared-mime-info.spec: Bump to 1.0. * base-specs/nautilus.spec, base-specs/pulseaudio.spec, base-specs/gnome-settings-daemon.spec, specs/SUNWdconf.spec: Add patch comments. * base-specs/gnome-panel.spec: Add --disable-telepathy-glib so it does not build with this module we do not deliver.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22108
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     1
#!/bin/bash
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     2
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     3
# This script runs after the %install scriptlet of the Desktop spec files,
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     4
# The purpose of the script is post-processing files before packaging.
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     5
# 
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     6
# Currently it does two things:
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     7
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     8
# 1) delete CDDL header from text files, if found
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
     9
# 2) validate smf manifests
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    10
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    11
# command line arguments:
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    12
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    13
# spec-post-install [DIR|FILE]...
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    14
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    15
# Processes a single file or all files in a directory, recursively
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    16
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    17
# returns 0 on success or 1 on failure (breaks the build)
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    18
#
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    19
# requires file/gnu-coreutils
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    20
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    21
SED=/usr/xpg4/bin/sed
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    22
TR=/usr/xpg4/bin/tr
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    23
NL=/usr/xpg4/bin/nl
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    24
STAT=/usr/bin/stat
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    25
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    26
# deletes the CDDL header from a text file
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    27
# returns 0 on success, 1 on error
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    28
delete_cddl() {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    29
    mode=$(${STAT} -c '%a' "$1")
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    30
    chmod +w "$1"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    31
    tmpfile=$(mktemp)
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    32
    ${SED} -e '/CDDL HEADER START/,/CDDL HEADER END/d' < "$1" > $tmpfile \
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    33
	|| return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    34
    mv $tmpfile "$1" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    35
    chmod $mode "$1"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    36
    return 0
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    37
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    38
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    39
# return 0 is arg is an integer number
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    40
is_int() {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    41
    echo "$1" | grep '^[1-9][0-9]*$' > /dev/null
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    42
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    43
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    44
# verifies if a given file needs the CDDL header removed
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    45
has_cddl() {
22190
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    46
    start_line=$(${NL} -ba "$1" | ${TR} -cd 'a-z0-9A-Z 	\n' | \
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    47
	grep '^ *[0-9]*[ 	]*CDDL HEADER START *$' | awk '{print $1}')
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    48
    end_line=$(${NL} -ba "$1" | ${TR} -cd 'a-z0-9A-Z 	\n' | \
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    49
	grep '^ *[0-9]*[ 	]*CDDL HEADER END *$' | awk '{print $1}')
22108
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    50
    is_int "$start_line" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    51
    is_int "$end_line" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    52
    if [ $start_line -gt $end_line ]; then
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    53
	return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    54
    fi
22190
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    55
    if [ $start_line -gt 15 ]; then
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    56
	echo "WARNING: CDDL-like header starts after the 15th line"
22108
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    57
	return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    58
    fi
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    59
    diff=$(($end_line - $start_line))
22190
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    60
    if [ $diff != 17 -a $diff != 18 -a $diff != 11 -a $diff != 12 ]; then
ce8390a5afd2 2011-10-18 Laszlo (Laca) Peter <[email protected]>
laca
parents: 22108
diff changeset
    61
	echo "WARNING: $1: unrecognised CDDL-like header, $diff lines long"
22108
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    62
	return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    63
    fi
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    64
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    65
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    66
# runs svccfg validate on arg
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    67
validate_manifest() {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    68
    svccfg validate "$1" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    69
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    70
    return 0
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    71
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    72
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    73
# processes a single file
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    74
process_file() {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    75
    grep 'CDDL HEADER' "$1" > /dev/null && has_cddl "$1" && {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    76
	echo "Deleting CDDL header from $1"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    77
	delete_cddl "$1" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    78
    }
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    79
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    80
    echo "$1" | egrep '/(var|lib)/svc/manifest/' > /dev/null && {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    81
	echo "Validating SMF manifest $1"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    82
	validate_manifest "$1" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    83
    }
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    84
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    85
    return 0
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    86
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    87
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    88
# processes all files in a directory, recursively
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    89
process_dir() {
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    90
    files=$(find "$1" -type f -print)
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    91
    for file in $files; do
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    92
	process_file "$file" || return 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    93
    done
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    94
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    95
    return 0
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    96
}
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    97
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    98
for arg in "${@}"; do
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
    99
    echo "Post-processing $arg"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   100
    if [ -d "$arg" ]; then
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   101
	process_dir "$arg"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   102
    elif [ -f "$arg" ]; then
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   103
	process_file "$arg"
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   104
    else
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   105
	echo "$0: $arg not found" 1>&2
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   106
	exit 1
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   107
    fi
09500c5eaf8c merge from gnome-2-30 -r23919:23994
laca
parents:
diff changeset
   108
done