GNU bug report logs - #39999
make install fails on mac (Catilina, Guile-3.0.1)

Previous Next

Package: guile;

Reported by: Massimiliano Gubinelli <m.gubinelli <at> gmail.com>

Date: Mon, 9 Mar 2020 14:35:01 UTC

Severity: normal

To reply to this bug, email your comments to 39999 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Mon, 09 Mar 2020 14:35:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Massimiliano Gubinelli <m.gubinelli <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guile <at> gnu.org. (Mon, 09 Mar 2020 14:35:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Massimiliano Gubinelli <m.gubinelli <at> gmail.com>
To: bug-guile <at> gnu.org
Subject: make install fails on mac (Catilina, Guile-3.0.1)
Date: Mon, 9 Mar 2020 14:29:06 +0100
Hi,
 make install on the last Guile 3.0.1 fails on my Mac (Catilina) with the following message


 ../build-aux/install-sh -c -d '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
 /usr/bin/install -c -m 644 version.h scmconfig.h '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
/Library/Developer/CommandLineTools/usr/bin/make  install-data-hook
 /usr/bin/install -c -m 644 libguile-3.0-gdb.scm				/Users/mgubi/t/guile3-usr/lib/libguile-3.0.a-gdb.scm
sed: -e: No such file or directory
make[5]: *** [install-data-hook] Error 1
make[4]: *** [install-data-am] Error 2
make[3]: *** [install-am] Error 2
make[2]: *** [install] Error 2
make[1]: *** [install-recursive] Error 1
make: *** [install] Error 2


I found that the following change to libguile/Makefile go around the problem

INSTANTIATE = \
  $(SED) -i '' -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'                          \
            -e 's,[@]pkglibdir[@],$(pkglibdir),g'                               \
            -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g’


HTH,
Best
Massimiliano Gubinelli







Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Wed, 11 Mar 2020 11:12:02 GMT) Full text and rfc822 format available.

Message #8 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Massimiliano Gubinelli <m.gubinelli <at> gmail.com>
Cc: 39999 <at> debbugs.gnu.org
Subject: Re: bug#39999: make install fails on mac (Catilina, Guile-3.0.1)
Date: Wed, 11 Mar 2020 12:11:09 +0100
Hi,

Massimiliano Gubinelli <m.gubinelli <at> gmail.com> skribis:

>  make install on the last Guile 3.0.1 fails on my Mac (Catilina) with the following message
>
>
>  ../build-aux/install-sh -c -d '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
>  /usr/bin/install -c -m 644 version.h scmconfig.h '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
> /Library/Developer/CommandLineTools/usr/bin/make  install-data-hook
>  /usr/bin/install -c -m 644 libguile-3.0-gdb.scm				/Users/mgubi/t/guile3-usr/lib/libguile-3.0.a-gdb.scm
> sed: -e: No such file or directory
> make[5]: *** [install-data-hook] Error 1
> make[4]: *** [install-data-am] Error 2
> make[3]: *** [install-am] Error 2
> make[2]: *** [install] Error 2
> make[1]: *** [install-recursive] Error 1
> make: *** [install] Error 2

I suppose the ‘sed’ invocation in the INSTANTIATE variable in Makefile
assumes we’re using GNU sed, which is probably not the case on your
machine.

> I found that the following change to libguile/Makefile go around the problem
>
> INSTANTIATE = \
>   $(SED) -i '' -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'                          \
>             -e 's,[@]pkglibdir[@],$(pkglibdir),g'                               \
>             -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g’

What if you move ‘-i’ last, and without ''?  That should expand to
something like:

  sed -e … -e … -e … -i libguile-3.0-gdb.scm

Thanks,
Ludo’.




Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Wed, 11 Mar 2020 14:05:02 GMT) Full text and rfc822 format available.

Message #11 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Massimiliano Gubinelli <m.gubinelli <at> gmail.com>
Cc: 39999 <at> debbugs.gnu.org
Subject: Re: bug#39999: make install fails on mac (Catilina, Guile-3.0.1)
Date: Wed, 11 Mar 2020 15:04:12 +0100
Hi Massimiliano,

Massimiliano Gubinelli <m.gubinelli <at> gmail.com> skribis:

> Is ok to do
>
> Horst:clean mgubi$ sed  -e 's,pippo,pluto,g' -e 's,pippo,pluto,g' -e 's,pippo,pluto,g'  -i ‘' test

Does it modify the file called ‘test’ in this case?

Thanks for testing!

Ludo’.




Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Wed, 11 Mar 2020 14:34:02 GMT) Full text and rfc822 format available.

Message #14 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: Massimiliano Gubinelli <m.gubinelli <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 39999 <at> debbugs.gnu.org
Subject: Re: bug#39999: make install fails on mac (Catilina, Guile-3.0.1)
Date: Wed, 11 Mar 2020 12:20:19 +0100
Hi Ludovic, 
 the problem seems to be the multiple -e together with -i. 

Example:

Horst:clean mgubi$ cat - > test
pippo
Horst:clean mgubi$ sed -i -e 's,pippo,pluto,g' -e 's,pippo,pluto,g' -e 's,pippo,pluto,g'  test
sed: -e: No such file or directory
Horst:clean mgubi$ sed  -e 's,pippo,pluto,g' -e 's,pippo,pluto,g' -e 's,pippo,pluto,g'  test
pluto
Horst:clean mgubi$ sed -i -e 's,pippo,pluto,g'  test
Horst:clean mgubi$ 

The first command give error while the other work. If I put -i at the end I get

Horst:clean mgubi$ sed  -e 's,pippo,pluto,g' -e 's,pippo,pluto,g' -e 's,pippo,pluto,g'  -i test
sed: -i may not be used with stdin

Is ok to do

Horst:clean mgubi$ sed  -e 's,pippo,pluto,g' -e 's,pippo,pluto,g' -e 's,pippo,pluto,g'  -i ‘' test


Best,
Max



> On 11. Mar 2020, at 12:11, Ludovic Courtès <ludo <at> gnu.org> wrote:
> 
> Hi,
> 
> Massimiliano Gubinelli <m.gubinelli <at> gmail.com> skribis:
> 
>> make install on the last Guile 3.0.1 fails on my Mac (Catilina) with the following message
>> 
>> 
>> ../build-aux/install-sh -c -d '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
>> /usr/bin/install -c -m 644 version.h scmconfig.h '/Users/mgubi/t/guile3-usr/include/guile/3.0/libguile'
>> /Library/Developer/CommandLineTools/usr/bin/make  install-data-hook
>> /usr/bin/install -c -m 644 libguile-3.0-gdb.scm				/Users/mgubi/t/guile3-usr/lib/libguile-3.0.a-gdb.scm
>> sed: -e: No such file or directory
>> make[5]: *** [install-data-hook] Error 1
>> make[4]: *** [install-data-am] Error 2
>> make[3]: *** [install-am] Error 2
>> make[2]: *** [install] Error 2
>> make[1]: *** [install-recursive] Error 1
>> make: *** [install] Error 2
> 
> I suppose the ‘sed’ invocation in the INSTANTIATE variable in Makefile
> assumes we’re using GNU sed, which is probably not the case on your
> machine.
> 
>> I found that the following change to libguile/Makefile go around the problem
>> 
>> INSTANTIATE = \
>>  $(SED) -i '' -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'                          \
>>            -e 's,[@]pkglibdir[@],$(pkglibdir),g'                               \
>>            -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g’
> 
> What if you move ‘-i’ last, and without ''?  That should expand to
> something like:
> 
>  sed -e … -e … -e … -i libguile-3.0-gdb.scm
> 
> Thanks,
> Ludo’.





Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Wed, 29 Apr 2020 19:09:03 GMT) Full text and rfc822 format available.

Message #17 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: "W. Lincoln Harvey" <lincolnlaw <at> mac.com>
To: 39999 <at> debbugs.gnu.org
Subject: MacOS Catalina with sed
Date: Wed, 29 Apr 2020 11:22:00 -0700
MacOS uses BSD sed.  When the -i option to sed is used, it has a mandatory argument, which should be a zero length string to edit the file in-place.  
Gnu sed’s -i option uses an optional argument, rather than a mandatory argument, which if not present allows the file to be edited in-place.   Adding a zero-length string might cause problems.

Configure needs to add a zero length quote when compiling using BSD sed, and nothing when compiling using Gnu sed, or avoid the whole problem by making a backup using a prefix, in which case both use the same syntax.

wlh



Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Wed, 29 Apr 2020 19:35:02 GMT) Full text and rfc822 format available.

Message #20 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: "W. Lincoln Harvey" <lincolnlaw <at> mac.com>
To: 39999 <at> debbugs.gnu.org
Subject: BSD sed vs Gnu sed
Date: Wed, 29 Apr 2020 12:30:22 -0700
Sorry; my explanation above is not correct.  
What I meant to say is that to edit a file in place WITHOUT CREATING a backup file, BSD sed’s -i option requires a zero-length string as a mandatory argument, while Gnu sed’s -i option does not take any argument.  If a backup file is wanted, then their option -i syntax is identical.

The INSTANTIATE macro as written is not including any argument to sed’s -i option, meaning that no backup file is wanted.  

Therefore, a very simply solution to this problem is to make a backup file, then delete it.  Both sed versions would work correctly.
A more complicated solution is to determine which version of sed is being used, and change the INSTANTIATE macro to use the correct syntax.

Gnu sed has a version option (—version), but BSD sed does not (it throws an error when either -v or —version are used).

wlh



Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Thu, 30 Apr 2020 00:05:01 GMT) Full text and rfc822 format available.

Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Greg Troxel <gdt <at> lexort.com>
To: "W. Lincoln Harvey" via "Bug reports for GUILE\,
 GNU's Ubiquitous Extension Language" <bug-guile <at> gnu.org>
Cc: 39999 <at> debbugs.gnu.org
Subject: Re: bug#39999: BSD sed vs Gnu sed
Date: Wed, 29 Apr 2020 20:04:19 -0400
"W. Lincoln Harvey" via "Bug reports for GUILE, GNU's Ubiquitous
Extension Language" <bug-guile <at> gnu.org> writes:

> backup file, BSD sed’s -i option requires a zero-length string as a
> mandatory argument, while Gnu sed’s -i option does not take any
> argument.

In cases like this, it is good to read the POSIX specs.

However, you will find that -i is not specified at all.

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html




Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Thu, 30 Apr 2020 00:05:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Thu, 30 Apr 2020 01:07:01 GMT) Full text and rfc822 format available.

Message #29 received at 39999 <at> debbugs.gnu.org (full text, mbox):

From: wlharvey4 <at> mac.com
To: 39999 <at> debbugs.gnu.org
Subject: sed -i non-POSIX
Date: Wed, 29 Apr 2020 17:37:13 -0700
[Message part 1 (text/plain, inline)]
Greg,

Good point.  The BSD sed man page says:

"The -E, -a and -i options are non-standard FreeBSD extensions and may not be available on other operating systems."

So perhaps a better solution is to not use the -i option at all and be POSIX compliant?

Informally looking through some of the code, this was the only use of the -i option that I found.

wlh
[Message part 2 (text/html, inline)]

Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Fri, 01 May 2020 14:38:01 GMT) Full text and rfc822 format available.

Message #32 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Greg Troxel <gdt <at> lexort.com>
To: wlharvey4--- via "Bug reports for GUILE\,
 GNU's Ubiquitous Extension Language" <bug-guile <at> gnu.org>
Cc: 39999 <at> debbugs.gnu.org
Subject: Re: bug#39999: sed -i non-POSIX
Date: Fri, 01 May 2020 10:37:43 -0400
wlharvey4--- via "Bug reports for GUILE, GNU's Ubiquitous Extension
Language" <bug-guile <at> gnu.org> writes:

> Greg,
>
> Good point.  The BSD sed man page says:
>
> "The -E, -a and -i options are non-standard FreeBSD extensions and may not be available on other operating systems."
>
> So perhaps a better solution is to not use the -i option at all and be POSIX compliant?
>
> Informally looking through some of the code, this was the only use of the -i option that I found.

If that is at all reasonable, then I think it's the best thing to do.

FWIW, the saem text about -i being a FreeBSD extension appears in the
NetBSD man page.




Information forwarded to bug-guile <at> gnu.org:
bug#39999; Package guile. (Fri, 01 May 2020 14:38:01 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 43 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.