queer usage of install-sh

View: New views
6 Messages — Rating Filter:   Alert me  

queer usage of install-sh

by Matthias Jung-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,
libxml comes with an 'install-sh' script which seems to be used when
good old 'install' is missing on a system.
(I know you need a strange system setup to run into this. Or in my case
not having /usr/local/bin, which contains install, in PATH)

libxml uses install-sh in the same way as install is used, with the
result of an incomplete libxml installation. For example include
directory will contain only SAX.h and SAX2.h. All other header files are
missing. Doc directory will also miss most html files.

Investigation of install-sh showed, this script seems not to be designed
for copying multiple files at once.

This is what libxml executes:
 ../.././install-sh -c -m 644 SAX.h entities.h encoding.h parser.h
parserInternals.h xmlerror.h HTMLparser.h HTMLtree.h debugXML.h tree.h
list.h hash.h xpath.h xpathInternals.h xpointer.h xinclude.h xmlIO.h
xmlmemory.h nanohttp.h nanoftp.h uri.h valid.h xlink.h xmlversion.h
DOCBparser.h catalog.h threads.h globals.h c14n.h xmlautomata.h
xmlregexp.h xmlmodule.h xmlschemas.h schemasInternals.h
xmlschemastypes.h xmlstring.h xmlunicode.h xmlreader.h relaxng.h dict.h
'/home/jung/tmp/libxml2-2.7.6-hippo/include/libxml2/libxml'

Wondering am I really the first running into this?
Daniel, what do you think would a for loop surrounding install calls
with multiple files be a good idea?

By the way, this is what xmlsec is doing:
install-xmlsecincHEADERS: $(xmlsecinc_HEADERS)
        @$(NORMAL_INSTALL)
        $(mkinstalldirs) $(DESTDIR)$(xmlsecincdir)
        @list='$(xmlsecinc_HEADERS)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          f="`echo $$p | sed -e 's|^.*/||'`"; \
          echo " $(xmlsecincHEADERS_INSTALL) $$d$$p
$(DESTDIR)$(xmlsecincdir)/$$f"; \
          $(xmlsecincHEADERS_INSTALL) $$d$$p
$(DESTDIR)$(xmlsecincdir)/$$f; \
        done

Best regards,
Matthias

--
Matthias Jung
Email: matthias.jung@...
Phone: +49-30-440306-38
http://www.xtradyne.com | http://www.prismtech.com

* XTRADYNE Security Infrastructure - a PRISMTECH Product Line *

PrismTech GmbH
Schoenhauser Allee 6-7, D-10119 Berlin, Germany
Ust.-Id.-Nr.: DE814235971
Handelsregister: Amtsgericht Charlottenburg B HRB 96377 B
Geschäftsführer: Keith Raymond Steele




_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml

smime.p7s (4K) Download Attachment

Re: queer usage of install-sh

by Daniel Veillard :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Oct 21, 2009 at 11:41:37AM +0200, Matthias Jung wrote:

> Hi all,
> libxml comes with an 'install-sh' script which seems to be used when  
> good old 'install' is missing on a system.
> (I know you need a strange system setup to run into this. Or in my case  
> not having /usr/local/bin, which contains install, in PATH)
>
> libxml uses install-sh in the same way as install is used, with the  
> result of an incomplete libxml installation. For example include  
> directory will contain only SAX.h and SAX2.h. All other header files are  
> missing. Doc directory will also miss most html files.
>
> Investigation of install-sh showed, this script seems not to be designed  
> for copying multiple files at once.
>
> This is what libxml executes:
> ../.././install-sh -c -m 644 SAX.h entities.h encoding.h parser.h  
> parserInternals.h xmlerror.h HTMLparser.h HTMLtree.h debugXML.h tree.h  
> list.h hash.h xpath.h xpathInternals.h xpointer.h xinclude.h xmlIO.h  
> xmlmemory.h nanohttp.h nanoftp.h uri.h valid.h xlink.h xmlversion.h  
> DOCBparser.h catalog.h threads.h globals.h c14n.h xmlautomata.h  
> xmlregexp.h xmlmodule.h xmlschemas.h schemasInternals.h  
> xmlschemastypes.h xmlstring.h xmlunicode.h xmlreader.h relaxng.h dict.h  
> '/home/jung/tmp/libxml2-2.7.6-hippo/include/libxml2/libxml'
>
> Wondering am I really the first running into this?

  Possibly

> Daniel, what do you think would a for loop surrounding install calls  
> with multiple files be a good idea?
>
> By the way, this is what xmlsec is doing:
> install-xmlsecincHEADERS: $(xmlsecinc_HEADERS)
>        @$(NORMAL_INSTALL)
>        $(mkinstalldirs) $(DESTDIR)$(xmlsecincdir)
>        @list='$(xmlsecinc_HEADERS)'; for p in $$list; do \
>          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
>          f="`echo $$p | sed -e 's|^.*/||'`"; \
>          echo " $(xmlsecincHEADERS_INSTALL) $$d$$p  
> $(DESTDIR)$(xmlsecincdir)/$$f"; \
>          $(xmlsecincHEADERS_INSTALL) $$d$$p  
> $(DESTDIR)$(xmlsecincdir)/$$f; \
>        done
>

  this call to install.sh is generated ! See
    include/libxml/Makefile.am
the source just lists the header in xmlinc_HEADERS, and auto* does
the magic of calling install or install.sh . Maybe install.sh need
to be refreshed

Daniel

--
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel@...  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml

Re: queer usage of install-sh

by Roumen Petrov-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi All,

Daniel Veillard wrote:

> On Wed, Oct 21, 2009 at 11:41:37AM +0200, Matthias Jung wrote:
>> Hi all,
>> libxml comes with an 'install-sh' script which seems to be used when  
>> good old 'install' is missing on a system.
>> (I know you need a strange system setup to run into this. Or in my case  
>> not having /usr/local/bin, which contains install, in PATH)
>>
>> libxml uses install-sh in the same way as install is used, with the  
>> result of an incomplete libxml installation. For example include  
>> directory will contain only SAX.h and SAX2.h. All other header files are  
>> missing. Doc directory will also miss most html files.
>>
>> Investigation of install-sh showed, this script seems not to be designed  
>> for copying multiple files at once.
>>
>> This is what libxml executes:
>> ../.././install-sh -c -m 644 SAX.h entities.h encoding.h parser.h  
>> parserInternals.h xmlerror.h HTMLparser.h HTMLtree.h debugXML.h tree.h  
>> list.h hash.h xpath.h xpathInternals.h xpointer.h xinclude.h xmlIO.h  
>> xmlmemory.h nanohttp.h nanoftp.h uri.h valid.h xlink.h xmlversion.h  
>> DOCBparser.h catalog.h threads.h globals.h c14n.h xmlautomata.h  
>> xmlregexp.h xmlmodule.h xmlschemas.h schemasInternals.h  
>> xmlschemastypes.h xmlstring.h xmlunicode.h xmlreader.h relaxng.h dict.h  
>> '/home/jung/tmp/libxml2-2.7.6-hippo/include/libxml2/libxml'
>>
>> Wondering am I really the first running into this?
>
>   Possibly
>
>> Daniel, what do you think would a for loop surrounding install calls  
>> with multiple files be a good idea?
>>
>> By the way, this is what xmlsec is doing:
>> install-xmlsecincHEADERS: $(xmlsecinc_HEADERS)
>>        @$(NORMAL_INSTALL)
>>        $(mkinstalldirs) $(DESTDIR)$(xmlsecincdir)
>>        @list='$(xmlsecinc_HEADERS)'; for p in $$list; do \
>>          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
>>          f="`echo $$p | sed -e 's|^.*/||'`"; \
>>          echo " $(xmlsecincHEADERS_INSTALL) $$d$$p  
>> $(DESTDIR)$(xmlsecincdir)/$$f"; \
>>          $(xmlsecincHEADERS_INSTALL) $$d$$p  
>> $(DESTDIR)$(xmlsecincdir)/$$f; \
>>        done
>>
>
>   this call to install.sh is generated ! See
>     include/libxml/Makefile.am
> the source just lists the header in xmlinc_HEADERS, and auto* does
> the magic of calling install or install.sh . Maybe install.sh need
> to be refreshed
>
> Daniel
>

Daniel,
I confirm issue.
FSF install-sh support (from automake):
install-sh --help
Usage: ..../install-sh [OPTION]... [-T] SRCFILE DSTFILE
    or: ..../install-sh [OPTION]... SRCFILES... DIRECTORY
    or: ..../install-sh [OPTION]... -t DIRECTORY SRCFILES...
    or: ..../install-sh [OPTION]... -d DIRECTORIES...
....

Also .gitignore list following "automake" files :
- ./config.guess
- ./config.sub
- ./depcomp
but don't include following "automake" files :
- install-sh
- missing
- mkinstalldirs
It seems to me inconsistent.


Matthias,
You could replace files:
- install-sh
- missing
- mkinstalldirs
with files from automake package (usually located in
/usr/share/automake*/ ) either manually or as run command
"automake --force-missing --add-missing --copy --foreign"


Regards,
Roumen
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml

Re: queer usage of install-sh

by Daniel Veillard :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Oct 22, 2009 at 12:10:29AM +0300, Roumen Petrov wrote:
> Hi All,

  Hi Roumen,

 - I have a pending patch from you, I need to review it, I know :-) -

> Daniel Veillard wrote:
>>   this call to install.sh is generated ! See
>>     include/libxml/Makefile.am
>> the source just lists the header in xmlinc_HEADERS, and auto* does
>> the magic of calling install or install.sh . Maybe install.sh need
>> to be refreshed
>>
>> Daniel
>>
>
> Daniel,
> I confirm issue.
> FSF install-sh support (from automake):
> install-sh --help
> Usage: ..../install-sh [OPTION]... [-T] SRCFILE DSTFILE
>    or: ..../install-sh [OPTION]... SRCFILES... DIRECTORY
>    or: ..../install-sh [OPTION]... -t DIRECTORY SRCFILES...
>    or: ..../install-sh [OPTION]... -d DIRECTORIES...
> ....
>
> Also .gitignore list following "automake" files :
> - ./config.guess
> - ./config.sub
> - ./depcomp
> but don't include following "automake" files :
> - install-sh
> - missing
> - mkinstalldirs
> It seems to me inconsistent.
>

  Hum, right. I guess it's back from CVS, and old times where
we knew the config.* would change on a regular basis.

> Matthias,
> You could replace files:
> - install-sh
> - missing
> - mkinstalldirs
> with files from automake package (usually located in  
> /usr/share/automake*/ ) either manually or as run command
> "automake --force-missing --add-missing --copy --foreign"

  Yup that refreshes them, I commited the 3 updates. Now the question
is :
  - should those files provided by auto* be in git ?
    + in a sense they are part of what makes a release
    + but they are somehow generated as coming from auto*
  - if we pick yes then maybe the 3 others should be added too
  - if we pick no then we should just remove them from git and
    list them in gitignore

I don't know yet what's really the best approach, the status quo was
fine until now but after a decade or so it managed to bite us :-)

Daniel

--
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel@...  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml

Re: queer usage of install-sh

by Mike Hommey :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Oct 21, 2009 at 11:36:38PM +0200, Daniel Veillard wrote:

>   Yup that refreshes them, I commited the 3 updates. Now the question
> is :
>   - should those files provided by auto* be in git ?
>     + in a sense they are part of what makes a release
>     + but they are somehow generated as coming from auto*
>   - if we pick yes then maybe the 3 others should be added too
>   - if we pick no then we should just remove them from git and
>     list them in gitignore
>
> I don't know yet what's really the best approach, the status quo was
> fine until now but after a decade or so it managed to bite us :-)

If you could also add AM_MAINTAINER_MODE to configure.in, that would
make my life a whole lot easier.

Thank you.

Mike
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml

Re: queer usage of install-sh

by Roumen Petrov-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Daniel Veillard wrote:
> On Thu, Oct 22, 2009 at 12:10:29AM +0300, Roumen Petrov wrote:
[SNIP]

>>
>> Also .gitignore list following "automake" files :
>> - ./config.guess
>> - ./config.sub
>> - ./depcomp
>> but don't include following "automake" files :
>> - install-sh
>> - missing
>> - mkinstalldirs
>> It seems to me inconsistent.
>>
>
>   Hum, right. I guess it's back from CVS, and old times where
> we knew the config.* would change on a regular basis.
>
>> Matthias,
>> You could replace files:
>> - install-sh
>> - missing
>> - mkinstalldirs
>> with files from automake package (usually located in  
>> /usr/share/automake*/ ) either manually or as run command
>> "automake --force-missing --add-missing --copy --foreign"
>
>   Yup that refreshes them, I commited the 3 updates. Now the question
> is :
>   - should those files provided by auto* be in git ?
>     + in a sense they are part of what makes a release
>     + but they are somehow generated as coming from auto*
>   - if we pick yes then maybe the 3 others should be added too
>   - if we pick no then we should just remove them from git and
>     list them in gitignore
>
> I don't know yet what's really the best approach, the status quo was
> fine until now but after a decade or so it managed to bite us :-)
>
> Daniel
>

The project provide bootstrap script - autogen.sh.

If README describe how to build from repository may be you could remove
files from git.

The automake option --foreign won't install license file COPYING. Option
--copy is clear, so you may update update autogen.sh.

Also GNU autotools install files with correct executable permissions.
I know projects that incorrectly keep without those files in repository
without executable permission and as result build from checkout source fail.

As Makefile.in are not in repository and users as to run automake to
generate them may be is better to remove those files.


I didn't found reported by Matthias issue as for all project build from
source I run own bootstrap scripts. The scripts remove following files
from source tree: compile, depcomp, install-sh, install.sh, ltconfig,
ltmain.sh, mdate-sh , missing, mkinstalldirs and ylwrap. Next script run
GNU autotools commands and finally for some non-automake based project
install my automake files mostly mkinstalldirs.
Of course above scenario don't work well for all project based on GNU
autotools build system.


Roumen
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@...
http://mail.gnome.org/mailman/listinfo/xml