i.nametomajor revision 91e1058474884b4b6f1d3665a96ddeb9a30cd489
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#!/bin/sh
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# CDDL HEADER START
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# The contents of this file are subject to the terms of the
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# Common Development and Distribution License (the "License").
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# You may not use this file except in compliance with the License.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# or http://www.opensolaris.org/os/licensing.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# See the License for the specific language governing permissions
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# and limitations under the License.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# When distributing Covered Code, include this CDDL HEADER in each
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# If applicable, add the following below this CDDL HEADER, with the
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# fields enclosed by brackets "[]" replaced with your own identifying
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# information: Portions Copyright [yyyy] [name of copyright owner]
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# CDDL HEADER END
6398f22526303343193a18e514602f1af6fb29cbNikolai Kondrashov#
6398f22526303343193a18e514602f1af6fb29cbNikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# Use is subject to license terms.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#ident "%Z%%M% %I% %E% SMI"
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai KondrashovPATH=/usr/bin:/usr/sbin:$PATH; export PATH
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# obsolete_sparc - Filter function to remove obsolete SPARC driver entries.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# We define an associative array of bad driver names, and then nawk out
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# lines where the first token is defined in our array.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashovobsolete_sparc()
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov{
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov nawk 'BEGIN {
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["rip"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svloop"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tcl"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tco"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tcoo"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["consfb"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["dbri"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["XXunusedXX"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sw"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgtwo"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xy"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xd"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["app"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["evq"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["win"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svarp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svip"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svrip"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svicmp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svudp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svtcp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["vme"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["ie"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["qe"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["qec"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["ncr"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xt"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["id"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["vmemem"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pn"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["kmac"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["ipi3sc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgfour"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgeight-p4"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xdc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xyc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mcp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mcpzsa"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mcpp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["be"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["p9000"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["p9100"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pci"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["profile"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["eeprom"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["PFUaga"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["atapicd"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgeight"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgfourteen"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["xbox"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sx"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sx_cmem"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["stc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["bbc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["gptwo"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["bwtwo"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cgthree"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["obio"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cpu"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["bootbus"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sbi"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mic"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pln"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["soc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sc_nct"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tomtppm"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov } !($1 in obs) { print $0 }'
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov}
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# obsolete_i386 - Filter function to remove obsolete i386 driver entries.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# We define an associative array of bad driver names, and then nawk out
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# lines where the first token is defined in our array.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashovobsolete_i386()
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov{
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov nawk 'BEGIN {
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["aha"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["aic"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["app"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["audiocs"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["blogic"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["chanmux"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["chs"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cmtp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["corvette"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["cpqncr"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["csa"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["dpt"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["dsa"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["eepro"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["eha"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["el"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["elink"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["elx"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["envm"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["esa"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["esa"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["iee"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["ieef"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["iss"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["kd"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["kdmouse"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["lp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mc"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mcis"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["mega"] = 1;
8ef1a136c1406bd1bab66e4ebf75b9375090cd86Nikolai Kondrashov obs["mlx"] = 1;
8ef1a136c1406bd1bab66e4ebf75b9375090cd86Nikolai Kondrashov obs["nee"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["nei"] = 1;
8ef1a136c1406bd1bab66e4ebf75b9375090cd86Nikolai Kondrashov obs["nfe"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["objmgr"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["p9000"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["p9100"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pcaic"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["profile"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["riles"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["rip"] = 1;
3e2f89726a90dfe091d7d7d3b558d97469e5d3afLukas Slebodnik obs["smartii"] = 1;
3e2f89726a90dfe091d7d7d3b558d97469e5d3afLukas Slebodnik obs["smc"] = 1;
3e2f89726a90dfe091d7d7d3b558d97469e5d3afLukas Slebodnik obs["smce"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["smceu"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["smcf"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["sp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svarp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svicmp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svip"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svloop"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svrip"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svtcp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["svudp"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tcl"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tco"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tcoo"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tiqmouse"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["tr"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["trantor"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["pci_to_i2o"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["i2o_scsi"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obs["i2o_bs"] = 1;
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov } !($1 in obs) { print $0 }'
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov}
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# Useful debugging which is reasonable to include in a production system:
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# we copy the salient driver files to the package undo directory before
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# doing any work. This will help diagnose add_drv errors before the system
8dff4a773dd9525ec587cd31646a9f67252122c1Nikolai Kondrashov# becomes an unbootable smoldering ruin.
8dff4a773dd9525ec587cd31646a9f67252122c1Nikolai Kondrashov#
bc85b85227b87758d80e84b30e4823370d5ffca7Lukas Slebodnikfor file in driver_aliases driver_classes minor_perm name_to_major; do
bc85b85227b87758d80e84b30e4823370d5ffca7Lukas Slebodnik cp $BASEDIR/etc/$file $PKGSAV/$file.orig >/dev/null 2>&1
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashovdone
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov# check if the driver specified is already installed.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# the second token must be the decimal digit.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# ignore a comment if exists.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashovis_installed ()
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov{
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov file=$2
35f29b17699c3d52f77857c530300318b14148f8Lukas Slebodnik nawk -v driver=$1 -v delimiter='#' ' \
35f29b17699c3d52f77857c530300318b14148f8Lukas Slebodnik $1 == driver && $2 ~ /^[0-9][0-9]*$/ \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov { found = 1; exit 0 } \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov $1 == driver \
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik { num = split($2, n_array, delimiter); \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov if (num > 1 && n_array[1] ~ /^[0-9][0-9]*$/) \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov { found = 1; exit 0 } \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov } \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov END { if (!found) exit 1 } ' $file
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik return $?
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik}
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik#
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# Add_drv needs /etc/driver_aliases in order to work properly; if for
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# some reason it has been removed, create an empty one at this time.
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# Recall that in SUNWcsr's pkginfo.tmpl, the driver_aliases class-action
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# script is invoked *after* this class-action script. This is critical
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# because if we are going to add_drv a new driver 'foo', and 'foo' has
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# an alias 'bar', the add_drv of 'foo' will fail if the alias is already
444a82bd6d68c6f23e05d523ff92d328f6b2ec05Lukas Slebodnik# present. Thus new aliases must be added *after* new driver major entries.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# The driver_aliases class-action script will add the complete set of aliases
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov# if we create an empty file here, so this code allows us to continue and
b7a17cb7d498ce6f1f8b385ae2c442c6a19a8986Nikolai Kondrashov# get a correct upgrade in the face of a missing driver_aliases file.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov#
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashovif [ ! -f $BASEDIR/etc/driver_aliases ]; then
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov touch $BASEDIR/etc/driver_aliases
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov chmod 0644 $BASEDIR/etc/driver_aliases
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov chown root $BASEDIR/etc/driver_aliases
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov chgrp sys $BASEDIR/etc/driver_aliases
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashovfi
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashovwhile read src dest; do
9d453f1e8b28983b363b44c49b7cd701a994fd97Nikolai Kondrashov if [ -f $dest ]; then
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # Strip obsolete entries from the existing name_to_major
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov if [ $ARCH = sparc ]; then
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obsolete_sparc < $dest > /tmp/onm.$$.tmp
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov else
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov obsolete_i386 < $dest > /tmp/onm.$$.tmp
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov fi
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov cp /tmp/onm.$$.tmp $dest
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov rm -f /tmp/onm.$$.tmp
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # Remove comment and/or blank lines before reading
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3e2f89726a90dfe091d7d7d3b558d97469e5d3afLukas Slebodnik nawk '$1 !~ /^#|^$/ {print $0}' $src | sed -e 's/#.*$//' | \
3e2f89726a90dfe091d7d7d3b558d97469e5d3afLukas Slebodnik while read name major; do
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # If the driver is already present in name_to_major,
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # leave the existing number and continue
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov is_installed $name $dest >/dev/null 2>&1 && continue
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # Otherwise add the driver to name_to_major using
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # add_drv. add_drv produces spurious output even on
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # success, so save its output in a temporary
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov # file in case an error occurs.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik if add_drv -b $BASEDIR $name \
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov >/tmp/ad.$$.tmp 2>&1; then
8d1b572126afceb60693ff4c4a734bd6dbdaf548Nikolai Kondrashov echo "added $name to $dest"
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov else
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik echo "$PKG: failed to add $name to " \
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik "$dest:" >& 2
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik cat /tmp/ad.$$.tmp >& 2
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik fi
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik done
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik rm -f /tmp/ad.$$.tmp
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik else
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik #
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik # If no name_to_major is present on the target system,
057f699b401097ad7f48fe3760e81c6993619a4bLukas Slebodnik # just copy over the one from the package.
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov #
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov cp -p $src $dest
e373fffbb8e06d0d7682d095c734e8df8a499ba0Nikolai Kondrashov fi
e373fffbb8e06d0d7682d095c734e8df8a499ba0Nikolai Kondrashovdone
e373fffbb8e06d0d7682d095c734e8df8a499ba0Nikolai Kondrashovexit 0
3ce85a5f5264e7118beb6524e120fd8b53a13da4Nikolai Kondrashov