15939 Need a easy way to format package manifests in a consistent style
authorBart Smaalders <Bart.Smaalders@Oracle.COM>
Tue, 18 May 2010 17:46:27 -0700
changeset 1903 460ef45c8ebd
parent 1902 59b7214232cb
child 1904 a30d551d5804
15939 Need a easy way to format package manifests in a consistent style 15940 Some changes to pkgmogrify would facilitate ON manifest editing 16000 tests that install drivers need to create /var/run so add_drv can create lock file
doc/boot_environments.txt
src/man/pkgfmt.1.txt
src/man/pkgmogrify.1.txt
src/setup.py
src/tests/cli/t_fix.py
src/tests/cli/t_pkg_install.py
src/tests/cli/t_pkgfmt.py
src/tests/cli/t_pkgmogrify.py
src/util/publish/pkgfmt.py
src/util/publish/pkgmogrify.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/boot_environments.txt	Tue May 18 17:46:27 2010 -0700
@@ -0,0 +1,54 @@
+As of 2010/03, we always create new boot environments
+when doing an image-update, and never do so for
+install, instead failing the operation should an action
+tagged w/ reboot-needed be affected.  We also always 
+create new boot environments for change-variant and
+change-facet operations, and never for fix.
+
+This needs work.
+
+Instead, I'd like to propose the following:
+
+1) We support the creation of a new optional backup
+boot environment before executing the operation
+on the live image.  Non-live images can easily
+use snapshots for this; this option would have
+no effect in the case that the operation creates
+a new BE.
+
+2) All image-modifying operations on a live image
+would create a new boot environment only if needed.
+This behavior could be altered via command line flags
+to always create a new boot environment or to never 
+create one, failing instead if the operation needs
+one.
+
+pkg install 
+pkg fix 
+would both get the following new options:
+
+[--backup-be]
+[--backup-be-name name]
+[--no-new-be | --always-new-be]
+[--be-name name]
+
+pkg image-update
+pkg change-facet
+pkg change-variant
+
+would all get the following new options:
+
+[--backup-be]
+[--backup-be-name name]
+[--no-new-be | --always-new-be]
+
+So, to retain the current behavior,
+
+invoke pkg install --no-new-be ....
+
+invoke pkg image-update --always-new-be ...
+       pkg change-facet --always-nes-be ...
+       pkg change-variant --always-new-be ...
+
+- Bart
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/man/pkgfmt.1.txt	Tue May 18 17:46:27 2010 -0700
@@ -0,0 +1,66 @@
+User Commands                                            pkgfmt(1)
+
+
+NAME
+     pkgfmt - format a package manifest
+
+SYNOPSIS
+     /usr/bin/pkgfmt [package-manifest-file]
+
+
+DESCRIPTION
+
+     Pkgfmt without the -c option will format a package 
+     manifest in a consistant manner, wrapping lines at 
+     80 characters, sorting actions by type, placing key 
+     attributes first, etc.  Pkgfmt tries to be robust
+     in the case of lines that don't parse into actions;
+     such lines will not appear in sorted order.
+
+     If no arguments are given, pkgfmt will read the stdin
+     until EOF, and then write the formated manifest on the
+     stdout.  Any manifests specified on the command line
+     are formated in place.
+
+     Pkgfmt with the -c option will check to make sure the
+     manifest(s) are formated in pkgfmt style.
+
+OPTIONS
+     
+     -c   Check if the manifest is formated in the pkgfmt style.
+
+     -u   Do not wrap lines at 80 characters; this is useful for
+          applying traditional text processing tools to package
+          manifests.
+
+EXIT STATUS
+     The following exit values are returned:
+
+     0     Normal execution
+
+     1     The -c option was specified, and one or more manifests
+           are not in pkgfmt-normal form.
+
+     99    An unanticipated exception occurred
+
+
+ATTRIBUTES
+     See attributes(5) for descriptions of the following attributes:
+     ____________________________________________________________
+    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
+    |_____________________________|_____________________________|
+    | Availability                | pkg:/package/pkg            |
+    |_____________________________|_____________________________|
+    | Interface Stability         | None / Under Development    |
+    |_____________________________|_____________________________|
+
+SEE ALSO
+     attributes(5), pkg(5)
+
+NOTES
+     The image packaging system is an under-development feature.
+     Command names, invocation, formats, and operations are all subject
+     to change.  Development is hosted in the OpenSolaris community
+     at
+
+     http://hub.opensolaris.org/bin/view/Project+pkg/
--- a/src/man/pkgmogrify.1.txt	Tue May 18 10:51:50 2010 -0700
+++ b/src/man/pkgmogrify.1.txt	Tue May 18 17:46:27 2010 -0700
@@ -5,7 +5,7 @@
      pkgmogrify - image packaging system manifest transmogrifier
 
 SYNOPSIS
-     /usr/bin/pkgmogrify [-v] [-I includedir ...] [-D macro=value ...]
+     /usr/bin/pkgmogrify [-vi] [-I includedir ...] [-D macro=value ...]
            [-O outputfile] [-P printfile] [inputfile ...]
 
 DESCRIPTION
@@ -70,6 +70,9 @@
           abort operation.  By default, print output is written to
           stdout.
 
+     -i   Ignore include directives in files; only files specified on 
+          the command line (or stdin) are processed.
+
      -v   Write out comments into output manifest showing effect of
           transforms to aid debugging.
 
--- a/src/setup.py	Tue May 18 10:51:50 2010 -0700
+++ b/src/setup.py	Tue May 18 17:46:27 2010 -0700
@@ -183,6 +183,7 @@
                 ['client.py', 'pkg'],
                 ['pkgdep.py', 'pkgdepend'],
                 ['util/publish/pkgdiff.py', 'pkgdiff'],
+                ['util/publish/pkgfmt.py', 'pkgfmt'],
                 ['util/publish/pkgmogrify.py', 'pkgmogrify'],
                 ['publish.py', 'pkgsend'],
                 ['pull.py', 'pkgrecv'],
@@ -221,6 +222,7 @@
                 ['client.py', 'client.py'],
                 ['pkgdep.py', 'pkgdep'],
                 ['util/publish/pkgdiff.py', 'pkgdiff'],
+                ['util/publish/pkgfmt.py', 'pkgfmt'],
                 ['util/publish/pkgmogrify.py', 'pkgmogrify'],
                 ['pull.py', 'pull.py'],
                 ['publish.py', 'publish.py'],
@@ -249,6 +251,7 @@
         'man/pkg.1',
         'man/pkgdepend.1',
         'man/pkgdiff.1',
+        'man/pkgfmt.1',
         'man/pkgmogrify.1',
         'man/pkgsend.1',
         'man/pkgrecv.1',
--- a/src/tests/cli/t_fix.py	Tue May 18 10:51:50 2010 -0700
+++ b/src/tests/cli/t_fix.py	Tue May 18 17:46:27 2010 -0700
@@ -90,6 +90,8 @@
         driver_prep10 = """
             open [email protected],5.11-0
             add dir path=/tmp mode=755 owner=root group=root
+            add dir mode=0755 owner=root group=root path=/var
+            add dir mode=0755 owner=root group=root path=/var/run
             add file tmp/empty path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
             add file tmp/empty path=/etc/name_to_major mode=644 owner=root group=sys preserve=true
             add file tmp/empty path=/etc/driver_classes mode=644 owner=root group=sys
--- a/src/tests/cli/t_pkg_install.py	Tue May 18 10:51:50 2010 -0700
+++ b/src/tests/cli/t_pkg_install.py	Tue May 18 17:46:27 2010 -0700
@@ -962,6 +962,8 @@
 
         dricon1 = """
             open dricon@1
+            add dir path=var mode=755 owner=root group=root
+            add dir path=var/run mode=755 owner=root group=root
             add dir path=/tmp mode=755 owner=root group=root
             add dir path=/etc mode=755 owner=root group=root
             add file tmp/dricon_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
@@ -971,6 +973,8 @@
 
         dricon2 = """
             open dricon@2
+            add dir path=var mode=755 owner=root group=root
+            add dir path=var/run mode=755 owner=root group=root
             add dir path=/tmp mode=755 owner=root group=root
             add dir path=/etc mode=755 owner=root group=root
             add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
@@ -981,6 +985,8 @@
 
         dricon3 = """
             open dricon@3
+            add dir path=var mode=755 owner=root group=root
+            add dir path=var/run mode=755 owner=root group=root
             add dir path=/tmp mode=755 owner=root group=root
             add dir path=/etc mode=755 owner=root group=root
             add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
@@ -992,6 +998,8 @@
 
         dripol1 = """
             open dripol@1
+            add dir path=var mode=755 owner=root group=root
+            add dir path=var/run mode=755 owner=root group=root
             add dir path=/tmp mode=755 owner=root group=root
             add dir path=/etc mode=755 owner=root group=root
             add dir path=/etc/security mode=755 owner=root group=root
@@ -1004,6 +1012,8 @@
 
         dripol2 = """
             open dripol@2
+            add dir path=var mode=755 owner=root group=root
+            add dir path=var/run mode=755 owner=root group=root
             add dir path=/tmp mode=755 owner=root group=root
             add dir path=/etc mode=755 owner=root group=root
             add dir path=/etc/security mode=755 owner=root group=root
@@ -1937,6 +1947,8 @@
 
                 self.devicebase = """
                     open [email protected],5.11-0
+                    add dir mode=0755 owner=root group=root path=/var
+                    add dir mode=0755 owner=root group=root path=/var/run
                     add dir mode=0755 owner=root group=root path=/tmp
                     add dir mode=0755 owner=root group=root path=/etc
                     add dir mode=0755 owner=root group=root path=/etc/security
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tests/cli/t_pkgfmt.py	Tue May 18 17:46:27 2010 -0700
@@ -0,0 +1,963 @@
+#!/usr/bin/python
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+#
+
+import testutils
+if __name__ == "__main__":
+        testutils.setup_environment("../../../proto")
+import pkg5unittest
+
+import errno
+import os
+import shutil
+import stat
+import sys
+import tempfile
+import unittest
+class TestPkgFmt(pkg5unittest.CliTestCase):
+        pkgcontents = \
+            """
+set name=pkg.fmri value=pkg:/system/kernel@$(PKGVERS)
+set name=pkg.description value="core kernel software for a specific instruction-set architecture"
+set name=pkg.summary value="Core Solaris Kernel"
+set name=info.classification value=org.opensolaris.category.2008:System/Core
+set name=variant.arch value=$(ARCH)
+set name=variant.opensolaris.zone value=global value=nonglobal
+dir path=boot group=sys
+$(i386_ONLY)dir path=boot/acpi group=sys
+$(i386_ONLY)dir path=boot/acpi/tables group=sys
+dir path=boot/solaris group=sys
+dir path=boot/solaris/bin group=sys
+dir path=etc group=sys
+dir path=etc/crypto group=sys
+dir path=kernel group=sys
+$(i386_ONLY)dir path=kernel/$(ARCH64) group=sys
+dir path=kernel/crypto group=sys
+dir path=kernel/crypto/$(ARCH64) group=sys
+dir path=kernel/dacf group=sys
+dir path=kernel/dacf/$(ARCH64) group=sys
+dir path=kernel/drv group=sys
+dir path=kernel/drv/$(ARCH64) group=sys
+dir path=kernel/exec group=sys
+dir path=kernel/exec/$(ARCH64) group=sys
+dir path=kernel/fs group=sys
+dir path=kernel/fs/$(ARCH64) group=sys
+dir path=kernel/ipp group=sys
+dir path=kernel/ipp/$(ARCH64) group=sys
+dir path=kernel/kiconv group=sys
+dir path=kernel/kiconv/$(ARCH64) group=sys
+dir path=kernel/mac group=sys
+dir path=kernel/mac/$(ARCH64) group=sys
+dir path=kernel/misc group=sys
+dir path=kernel/misc/$(ARCH64) group=sys
+dir path=kernel/misc/scsi_vhci group=sys
+dir path=kernel/misc/scsi_vhci/$(ARCH64) group=sys
+dir path=kernel/sched group=sys
+dir path=kernel/sched/$(ARCH64) group=sys
+dir path=kernel/socketmod group=sys
+dir path=kernel/socketmod/$(ARCH64) group=sys
+dir path=kernel/strmod group=sys
+dir path=kernel/strmod/$(ARCH64) group=sys
+dir path=kernel/sys group=sys
+dir path=kernel/sys/$(ARCH64) group=sys
+dir path=lib
+dir path=lib/svc
+dir path=lib/svc/method
+dir path=lib/svc/manifest group=sys
+dir path=lib/svc/manifest/system group=sys
+$(i386_ONLY)driver name=acpi_drv perms="* 0666 root sys"
+driver name=aggr perms="* 0666 root sys"
+driver name=arp perms="arp 0666 root sys"
+driver name=bl perms="* 0666 root sys"
+driver name=bridge clone_perms="bridge 0666 root sys" policy="read_priv_set=net_rawaccess write_priv_set=net_rawaccess"
+$(sparc_ONLY)driver name=bscbus alias=SUNW,bscbus
+$(i386_ONLY)driver name=bscbus alias=SVI0101
+$(sparc_ONLY)driver name=bscv alias=SUNW,bscv perms="* 0644 root sys"
+$(i386_ONLY)driver name=bscv
+driver name=clone
+driver name=cn perms="* 0620 root tty"
+driver name=conskbd perms="kbd 0666 root sys"
+driver name=consms perms="mouse 0666 root sys"
+driver name=cpuid perms="self 0644 root sys"
+$(i386_ONLY)driver name=cpunex alias=cpus
+driver name=crypto perms="crypto 0666 root sys"
+driver name=cryptoadm perms="cryptoadm 0644 root sys"
+$(sparc_ONLY)driver name=dad alias=ide-disk perms="* 0640 root sys"
+driver name=devinfo perms="devinfo 0640 root sys" perms="devinfo,ro 0444 root sys"
+driver name=dld perms="* 0666 root sys"
+driver name=dlpistub perms="* 0666 root sys"
+$(sparc_ONLY)driver name=i8042 alias=8042
+$(i386_ONLY)driver name=i8042
+driver name=icmp perms="icmp 0666 root sys" policy="read_priv_set=net_icmpaccess write_priv_set=net_icmpaccess"
+driver name=icmp6 perms="icmp6 0666 root sys" policy="read_priv_set=net_icmpaccess write_priv_set=net_icmpaccess"
+$(i386_ONLY)driver name=intel_nb5000 \
+    alias=pci8086,25c0 \
+    alias=pci8086,25d0 \
+    alias=pci8086,25d4 \
+    alias=pci8086,25d8 \
+    alias=pci8086,3600 \
+    alias=pci8086,4000 \
+    alias=pci8086,4001 \
+    alias=pci8086,4003 \
+    alias=pci8086,65c0
+$(i386_ONLY)driver name=intel_nhm \
+    alias=pci8086,3423 \
+    alias=pci8086,372a
+$(i386_ONLY)driver name=intel_nhmex alias=pci8086,3422
+driver name=ip perms="ip 0666 root sys" \
+    policy="read_priv_set=net_rawaccess write_priv_set=net_rawaccess"
+driver name=ip6 perms="ip6 0666 root sys" \
+    policy="read_priv_set=net_rawaccess write_priv_set=net_rawaccess"
+driver name=ipnet perms="lo0 0666 root sys" \
+    policy="read_priv_set=net_observability write_priv_set=net_observability"
+driver name=ippctl
+driver name=ipsecah perms="ipsecah 0666 root sys" \
+    policy="read_priv_set=sys_ip_config write_priv_set=sys_ip_config"
+driver name=ipsecesp perms="ipsecesp 0666 root sys" \
+    policy="read_priv_set=sys_ip_config write_priv_set=sys_ip_config"
+driver name=iptun
+driver name=iwscn
+driver name=kb8042 alias=pnpPNP,303
+driver name=keysock perms="keysock 0666 root sys" \
+    policy="read_priv_set=sys_ip_config write_priv_set=sys_ip_config"
+driver name=kmdb
+driver name=kssl perms="* 0666 root sys"
+driver name=llc1 clone_perms="llc1 0666 root sys"
+driver name=lofi perms="* 0600 root sys" perms="ctl 0644 root sys"
+driver name=log perms="conslog 0666 root sys" perms="log 0640 root sys"
+$(i386_ONLY)driver name=mc-amd \
+    alias=pci1022,1100 \
+    alias=pci1022,1101 \
+    alias=pci1022,1102
+driver name=mm perms="allkmem 0600 root sys" perms="kmem 0640 root sys" \
+    perms="mem 0640 root sys" perms="null 0666 root sys" \
+    perms="zero 0666 root sys" \
+    policy="allkmem read_priv_set=all write_priv_set=all" \
+    policy="kmem read_priv_set=none write_priv_set=all" \
+    policy="mem read_priv_set=none write_priv_set=all"
+driver name=mouse8042 alias=pnpPNP,f03
+$(i386_ONLY)driver name=mpt class=scsi \
+    alias=pci1000,30 \
+    alias=pci1000,50 \
+    alias=pci1000,54 \
+    alias=pci1000,56 \
+    alias=pci1000,58 \
+    alias=pci1000,62 \
+    alias=pciex1000,56 \
+    alias=pciex1000,58 \
+    alias=pciex1000,62
+driver name=nulldriver \
+    alias=scsa,nodev \
+    alias=scsa,probe
+driver name=openeepr perms="openprom 0640 root sys" policy=write_priv_set=all
+driver name=options
+$(sparc_ONLY)driver name=pci_pci class=pci \
+    alias=pci1011,1 \
+    alias=pci1011,21 \
+    alias=pci1011,24 \
+    alias=pci1011,25 \
+    alias=pci1011,26 \
+    alias=pci1014,22 \
+    alias=pciclass,060400
+$(i386_ONLY)driver name=pci_pci class=pci \
+    alias=pci1011,1 \
+    alias=pci1011,21 \
+    alias=pci1014,22 \
+    alias=pciclass,060400 \
+    alias=pciclass,060401
+$(sparc_ONLY)driver name=pcieb \
+    alias=pciex108e,9010 \
+    alias=pciex108e,9020 \
+    alias=pciex10b5,8114 \
+    alias=pciex10b5,8516 \
+    alias=pciex10b5,8517 \
+    alias=pciex10b5,8518 \
+    alias=pciex10b5,8532 \
+    alias=pciex10b5,8533 \
+    alias=pciex10b5,8548 \
+    alias=pciexclass,060400
+$(i386_ONLY)driver name=pcieb \
+    alias=pciexclass,060400 \
+    alias=pciexclass,060401
+$(sparc_ONLY)driver name=pcieb_bcm alias=pciex1166,103
+driver name=physmem perms="* 0600 root sys"
+driver name=poll perms="* 0666 root sys"
+$(sparc_ONLY)driver name=power alias=ali1535d+-power
+$(i386_ONLY)driver name=power
+driver name=pseudo alias=zconsnex
+driver name=ptc perms="* 0666 root sys"
+driver name=ptsl perms="* 0666 root sys"
+$(sparc_ONLY)driver name=ramdisk alias=SUNW,ramdisk perms="* 0600 root sys" \
+    perms="ctl 0644 root sys"
+$(i386_ONLY)driver name=ramdisk perms="* 0600 root sys" \
+    perms="ctl 0644 root sys"
+driver name=random perms="* 0644 root sys" policy=write_priv_set=sys_devices
+driver name=rts perms="rts 0666 root sys"
+driver name=sad perms="admin 0666 root sys" perms="user 0666 root sys"
+driver name=scsi_vhci class=scsi-self-identifying perms="* 0666 root sys" \
+    policy="devctl write_priv_set=sys_devices"
+$(sparc_ONLY)driver name=sd perms="* 0640 root sys" \
+    alias=ide-cdrom \
+    alias=scsiclass,00 \
+    alias=scsiclass,05
+$(i386_ONLY)driver name=sd perms="* 0640 root sys" \
+    alias=scsiclass,00 \
+    alias=scsiclass,05
+driver name=sgen perms="* 0600 root sys" \
+    alias=scsa,08.bfcp \
+    alias=scsa,08.bvhci
+driver name=simnet clone_perms="simnet 0666 root sys" perms="* 0666 root sys"
+$(i386_ONLY)driver name=smbios perms="smbios 0444 root sys"
+driver name=softmac
+driver name=spdsock perms="spdsock 0666 root sys" \
+    policy="read_priv_set=sys_ip_config write_priv_set=sys_ip_config"
+driver name=st alias=scsiclass,01 perms="* 0666 root sys"
+driver name=sy perms="tty 0666 root tty"
+driver name=sysevent perms="* 0600 root sys"
+driver name=sysmsg perms="msglog 0600 root sys" perms="sysmsg 0600 root sys"
+driver name=tcp perms="tcp 0666 root sys"
+driver name=tcp6 perms="tcp6 0666 root sys"
+driver name=tl perms="* 0666 root sys" clone_perms="ticlts 0666 root sys" \
+    clone_perms="ticots 0666 root sys" clone_perms="ticotsord 0666 root sys"
+$(sparc_ONLY)driver name=ttymux alias=multiplexer
+$(i386_ONLY)driver name=tzmon
+$(sparc_ONLY)driver name=uata \
+    alias=pci1095,646 \
+    alias=pci1095,649 \
+    alias=pci1095,680 \
+    alias=pci10b9,5229 \
+    alias=pci10b9,5288 class=dada class=scsi
+$(i386_ONLY)driver name=ucode perms="* 0644 root sys"
+driver name=udp perms="udp 0666 root sys"
+driver name=udp6 perms="udp6 0666 root sys"
+$(i386_ONLY)driver name=vgatext \
+    alias=pciclass,000100 \
+    alias=pciclass,030000 \
+    alias=pciclass,030001 \
+    alias=pnpPNP,900
+driver name=vnic clone_perms="vnic 0666 root sys" perms="* 0666 root sys"
+driver name=wc perms="* 0600 root sys"
+$(i386_ONLY)file path=boot/solaris/bin/create_diskmap group=sys mode=0555
+file path=boot/solaris/bin/create_ramdisk group=sys mode=0555
+file path=boot/solaris/bin/extract_boot_filelist group=sys mode=0555
+$(i386_ONLY)file path=boot/solaris/bin/mbr group=sys mode=0555
+$(i386_ONLY)file path=boot/solaris/bin/symdef group=sys mode=0555
+$(i386_ONLY)file path=boot/solaris/bin/update_grub group=sys mode=0555
+file path=boot/solaris/filelist.ramdisk group=sys
+file path=boot/solaris/filelist.safe group=sys
+file path=etc/crypto/kcf.conf group=sys \
+    original_name=SUNWckr:etc/crypto/kcf.conf preserve=true
+file path=etc/name_to_sysnum group=sys original_name=SUNWckr:etc/name_to_sysnum \
+    preserve=renameold
+file path=etc/system group=sys original_name=SUNWckr:etc/system preserve=true
+$(i386_ONLY)file path=kernel/$(ARCH64)/genunix group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/aes group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/arcfour group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/blowfish group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/des group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/ecc group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/md4 group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/md5 group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/rsa group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/sha1 group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/sha2 group=sys mode=0755 reboot-needed=true
+file path=kernel/crypto/$(ARCH64)/swrand group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/aes group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/arcfour group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/blowfish group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/des group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/ecc group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/md4 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/md5 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/rsa group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/sha1 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/sha2 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/crypto/swrand group=sys mode=0755 \
+    reboot-needed=true
+$(sparc_ONLY)file path=kernel/dacf/$(ARCH64)/consconfig_dacf group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/dacf/$(ARCH64)/net_dacf group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/dacf/net_dacf group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/acpi_drv group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/acpi_toshiba group=sys
+file path=kernel/drv/$(ARCH64)/aggr group=sys
+file path=kernel/drv/$(ARCH64)/arp group=sys
+file path=kernel/drv/$(ARCH64)/bl group=sys
+file path=kernel/drv/$(ARCH64)/bridge group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/bscbus group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/bscv group=sys
+file path=kernel/drv/$(ARCH64)/clone group=sys
+file path=kernel/drv/$(ARCH64)/cn group=sys
+file path=kernel/drv/$(ARCH64)/conskbd group=sys
+file path=kernel/drv/$(ARCH64)/consms group=sys
+file path=kernel/drv/$(ARCH64)/cpuid group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/cpunex group=sys
+file path=kernel/drv/$(ARCH64)/crypto group=sys
+file path=kernel/drv/$(ARCH64)/cryptoadm group=sys
+$(sparc_ONLY)file path=kernel/drv/$(ARCH64)/dad group=sys
+file path=kernel/drv/$(ARCH64)/devinfo group=sys
+file path=kernel/drv/$(ARCH64)/dld group=sys
+file path=kernel/drv/$(ARCH64)/dlpistub group=sys
+file path=kernel/drv/$(ARCH64)/i8042 group=sys
+file path=kernel/drv/$(ARCH64)/icmp group=sys
+file path=kernel/drv/$(ARCH64)/icmp6 group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/intel_nb5000 group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/intel_nhm group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/intel_nhmex group=sys
+file path=kernel/drv/$(ARCH64)/ip group=sys
+file path=kernel/drv/$(ARCH64)/ip6 group=sys
+file path=kernel/drv/$(ARCH64)/ipnet group=sys
+file path=kernel/drv/$(ARCH64)/ippctl group=sys
+file path=kernel/drv/$(ARCH64)/ipsecah group=sys
+file path=kernel/drv/$(ARCH64)/ipsecesp group=sys
+file path=kernel/drv/$(ARCH64)/iptun group=sys
+file path=kernel/drv/$(ARCH64)/iwscn group=sys
+file path=kernel/drv/$(ARCH64)/kb8042 group=sys
+file path=kernel/drv/$(ARCH64)/keysock group=sys
+file path=kernel/drv/$(ARCH64)/kmdb group=sys
+file path=kernel/drv/$(ARCH64)/kssl group=sys
+file path=kernel/drv/$(ARCH64)/llc1 group=sys
+file path=kernel/drv/$(ARCH64)/lofi group=sys
+file path=kernel/drv/$(ARCH64)/log group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/mc-amd group=sys
+file path=kernel/drv/$(ARCH64)/mm group=sys
+file path=kernel/drv/$(ARCH64)/mouse8042 group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/mpt group=sys
+file path=kernel/drv/$(ARCH64)/nulldriver group=sys
+file path=kernel/drv/$(ARCH64)/openeepr group=sys
+file path=kernel/drv/$(ARCH64)/options group=sys
+file path=kernel/drv/$(ARCH64)/pci_pci group=sys
+file path=kernel/drv/$(ARCH64)/pcieb group=sys
+$(sparc_ONLY)file path=kernel/drv/$(ARCH64)/pcieb_bcm group=sys
+file path=kernel/drv/$(ARCH64)/physmem group=sys
+file path=kernel/drv/$(ARCH64)/poll group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/power group=sys
+file path=kernel/drv/$(ARCH64)/pseudo group=sys
+file path=kernel/drv/$(ARCH64)/ptc group=sys
+file path=kernel/drv/$(ARCH64)/ptsl group=sys
+file path=kernel/drv/$(ARCH64)/ramdisk group=sys
+file path=kernel/drv/$(ARCH64)/random group=sys
+file path=kernel/drv/$(ARCH64)/rts group=sys
+file path=kernel/drv/$(ARCH64)/sad group=sys
+file path=kernel/drv/$(ARCH64)/scsi_vhci group=sys
+file path=kernel/drv/$(ARCH64)/sd group=sys
+file path=kernel/drv/$(ARCH64)/sgen group=sys
+file path=kernel/drv/$(ARCH64)/simnet group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/smbios group=sys
+file path=kernel/drv/$(ARCH64)/softmac group=sys
+file path=kernel/drv/$(ARCH64)/spdsock group=sys
+file path=kernel/drv/$(ARCH64)/st group=sys
+file path=kernel/drv/$(ARCH64)/sy group=sys
+file path=kernel/drv/$(ARCH64)/sysevent group=sys
+file path=kernel/drv/$(ARCH64)/sysmsg group=sys
+file path=kernel/drv/$(ARCH64)/tcp group=sys
+file path=kernel/drv/$(ARCH64)/tcp6 group=sys
+file path=kernel/drv/$(ARCH64)/tl group=sys
+$(sparc_ONLY)file path=kernel/drv/$(ARCH64)/ttymux group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/tzmon group=sys
+$(sparc_ONLY)file path=kernel/drv/$(ARCH64)/uata group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/ucode group=sys
+file path=kernel/drv/$(ARCH64)/udp group=sys
+file path=kernel/drv/$(ARCH64)/udp6 group=sys
+$(i386_ONLY)file path=kernel/drv/$(ARCH64)/vgatext group=sys
+file path=kernel/drv/$(ARCH64)/vnic group=sys
+file path=kernel/drv/$(ARCH64)/wc group=sys
+$(i386_ONLY)file path=kernel/drv/acpi_drv group=sys
+$(i386_ONLY)file path=kernel/drv/acpi_drv.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/acpi_toshiba group=sys
+$(i386_ONLY)file path=kernel/drv/aggr group=sys
+file path=kernel/drv/aggr.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/arp group=sys
+file path=kernel/drv/arp.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/bl group=sys
+file path=kernel/drv/bl.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/bridge group=sys
+file path=kernel/drv/bridge.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/bscbus group=sys
+$(i386_ONLY)file path=kernel/drv/bscbus.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/bscv group=sys
+$(i386_ONLY)file path=kernel/drv/bscv.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/clone group=sys
+file path=kernel/drv/clone.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/cn group=sys
+file path=kernel/drv/cn.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/conskbd group=sys
+file path=kernel/drv/conskbd.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/consms group=sys
+file path=kernel/drv/consms.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/cpuid group=sys
+file path=kernel/drv/cpuid.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/cpunex group=sys
+$(i386_ONLY)file path=kernel/drv/crypto group=sys
+file path=kernel/drv/crypto.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/cryptoadm group=sys
+file path=kernel/drv/cryptoadm.conf group=sys reboot-needed=false
+$(sparc_ONLY)file path=kernel/drv/dad.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/devinfo group=sys
+file path=kernel/drv/devinfo.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/dld group=sys
+file path=kernel/drv/dld.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/dlpistub group=sys
+file path=kernel/drv/dlpistub.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/i8042 group=sys
+$(i386_ONLY)file path=kernel/drv/icmp group=sys
+file path=kernel/drv/icmp.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/icmp6 group=sys
+file path=kernel/drv/icmp6.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/intel_nb5000 group=sys
+$(i386_ONLY)file path=kernel/drv/intel_nb5000.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/intel_nhm group=sys
+$(i386_ONLY)file path=kernel/drv/intel_nhm.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/intel_nhmex group=sys
+$(i386_ONLY)file path=kernel/drv/intel_nhmex.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ip group=sys
+file path=kernel/drv/ip.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ip6 group=sys
+file path=kernel/drv/ip6.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ipnet group=sys
+file path=kernel/drv/ipnet.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ippctl group=sys
+file path=kernel/drv/ippctl.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ipsecah group=sys
+file path=kernel/drv/ipsecah.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ipsecesp group=sys
+file path=kernel/drv/ipsecesp.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/iptun group=sys
+file path=kernel/drv/iptun.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/iwscn group=sys
+file path=kernel/drv/iwscn.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/kb8042 group=sys
+$(i386_ONLY)file path=kernel/drv/keysock group=sys
+file path=kernel/drv/keysock.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/kmdb group=sys
+file path=kernel/drv/kmdb.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/kssl group=sys
+file path=kernel/drv/kssl.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/llc1 group=sys
+file path=kernel/drv/llc1.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/lofi group=sys
+file path=kernel/drv/lofi.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/log group=sys
+file path=kernel/drv/log.conf group=sys \
+    original_name=SUNWckr:kernel/drv/log.conf preserve=true reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/mc-amd group=sys
+$(i386_ONLY)file path=kernel/drv/mc-amd.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/mm group=sys
+file path=kernel/drv/mm.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/mouse8042 group=sys
+$(i386_ONLY)file path=kernel/drv/mpt group=sys
+$(i386_ONLY)file path=kernel/drv/mpt.conf group=sys \
+    original_name=SUNWckr:kernel/drv/mpt.conf preserve=true reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/nulldriver group=sys
+$(i386_ONLY)file path=kernel/drv/openeepr group=sys
+file path=kernel/drv/openeepr.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/options group=sys
+file path=kernel/drv/options.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/pci_pci group=sys
+$(i386_ONLY)file path=kernel/drv/pcieb group=sys
+file path=kernel/drv/pcieb.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/physmem group=sys
+file path=kernel/drv/physmem.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/poll group=sys
+file path=kernel/drv/poll.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/power group=sys
+$(i386_ONLY)file path=kernel/drv/power.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/pseudo group=sys
+file path=kernel/drv/pseudo.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ptc group=sys
+file path=kernel/drv/ptc.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ptsl group=sys
+file path=kernel/drv/ptsl.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ramdisk group=sys
+file path=kernel/drv/ramdisk.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/random group=sys
+file path=kernel/drv/random.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/rts group=sys
+file path=kernel/drv/rts.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/sad group=sys
+file path=kernel/drv/sad.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/scsi_vhci group=sys
+file path=kernel/drv/scsi_vhci.conf group=sys \
+    original_name=SUNWckr:kernel/drv/scsi_vhci.conf preserve=true \
+    reboot-needed=false
+$(sparc_ONLY)file path=kernel/drv/sd.conf group=sys \
+    original_name=SUNWckr:kernel/drv/sd.conf preserve=true reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/sgen group=sys
+file path=kernel/drv/sgen.conf group=sys \
+    original_name=SUNWckr:kernel/drv/sgen.conf preserve=true \
+    reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/simnet group=sys
+file path=kernel/drv/simnet.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/smbios group=sys
+$(i386_ONLY)file path=kernel/drv/smbios.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/softmac group=sys
+file path=kernel/drv/softmac.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/spdsock group=sys
+file path=kernel/drv/spdsock.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/st group=sys
+file path=kernel/drv/st.conf group=sys original_name=SUNWckr:kernel/drv/st.conf \
+    preserve=true reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/sy group=sys
+file path=kernel/drv/sy.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/sysevent group=sys
+file path=kernel/drv/sysevent.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/sysmsg group=sys
+file path=kernel/drv/sysmsg.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/tcp group=sys
+file path=kernel/drv/tcp.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/tcp6 group=sys
+file path=kernel/drv/tcp6.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/tl group=sys
+file path=kernel/drv/tl.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/tzmon group=sys
+$(i386_ONLY)file path=kernel/drv/tzmon.conf group=sys reboot-needed=false
+$(sparc_ONLY)file path=kernel/drv/uata.conf group=sys \
+    original_name=SUNWckr:kernel/drv/uata.conf preserve=true \
+    reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/ucode group=sys
+$(i386_ONLY)file path=kernel/drv/ucode.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/udp group=sys
+file path=kernel/drv/udp.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/udp6 group=sys
+file path=kernel/drv/udp6.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/vgatext group=sys
+$(i386_ONLY)file path=kernel/drv/vnic group=sys
+file path=kernel/drv/vnic.conf group=sys reboot-needed=false
+$(i386_ONLY)file path=kernel/drv/wc group=sys
+file path=kernel/drv/wc.conf group=sys reboot-needed=false
+$(sparc_ONLY)file path=kernel/exec/$(ARCH64)/aoutexec group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/exec/$(ARCH64)/elfexec group=sys mode=0755 reboot-needed=true
+file path=kernel/exec/$(ARCH64)/intpexec group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/exec/elfexec group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/exec/intpexec group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/fs/$(ARCH64)/autofs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/cachefs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/ctfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/dcfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/dev group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/devfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/fifofs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/hsfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/lofs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/mntfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/namefs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/objfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/procfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/sharefs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/sockfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/specfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/tmpfs group=sys mode=0755 reboot-needed=true
+file path=kernel/fs/$(ARCH64)/ufs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/autofs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/cachefs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/ctfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/dcfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/dev group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/devfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/fifofs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/hsfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/lofs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/mntfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/namefs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/objfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/procfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/sharefs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/sockfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/specfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/tmpfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/fs/ufs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/genunix group=sys mode=0755 reboot-needed=true
+file path=kernel/ipp/$(ARCH64)/ipgpc group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/ipp/ipgpc group=sys mode=0755 reboot-needed=true
+file path=kernel/kiconv/$(ARCH64)/kiconv_emea group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/kiconv/$(ARCH64)/kiconv_ja group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/kiconv/$(ARCH64)/kiconv_ko group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/kiconv/$(ARCH64)/kiconv_sc group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/kiconv/$(ARCH64)/kiconv_tc group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/kiconv/kiconv_emea group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/kiconv/kiconv_ja group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/kiconv/kiconv_ko group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/kiconv/kiconv_sc group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/kiconv/kiconv_tc group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_6to4 group=sys mode=0755 reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_ether group=sys mode=0755 reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_ib group=sys mode=0755 reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_ipv4 group=sys mode=0755 reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_ipv6 group=sys mode=0755 reboot-needed=true
+file path=kernel/mac/$(ARCH64)/mac_wifi group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_6to4 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_ether group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_ib group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_ipv4 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_ipv6 group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/mac/mac_wifi group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/acpica group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/agpmaster group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/bignum group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/bootdev group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/busra group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/cardbus group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/cmlb group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/consconfig group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/ctf group=sys mode=0755 reboot-needed=true
+$(sparc_ONLY)file path=kernel/misc/$(ARCH64)/dada group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/dls group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/fssnap_if group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/gld group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/hook group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/hpcsvc group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/idmap group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/iommulib group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/ipc group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/kbtrans group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/kcf group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/kmdbmod group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/ksocket group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/mac group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/mii group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/net80211 group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/neti group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/pci_autoconfig group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/pcicfg group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/pcie group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/pcihp group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/pcmcia group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/rpcsec group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/$(ARCH64)/sata group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/scsi group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/strplumb group=sys mode=0755 reboot-needed=true
+$(sparc_ONLY)file path=kernel/misc/$(ARCH64)/swapgeneric group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/$(ARCH64)/tem group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/$(ARCH64)/tlimod group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/acpica group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/agpmaster group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/bignum group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/bootdev group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/busra group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/cardbus group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/cmlb group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/consconfig group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/ctf group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/dls group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/fssnap_if group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/gld group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/hook group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/hpcsvc group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/idmap group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/iommulib group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/ipc group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/kbtrans group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/kcf group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/kmdbmod group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/ksocket group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/mac group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/mii group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/net80211 group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/neti group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/pci_autoconfig group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/pcicfg group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/pcie group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/pcihp group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/pcmcia group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/rpcsec group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/sata group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi group=sys mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_asym_emc group=sys \
+    mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_asym_lsi group=sys \
+    mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_asym_sun group=sys \
+    mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_sym group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_sym_emc group=sys \
+    mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_sym_hds group=sys \
+    mode=0755 reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_tape group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_tpgs group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/misc/scsi_vhci/$(ARCH64)/scsi_vhci_f_tpgs_tape group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_asym_emc group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_asym_lsi group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_asym_sun group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_sym group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_sym_emc group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_sym_hds group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_tape group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_tpgs group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/scsi_vhci/scsi_vhci_f_tpgs_tape group=sys \
+    mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/strplumb group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/tem group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/misc/tlimod group=sys mode=0755 reboot-needed=true
+file path=kernel/sched/$(ARCH64)/SDC group=sys mode=0755 reboot-needed=true
+file path=kernel/sched/$(ARCH64)/TS group=sys mode=0755 reboot-needed=true
+file path=kernel/sched/$(ARCH64)/TS_DPTBL group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sched/SDC group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sched/TS group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sched/TS_DPTBL group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/socketmod/$(ARCH64)/socksctp group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/socketmod/$(ARCH64)/trill group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/socketmod/socksctp group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/socketmod/trill group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/bufmod group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/connld group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/dedump group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/drcompat group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/ldterm group=sys mode=0755 reboot-needed=true
+$(sparc_ONLY)file path=kernel/strmod/$(ARCH64)/ms group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/pckt group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/pfmod group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/pipemod group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/ptem group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/redirmod group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/rpcmod group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/timod group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/tirdwr group=sys mode=0755 reboot-needed=true
+file path=kernel/strmod/$(ARCH64)/ttcompat group=sys mode=0755 \
+    reboot-needed=true
+$(sparc_ONLY)file path=kernel/strmod/$(ARCH64)/vuid3ps2 group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/bufmod group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/connld group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/dedump group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/drcompat group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/ldterm group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/pckt group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/pfmod group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/pipemod group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/ptem group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/redirmod group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/rpcmod group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/timod group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/tirdwr group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/strmod/ttcompat group=sys mode=0755 \
+    reboot-needed=true
+file path=kernel/sys/$(ARCH64)/c2audit group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/doorfs group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/inst_sync group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/kaio group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/msgsys group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/pipe group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/portfs group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/pset group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/semsys group=sys mode=0755 reboot-needed=true
+file path=kernel/sys/$(ARCH64)/shmsys group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/c2audit group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/doorfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/inst_sync group=sys mode=0755 \
+    reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/kaio group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/msgsys group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/pipe group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/portfs group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/pset group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/semsys group=sys mode=0755 reboot-needed=true
+$(i386_ONLY)file path=kernel/sys/shmsys group=sys mode=0755 reboot-needed=true
+file path=lib/svc/method/svc-dumpadm mode=0555
+file path=lib/svc/method/svc-intrd mode=0555
+file path=lib/svc/method/svc-scheduler mode=0555
+file path=lib/svc/manifest/system/dumpadm.xml group=sys mode=0444
+file path=lib/svc/manifest/system/fmd.xml group=sys mode=0444
+file path=lib/svc/manifest/system/intrd.xml group=sys mode=0444
+file path=lib/svc/manifest/system/scheduler.xml group=sys mode=0444
+hardlink path=kernel/misc/$(ARCH64)/md5 \
+    target=../../../kernel/crypto/$(ARCH64)/md5
+hardlink path=kernel/misc/$(ARCH64)/sha1 \
+    target=../../../kernel/crypto/$(ARCH64)/sha1
+hardlink path=kernel/misc/$(ARCH64)/sha2 \
+    target=../../../kernel/crypto/$(ARCH64)/sha2
+$(i386_ONLY)hardlink path=kernel/misc/md5 target=../../kernel/crypto/md5
+$(i386_ONLY)hardlink path=kernel/misc/sha1 target=../../kernel/crypto/sha1
+$(i386_ONLY)hardlink path=kernel/misc/sha2 target=../../kernel/crypto/sha2
+hardlink path=kernel/socketmod/$(ARCH64)/icmp \
+    target=../../../kernel/drv/$(ARCH64)/icmp
+hardlink path=kernel/socketmod/$(ARCH64)/rts \
+    target=../../../kernel/drv/$(ARCH64)/rts
+hardlink path=kernel/socketmod/$(ARCH64)/tcp \
+    target=../../../kernel/drv/$(ARCH64)/tcp
+hardlink path=kernel/socketmod/$(ARCH64)/udp \
+    target=../../../kernel/drv/$(ARCH64)/udp
+$(i386_ONLY)hardlink path=kernel/socketmod/icmp target=../../kernel/drv/icmp
+$(i386_ONLY)hardlink path=kernel/socketmod/rts target=../../kernel/drv/rts
+$(i386_ONLY)hardlink path=kernel/socketmod/tcp target=../../kernel/drv/tcp
+$(i386_ONLY)hardlink path=kernel/socketmod/udp target=../../kernel/drv/udp
+hardlink path=kernel/strmod/$(ARCH64)/arp \
+    target=../../../kernel/drv/$(ARCH64)/arp
+hardlink path=kernel/strmod/$(ARCH64)/icmp \
+    target=../../../kernel/drv/$(ARCH64)/icmp
+hardlink path=kernel/strmod/$(ARCH64)/ip target=../../../kernel/drv/$(ARCH64)/ip
+hardlink path=kernel/strmod/$(ARCH64)/ipsecah \
+    target=../../../kernel/drv/$(ARCH64)/ipsecah
+hardlink path=kernel/strmod/$(ARCH64)/ipsecesp \
+    target=../../../kernel/drv/$(ARCH64)/ipsecesp
+hardlink path=kernel/strmod/$(ARCH64)/keysock \
+    target=../../../kernel/drv/$(ARCH64)/keysock
+hardlink path=kernel/strmod/$(ARCH64)/tcp \
+    target=../../../kernel/drv/$(ARCH64)/tcp
+hardlink path=kernel/strmod/$(ARCH64)/udp \
+    target=../../../kernel/drv/$(ARCH64)/udp
+$(i386_ONLY)hardlink path=kernel/strmod/arp target=../../kernel/drv/arp
+$(i386_ONLY)hardlink path=kernel/strmod/icmp target=../../kernel/drv/icmp
+$(i386_ONLY)hardlink path=kernel/strmod/ip target=../../kernel/drv/ip
+$(i386_ONLY)hardlink path=kernel/strmod/ipsecah target=../../kernel/drv/ipsecah
+$(i386_ONLY)hardlink path=kernel/strmod/ipsecesp \
+    target=../../kernel/drv/ipsecesp
+$(i386_ONLY)hardlink path=kernel/strmod/keysock target=../../kernel/drv/keysock
+$(i386_ONLY)hardlink path=kernel/strmod/tcp target=../../kernel/drv/tcp
+$(i386_ONLY)hardlink path=kernel/strmod/udp target=../../kernel/drv/udp
+hardlink path=kernel/sys/$(ARCH64)/autofs \
+    target=../../../kernel/fs/$(ARCH64)/autofs
+hardlink path=kernel/sys/$(ARCH64)/rpcmod \
+    target=../../../kernel/strmod/$(ARCH64)/rpcmod
+$(i386_ONLY)hardlink path=kernel/sys/autofs target=../../kernel/fs/autofs
+$(i386_ONLY)hardlink path=kernel/sys/rpcmod target=../../kernel/strmod/rpcmod
+legacy pkg=SUNWckr arch=$(ARCH) category=system \
+    desc="core kernel software for a specific instruction-set architecture" \
+    hotline="Please contact your local service provider" \
+    name="Core Solaris Kernel (Root)" vendor="Sun Microsystems, Inc." \
+    version=11.11,REV=2009.11.11
+license common/crypto/THIRDPARTYLICENSE.cryptogams \
+    license=common/crypto/THIRDPARTYLICENSE.cryptogams
+license common/crypto/aes/amd64/THIRDPARTYLICENSE.gladman \
+    license=common/crypto/aes/amd64/THIRDPARTYLICENSE.gladman
+license common/crypto/aes/amd64/THIRDPARTYLICENSE.openssl \
+    license=common/crypto/aes/amd64/THIRDPARTYLICENSE.openssl
+license common/crypto/ecc/THIRDPARTYLICENSE \
+    license=common/crypto/ecc/THIRDPARTYLICENSE
+license common/crypto/md5/amd64/THIRDPARTYLICENSE \
+    license=common/crypto/md5/amd64/THIRDPARTYLICENSE
+license common/mpi/THIRDPARTYLICENSE license=common/mpi/THIRDPARTYLICENSE
+license cr_Sun license=cr_Sun
+license lic_CDDL license=lic_CDDL
+license uts/common/inet/ip/THIRDPARTYLICENSE.rts \
+    license=uts/common/inet/ip/THIRDPARTYLICENSE.rts
+license uts/common/inet/tcp/THIRDPARTYLICENSE \
+    license=uts/common/inet/tcp/THIRDPARTYLICENSE
+license uts/common/io/THIRDPARTYLICENSE.etheraddr \
+    license=uts/common/io/THIRDPARTYLICENSE.etheraddr
+license uts/common/sys/THIRDPARTYLICENSE.icu \
+    license=uts/common/sys/THIRDPARTYLICENSE.icu
+license uts/common/sys/THIRDPARTYLICENSE.unicode \
+    license=uts/common/sys/THIRDPARTYLICENSE.unicode
+license uts/intel/io/acpica/THIRDPARTYLICENSE \
+    license=uts/intel/io/acpica/THIRDPARTYLICENSE
+$(i386_ONLY)link path=boot/solaris/bin/root_archive \
+    target=../../../usr/sbin/root_archive
+link path=dev/dld target=../devices/pseudo/dld@0:ctl
+link path=kernel/misc/$(ARCH64)/des target=../../../kernel/crypto/$(ARCH64)/des
+$(i386_ONLY)link path=kernel/misc/des target=../../kernel/crypto/des
+$(USE_INTERNAL_CRYPTO)depend fmri=driver/crypto/dprov type=require
+"""
+
+        def setUp(self):
+                pkg5unittest.CliTestCase.setUp(self)
+
+                f = file(os.path.join(self.test_root, "source_file"), "wb")
+                f.write(self.pkgcontents)
+                f.close()
+
+        def pkgfmt(self, args, exit=0):
+                cmd="%s/usr/bin/pkgfmt %s" % (pkg5unittest.g_proto_area, args)
+                self.cmdline_run(cmd, exit=exit)
+
+        def test_1(self):
+                """ display that pkgfmt makes no diff in manifest"""
+                source_file = os.path.join(self.test_root, "source_file")
+                mod_file = os.path.join(self.test_root, "mod_file")
+
+                # remove backslashes in place
+                self.pkgfmt("-u < %s > %s" % (source_file, mod_file))
+                # sort into alternate order and format
+                self.cmdline_run("/usr/bin/sort -o %s %s" % (mod_file, mod_file)) 
+                self.pkgfmt("%s" % mod_file)
+                self.pkgfmt("%s" % source_file)
+                self.cmdline_run("/usr/bin/diff %s %s" % ( source_file, mod_file))
+
--- a/src/tests/cli/t_pkgmogrify.py	Tue May 18 10:51:50 2010 -0700
+++ b/src/tests/cli/t_pkgmogrify.py	Tue May 18 17:46:27 2010 -0700
@@ -19,9 +19,9 @@
 #
 # CDDL HEADER END
 #
-
-# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
+#
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+#
 
 import testutils
 if __name__ == "__main__":
@@ -50,9 +50,9 @@
 depend [email protected]$(BUILDID) type=require
 $(i386_ONLY)depend [email protected]$(BUILDID) type=require
 file NOHASH elfarch=i386 elfbits=32 group=bin mode=0755 \
- owner=root path=usr/X11/bin/xkbprint
+owner=root path=usr/X11/bin/xkbprint
 file NOHASH group=bin mode=0755 owner=root path=usr/X11/bin/Xserver
-file group=bin mode=0755 owner=root path=usr/X11/bin/bdftopcf
+file NOHASH group=bin mode=0755 owner=root path=usr/X11/bin/bdftopcf
 link path=usr/X11/lib/libXdmcp.so target=./libXdmcp.so.6
 link path=usr/X11/lib/libXevie.so target=./libXevie.so.1
 link path=usr/X11/lib/libXext.so target=./libXext.so.0
@@ -223,6 +223,15 @@
                         "grep -w '3'" % (print_file, output_file,
                         self.transform_files[10], self.transform_files[11],
                         source_file, print_file))
-
+        def test_10(self):
+                """test to make sure we can handle leading macros, preserve comments"""
+                input_file = os.path.join(self.test_root, "source_file")
+                output_file = os.path.join(self.test_root, "output_file")
+                self.pkgmogrify("-O %s %s; diff %s %s" % (
+                    output_file,
+                    input_file,
+                    input_file,
+                    output_file))
+                
 if __name__ == "__main__":
         unittest.main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/util/publish/pkgfmt.py	Tue May 18 17:46:27 2010 -0700
@@ -0,0 +1,358 @@
+#!/usr/bin/python2.6
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+
+#
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+#
+
+
+# Format a manifest according to the following rules:
+#
+# 1) File leading comments are left alone
+# 2) All other comments stay w/ the first non-comment line that follows
+#    them
+# 3) Actions appear grouped by type, ignoring macros
+# 4) Actions are limited to 80 chars; continuation lines are accepted
+#    and emitted
+# 5) varient & facet tags appear at the end of actions
+# 6) multi-valued tags appear at the end aside from the above
+# 7) key attribute tags come first
+
+import getopt
+import gettext
+import os
+import sys
+import shlex
+import tempfile
+import traceback
+
+import pkg
+import pkg.actions
+from pkg.misc import emsg, PipeError
+
+opt_unwrap = False
+opt_check = False
+
+def usage(errmsg="", exitcode=2):
+        """Emit a usage message and optionally prefix it with a more specific
+        error message.  Causes program to exit."""
+
+        if errmsg:
+                error(errmsg)
+        
+        print >> sys.stderr, _("""\
+Usage:
+        pkgfmt [-cu] [file1] ... """)
+
+        sys.exit(exitcode)
+
+def error(text, exitcode=1):
+        """Emit an error message prefixed by the command name """
+
+        # If we get passed something like an Exception, we can convert
+        # it down to a string.
+        text = str(text)
+
+        # If the message starts with whitespace, assume that it should come
+        # *before* the command-name prefix.
+        text_nows = text.lstrip()
+        ws = text[:len(text) - len(text_nows)]
+
+        # This has to be a constant value as we can't reliably get our actual
+        # program name on all platforms.
+        emsg(ws + "pkgfmt: " + text_nows)
+
+        if exitcode != None:
+                sys.exit(exitcode)
+
+def read_line(f):
+        """Generates the lines in the file as tuples containing 
+        (action, prepended macro, list of prepended comment lines);
+        handles continuation lines, transforms, etc."""
+
+        accumulate = ""
+        noncomment_line_seen = False
+        comments = []
+
+        for line in f:
+                line = line.strip()
+                if line.endswith("\\"):
+                        accumulate += line[:-1]
+                        continue
+
+                elif accumulate:
+                        line = accumulate + line
+                        accumulate = ""
+
+                if not line or line[0] == "#":
+                        comments.append(line)
+                        continue
+
+                if not noncomment_line_seen:
+                        noncomment_line_seen = True
+                        yield None, "", comments
+                        comments = []
+
+                if line.startswith("$("):
+                        cp = line.index(")")
+                        macro = line[0:cp+1]
+                        actstr = line[cp + 1:]
+                else:
+                        macro = ""
+                        actstr = line
+
+                if actstr[0] == "<" and actstr[-1] == ">":
+                        yield None, macro + actstr, comments
+                        comments = []
+                        macro = ""
+                        continue
+
+                try:
+                        act = pkg.actions.fromstr(actstr)
+                except (pkg.actions.MalformedActionError,
+                    pkg.actions.UnknownActionError,
+                    pkg.actions.InvalidActionError), e:
+                        # cannot convert; treat as special macro
+                        yield None, actstr, comments
+                        continue
+                yield act, macro, comments
+
+                comments = []
+
+def cmplines(a, b):
+        """Compare two line tuples for sorting"""
+        # we know that all lines that reach here have actions
+        # make set actions first
+        # depend actions last
+        # rest in alpha order
+
+        def typeord(a):
+                if a.name == "set":
+                        return 1
+                if a.name == "depend":
+                        return 3
+                return 2
+        c = cmp(typeord(a[0]) , typeord(b[0]))
+        if c:
+                return c
+        c = cmp(a[0].name, b[0].name)
+        if c:
+                return c
+
+        if a[0].name == "set" and a[0].attrs["name"] == "pkg.fmri":
+                return -1
+
+        if b[0].name == "set" and b[0].attrs["name"] == "pkg.fmri":
+                return 1
+
+
+        if a[0].name == "set" and a[0].attrs["name"].startswith("pkg.") and \
+            not b[0].attrs["name"].startswith("pkg."):
+                return -1
+
+        if b[0].name == "set" and b[0].attrs["name"].startswith("pkg.") and \
+            not a[0].attrs["name"].startswith("pkg."):
+                return 1
+
+
+        key_attr = a[0].key_attr
+        if key_attr:
+                c = cmp(a[0].attrs[key_attr], b[0].attrs[key_attr])
+                if c:
+                        return c
+
+        return cmp(str(a[0]), str(b[0]))
+
+
+def write_line(line, fileobj):
+        """Write out a manifest line"""
+        # write out any comments w/o changes
+
+        comments = "\n".join(line[2])
+        act = line[0]
+        out = line[1] + act.name
+
+        if hasattr(act, "hash") and act.hash != "NOHASH":
+                out += " " + act.hash
+
+        # handle quoting of attribute values
+        def q(s):
+                if " " in s or s == "":
+                        return '"%s"' % s
+                else:
+                        return s
+        # high order bits in sorting
+        def kvord(a):
+                if a[0].startswith("variant."):
+                        return 4
+                if a[0].startswith("facet."):
+                        return 3
+                if isinstance(a[1], list):
+                        return 2
+                # note closure hack...
+                if act.key_attr != a[0]:
+                        return 1
+                return 0
+        # actual cmp function
+        def cmpkv(a, b):
+                c = cmp(kvord(a), kvord(b))
+                if c:
+                        return c
+                return cmp(a[0], b[0])
+
+        def grow(a, b, force_nl=False):
+                if opt_unwrap or not force_nl:
+                        lastnl = a.rfind("\n")
+                        if lastnl == -1:
+                                lastnl = 0
+                        if opt_unwrap or (len(a) - lastnl + len(b) < 78):
+                                return a + " " + b
+                return a + " \\\n    " + b
+
+        for k, v in sorted(act.attrs.iteritems(), cmp=cmpkv):
+                if isinstance(v, list) or isinstance(v, set):
+                        for lmt in sorted(v):
+                                out = grow(out, "%s=%s" % (k, q(lmt)),
+                                           force_nl=(k=="alias"))
+                else:
+                        out = grow(out, k + "=" + q(v))
+        if comments:
+                print >> fileobj, comments
+        print >> fileobj, out
+
+
+def main_func():
+        # /usr/lib/locale is OpenSolaris-specific.
+        gettext.install("pkgdiff", "/usr/lib/locale")
+        global opt_unwrap
+        global opt_check
+
+        ret = 0
+
+        try:
+                opts, pargs = getopt.getopt(sys.argv[1:], "cu", ["help"])
+                for opt, arg in opts:
+                        if opt == "-u":
+                                opt_unwrap = True
+                        if opt == "-c":
+                                opt_check = True
+                        if opt in ("--help", "-?"):
+                                usage(exitcode=0)
+
+        except getopt.GetoptError, e:
+                usage(_("illegal global option -- %s") % e.opt)
+
+        flist = pargs
+        if not flist:
+                fmt_file(sys.stdin, sys.stdout)
+                return ret
+
+        for fname in flist:
+                tname = None
+                try:
+                        # force path to be absolute; gives better diagnostics if
+                        # something goes wrong.
+                        path = os.path.abspath(fname)
+                        pathdir = os.path.dirname(path)
+                        tfd, tname = \
+                             tempfile.mkstemp(dir=pathdir)
+
+                        t = os.fdopen(tfd, "w")
+                        f = file(fname)
+
+                        fmt_file(f, t)
+                        f.close()
+                        t.close()
+
+                        if opt_check:
+                                f1 = open(fname, "r")
+                                whole_f1 = f1.read()
+                                f2 = open(tname, "r")
+                                whole_f2 = f2.read()
+                                if whole_f1 == whole_f2:
+                                        ret = 0
+                                else:
+                                        error("%s: not in pkgfmt form" % fname,
+                                             exitcode=None)
+                                        ret = 1
+                                os.unlink(tname)
+                        else:
+                                try:
+                                        os.rename(tname, fname)
+                                except EnvironmentError, e:
+                                        if os.path.exists(tname):
+                                                os.unlink(tname)
+                                        error(str(e), exitcode=1)
+                except (EnvironmentError, IOError), e:
+                        try:
+                                os.unlink(tname)
+                        except:
+                                pass
+                        error(str(e), exitcode=1)
+                except BaseException:
+                        try:
+                                os.unlink(tname)
+                        except:
+                                pass
+                        raise
+
+
+        return ret
+
+def fmt_file(in_file, out_file):
+        lines = []
+        for tp in read_line(in_file):
+                if tp[0] is None:
+                        for l in tp[2]: # print any leading comment
+                                        # or transforms or unparseables
+                                print >> out_file, l
+                        if tp[1]:
+                                print >> out_file, tp[1]
+                else:
+                        lines.append(tp)
+
+        lines.sort(cmp=cmplines)
+
+        for l in lines:
+                write_line(l, out_file)
+
+
+if __name__ == "__main__":
+        try:
+                __ret = main_func()
+        except (PipeError, KeyboardInterrupt):
+                # We don't want to display any messages here to prevent
+                # possible further broken pipe (EPIPE) errors.
+                __ret = 1
+        except SystemExit, _e:
+                raise _e
+        except:
+                traceback.print_exc()
+                error(
+                    _("\n\nThis is an internal error.  Please let the "
+                    "developers know about this\nproblem by filing a bug at "
+                    "http://defect.opensolaris.org and including the\nabove "
+                    "traceback and this message.  The version of pkg(5) is "
+                    "'%s'.") % pkg.VERSION)
+                __ret = 99
+
+        sys.exit(__ret)
+
--- a/src/util/publish/pkgmogrify.py	Tue May 18 10:51:50 2010 -0700
+++ b/src/util/publish/pkgmogrify.py	Tue May 18 17:46:27 2010 -0700
@@ -18,9 +18,9 @@
 # information: Portions Copyright [yyyy] [name of copyright owner]
 #
 # CDDL HEADER END
+
 #
-# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
 #
 
 import getopt
@@ -29,6 +29,7 @@
 import re
 import shlex
 import sys
+import traceback
 import warnings
 
 import pkg.actions
@@ -50,7 +51,7 @@
                 print >> sys.stderr, "pkgmogrify: %s" % errmsg
         
         print _(
-            "/usr/bin/pkgmogrify [-v] [-I includedir ...] [-D macro=value ...] "
+            "/usr/bin/pkgmogrify [-vi] [-I includedir ...] [-D macro=value ...] "
             "[-O outputfile] [-P printfile] [inputfile ...]")
         sys.exit(exitcode)
 
@@ -318,9 +319,9 @@
                         break # no more substitutable tokens
         return s
 
-def read_file(tp):
+def read_file(tp, ignoreincludes):
         """ return the lines in the file as a list of 
-        tuples containing (line, filename line number);
+        tuples containing (line, filename, line number);
         handle continuation and <include "path">"""
         ret = []
         filename, f = tp
@@ -329,6 +330,9 @@
         for lineno, line in enumerate(f):
                 lineno = lineno + 1 # number from 1
                 line = line.strip()
+                if not line: # preserve blanks
+                        ret.append((line, filename, lineno))
+                        continue
                 if line.endswith("\\"):
                         accumulate += line[0:-1]
                         continue
@@ -341,17 +345,21 @@
 
                 line = line.strip()
 
-                if not line or line[0] == '#':
+                if not line:
                         continue
 
                 try:
                         if line.startswith("<") and line.endswith(">"):
-                                line = line[1:-1]
-                                if line.startswith("include"):
-                                        line = line[7:].strip()
-                                        line = line.strip('"')
-                                        ret.extend(read_file(searching_open(line)))
-                                elif line.startswith("transform"):
+                                if line.startswith("<include"):
+                                        if not ignoreincludes:
+                                                line = line[1:-1]
+                                                line = line[7:].strip()
+                                                line = line.strip('"')
+                                                ret.extend(read_file(searching_open(line), ignoreincludes))
+                                        else:
+                                                ret.append((line, filename, lineno))     
+                                elif line.startswith("<transform"):
+                                        line = line[1:-1]
                                         add_transform(line, filename, lineno)
                                 else:
                                         raise RuntimeError, _("unknown command %s") % (
@@ -380,9 +388,10 @@
         outfilename = None
         printfilename = None
         verbose = False
+        ignoreincludes = False
 
         try:
-                opts, pargs = getopt.getopt(sys.argv[1:], "vD:I:O:P:?", ["help"])
+                opts, pargs = getopt.getopt(sys.argv[1:], "ivD:I:O:P:?", ["help"])
                 for opt, arg in opts:
                         if opt == "-D":
                                 if "=" not in arg:
@@ -391,6 +400,8 @@
                                 if a[0] == "":
                                         error(_("macros must be of form name=value"))
                                 macros.update([("$(%s)" % a[0], a[1])])
+                        if opt == "-i":
+                                ignoreincludes=True
                         if opt == "-I":
                                 includes.append(arg)
                         if opt == "-O":
@@ -399,7 +410,6 @@
                                 printfilename = arg
                         if opt == "-v":                                
                                 verbose = True
-
                         if opt in ("--help", "-?"):
                                 usage(exitcode=0)
 
@@ -417,13 +427,24 @@
                 error(_("Error processing input arguments: %s" % e))
         try:
                 for f in infiles:
-                        lines.extend(read_file(f))
+                        lines.extend(read_file(f, ignoreincludes))
         except RuntimeError, e:
                 sys.exit(1)
 
         output = []
 
         for line, filename, lineno in lines:
+                if not line or line.startswith("#") or line.startswith("<"):
+                        output.append(([line], None, None))
+                        continue
+
+                if line.startswith("$("): #prepended unexpanded macro
+                        # doesn't handle nested macros
+                        eom = line.index(")") + 1
+                        prepended_macro = line[0:eom]
+                        line = line[eom:]
+                else:
+                        prepended_macro = None
                 try:
                         act = pkg.actions.fromstr(line)
                 except (pkg.actions.MalformedActionError,
@@ -431,9 +452,8 @@
                     pkg.actions.InvalidActionError), e:
                         error("File %s line %d: %s" % (filename, lineno, e))
                 try:
-                        a = apply_transforms(act, verbose)
-                        output.append(a)
-
+                        comment, a = apply_transforms(act, verbose)
+                        output.append((comment, a, prepended_macro))
                 except RuntimeError, e:
                         error("File %s line %d: %s" % (filename, lineno, e))
 
@@ -454,12 +474,16 @@
                 else:
                         outfile = file(outfilename, "w")
                         
-                for comment, action in output:
+                for comment, action, prepended_macro in output:
                         if comment:
                                 for l in comment:
                                         print >> outfile, "%s" % l
                         if action:
-                                print >> outfile, "%s" % action
+                                if prepended_macro is None:
+                                        print >> outfile, "%s" % action
+                                else:
+                                        print >> outfile, "%s%s" % (
+                                            prepended_macro, action)
         except IOError, e:
                 error(_("Cannot write output %s") % e)
                 
@@ -477,6 +501,7 @@
         except SystemExit, __e:
                 exit_code = __e
         except Exception, __e: 
+                traceback.print_exc()
                 print >> sys.stderr, "pkgmogrify: caught %s, %s" % (Exception, __e)
                 exit_code = 99