Hi Norm,
I'm working on a fix for the texinfo package, and I'd like to ask/discuss
with you the way it should go (because you initially introduced the texinfo
package into userland).

7121463 text/texinfo doesn't deliver a file, but manifests it
http://monaco.sfbay.sun.com/detail.jsf?cr=7121463

The problem is related to so called "dir" files (an index of all *.info
files present in given directory). These files are generated by the service
svc:/application/texinfo-update:default in runtime and at the same time
they're delivered by the package. The service expects the "dir" file
is a symbolic link pointing to /var/info/<real-dir-file>.
Currently the texinfo package delivers these for 2 directories:
/usr/share/info and /usr/sfw/share/info.

Problems:

1) If there're no *.info files in the directory, there should be
   no "dir" file there as well. This is the case for our /usr/sfw/share/info
   directory. I was fixing the service script in CR 7109099 to delete
   the "dir" file in this case. But it leads to "pkg verify" error,
   because the "dir" file is stated in the package manifest.

   I see 3 possible approches how to fix it:

   a) Do not delete the "dir" file, but create a dummy (empty) one instead.
      The dummy "dir" file has to be a valid info file.

   b) Remove "dir" files (and symbolic links to them) from the manifest.
      This would be a more invasive change, because the link is used to find
      directories where "dir" file should be updated. We would have to invent
      some other way how to tell the service where to update "dir" files.
      Also the "dir" files would not be removed in case of package uninstall.
      (but they would be "salvaged" when last package delivering files into
      directory they live in will be uninstalled).

   c) Do not deliver "dir" file (and link) for /usr/sfw/share/info in the
      texinfo package.

   I have initial diff for options a and b (the b option with just hardcoded
   paths into it - needs additional work).

   Is there an approach you would suggest? Or something completely different?


2) The path, where info(1) utility searches for "dir" and *.info files.
   The default path is compiled into the binary (can be changed when
   configuring the package) and currently there are these directories:

   /usr/local/info
   /usr/info
   /usr/local/lib/info
   /usr/lib/info
   /usr/local/gnu/info
   /usr/local/gnu/lib/info
   /usr/gnu/info
   /usr/gnu/lib/info
   /opt/gnu/info
   /usr/share/info
   /usr/share/lib/info
   /usr/local/share/info
   /usr/local/share/lib/info
   /usr/gnu/lib/emacs/info
   /usr/local/gnu/lib/emacs/info
   /usr/local/lib/emacs/info
   /usr/local/emacs/info
   . (current directory)

   I searched for directories where we deliver our *.info files and found these:

   $ pkg search -H -o path ':file:path:*.info' | sed -e 's:/[^/]*\.info::g' | 
sort -u
   usr/gcc/4.5/share/info
   usr/gnu/share/info
   usr/mysql/5.1/docs
   usr/sfw/share/info
   usr/share/doc/freeipmi/info
   usr/share/info
   usr/share/src/grub/docs

   So by default (if the user doesn't explicitly set INFOPATH variable in its
   environment) the files in /usr/sfw/share/info are ignored (not found).

   Shouldn't we set the default info path when configuring the package to 
include
   directories where we deliver *.info files? (I think at least 
/usr/sfw/share/info and
   /usr/gnu/share/info is worth of)


I apologize for so long mail :)

Petr
_______________________________________________
userland-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/userland-discuss

Reply via email to