Stephen,

>       The 20060703 delivery I just pushed a few minutes ago should
> have my putback that moves a bunch of files for your packaging changes:
> 
> http://dlc.sun.com/osol/on/downloads/current/on-changelog-20060703.html#Thu_Jun_29_21:40:48_2006_GMT

indeed, that helped alot.  I'm now dealing with a few remaining issues:

If I apply my patches to split off missing closed files to their own
packages and move all packages that cannot be built (because either some
or all files are missing from an open build) to subdirs of
usr/src/pkgdefs so they cannot be found during the build, I still get
some warnings from protocmp (on i386 in this case):

Files missing from the proto area:

T File Name                      Reloc/Sym name       perm owner group inode 
lnk maj min package(s)
------------------------------------------------------------------------------------------------------------
d etc/llc2/default               -                     755 -     -          0  
1  -  -    SUNWllcr

  SUNWllcr can be built, but this directory is missing.  I suppose it is
  usually created from the closed tree.  It is now missing from the closed
  tarball, so it should probably be added to Targetdirs?

Files missing from packages:

T File Name                      Reloc/Sym name       perm owner group inode 
lnk maj min package(s)
------------------------------------------------------------------------------------------------------------
f usr/platform/i86pc/lib/mtst/mtst_AuthenticAMD_15.so -                     755 
-     -          0  1  -  -    proto
f usr/sbin/devctl                -                     555 -     -          0  
1  -  -    proto
f kernel/drv/dprov               -                     755 -     -     165011  
2  -  -    proto
f usr/sbin/ocfserv               -                     555 -     -          0  
1  -  -    proto
f usr/sbin/emul64ioctl           -                     555 -     -          0  
1  -  -    proto
f kernel/crypto/dprov            -                     755 -     -     165011  
2  -  -    proto
f usr/kernel/drv/tphci           -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/emul64          -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/tvhci           -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/pshot           -                     755 -     -          0  
1  -  -    proto
f kernel/drv/amd64/dprov         -                     755 -     -     165004  
2  -  -    proto
f kernel/drv/dprov.conf          -                     644 -     -          0  
1  -  -    proto
f usr/kernel/drv/gen_drv         -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/tclient         -                     755 -     -          0  
1  -  -    proto
f usr/lib/llib-lsmartcard        -                     644 -     -          0  
1  -  -    proto
s usr/lib/libsmartcard.so        libsmartcard.so.1     777 -     -          0  
1  -  -    proto
f usr/lib/libsmartcard.so.1      -                     755 -     -          0  
1  -  -    proto
f kernel/crypto/amd64/dprov      -                     755 -     -     165004  
2  -  -    proto
f usr/kernel/drv/amd64/tphci     -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/amd64/emul64    -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/amd64/tvhci     -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/emul64.conf     -                     644 -     -          0  
1  -  -    proto
f usr/kernel/drv/amd64/pshot     -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/pshot.conf      -                     644 -     -          0  
1  -  -    proto
f usr/include/sys/memtest.h      -                     644 -     -          0  
1  -  -    proto
f usr/lib/llib-lsmartcard.ln     -                     644 -     -          0  
1  -  -    proto
d usr/platform/i86pc/lib/mtst    -                     755 -     -     124553  
2  -  -    proto
f usr/kernel/drv/amd64/gen_drv   -                     755 -     -          0  
1  -  -    proto
f usr/kernel/drv/amd64/tclient   -                     755 -     -          0  
1  -  -    proto
s usr/lib/amd64/libsmartcard.so  libsmartcard.so.1     777 -     -          0  
1  -  -    proto
f usr/lib/amd64/libsmartcard.so.1 -                     755 -     -          0  
1  -  -    proto
f usr/lib/amd64/llib-lsmartcard.ln -                     644 -     -          0 
 1  -  -    proto
f platform/i86pc/kernel/drv/memtest -                     755 -     -          
0  1  -  -    proto
d usr/include/sys/ib/adapters/tavor -                     755 -     -     
125295  2  -  -    proto

  An empty directory which should just be removed from the closed tarball.

f platform/i86pc/kernel/drv/amd64/memtest -                     755 -     -     
     0  1  -  -    proto
f platform/i86pc/kernel/drv/memtest.conf -                     644 -     -      
    0  1  -  -    proto
f var/svc/manifest/network/rpc/ocfserv.xml -                     444 -     -    
      0  1  -  -    proto

All those files and directories are from the closed tarball, but the
packages cannot be build completely.  As we agreed not to remove them
just to avoid build warnings, my approach (suggested by Darren) was to
add an additional protocmp exception list only used during and open build
and add code to nightly to use it if appropriate.

Apart from the smartcard stuff (which we might actually ignore since it's
on its way out), the main offenders are SUNWonmtst.i (which only lacks
usr/bin/mtst, and could perhaps be opened) and SUNWiotu (which lacks
usr/sbin/pcitool and the corresponding man page).

If I do this, the protocmp warnings are gone as expected.  Unfortunately,
if I run nightly -i at this point, I get at another problem: makebfu fails
like this:

==== cpio archives build errors (DEBUG) ====

Failed to create generic kernel archive:        133230 blocks
Failed to create generic root archive:  4320 blocks
Failed to create generic usr archive:   328400 blocks
Failed to create i86pc root archive:    10410 blocks
Failed to create i86pc usr archive:     2200 blocks
cpiotranslate: kernel/crypto/amd64/dprov: no packaging info

So it seems we cannot move the closed packages to usr/closed/pkgdefs (at
least not those which have any component either in the open tree or the
closed tarball).  If we leave them all in usr/src/pkgdefs, the open
exception list gets quite long and needs to duplicate the whole list of
files and directories from closed packages.  So the approach seems to be to
only move packages that are completely closed, and leave the rest in
usr/src/pkgdefs.  This uglifies usr/src/pkgdefs/Makefile quite a bit,
though:

I had initially planned to use something like the following:

SUBDIRS= $($(MACH)_SUBDIRS) $(COMMON_SUBDIRS)
$(CLOSED_BUILD)SUBDIRS+= \
        $($(MACH)_CLOSED_SUBDIRS:%=$(CLOSED)/pkgdefs/%) \
        $(COMMON_CLOSED_SUBDIRS:%=$(CLOSED)/pkgdefs/%)

If we need to distinguish between completely closed packages and partially
closed packages, we either need to create additional make variables to list
them separately and prefix/move only the completely closed ones, or prefix
every completely closed package in thosed *_CLOSED_SUBDIRS lists like this:

CLOSED_COMMON_XMODS= \
        SUNWcryptoint \
        $(CLOSED)/pkgdefs/SUNWsvvs

Which solution do you prefer?

I've already mentioned the final issue:

Inconsistencies between pkgdefs and proto area:

Unit   T File Name                      Reloc/Sym name       perm owner group 
inode lnk maj min package(s)
------------------------------------------------------------------------------------------------------------
filea: d etc/lp                         -                     775 -     -       
   0  1  -  -    SUNWpsr
fileb: d etc/lp                         -                     755 -     -     
124828  9  -  -    proto
    differ: perm 
filea: d var/lp                         -                     775 -     -       
   0  1  -  -    SUNWipplr SUNWpsr
fileb: d var/lp                         -                     755 -     -     
124495  4  -  -    proto
    differ: perm 
filea: d var/adm/acct                   -                     775 -     -       
   0  1  -  -    SUNWaccr
fileb: d var/adm/acct                   -                     755 -     -     
124496  5  -  -    proto
    differ: perm 
filea: d etc/inet/secret                -                     700 -     -       
   0  1  -  -    SUNWcnetr
fileb: d etc/inet/secret                -                     755 -     -     
124831  3  -  -    proto
    differ: perm 

Those directories are present in the closed tarball and are not created during
the build with the right permissions.  Initially (CR 6439889), I had
suggested to fix the permissions in the closed tarball and use tar xpf to
transfer the closed/root_$(MACH) directory during the build.  On second
thought, this approach doesn't seem right: it requires that the closed
tarball is extracted with tar xpf in the first place, otherwise the user's
umask will change the directory permissions.  My current approach is to
create those directories from usr/src/Targetdirs with the correct
permissions.  Unfortunately, in the current setup, if you run nightly -i,
the closed tarball is copied over again and breaks the directory
permissions setup by Targetdirs.  One might force the $(ROOTDIRS) target to
depend on FRC (i.e. run every time), which right now has the unfortunate
effect that it is run twice.  I've yet to figure out the correct
dependencies to avoid this if possible.  I think Stephen and me can
investigate this further while working on CR 6439889.

        Rainer

-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to