Subject: Failed to install guile 3 in Mac OS

From: "Walter H. Yang" <[email-masked]>
Date: Fri, 25 Sep 2020 11:31:54 +0800

Hi Guile

I'm trying to compile guile 3 from source code under Mac OS 10.15 with
macports, because the 3.0 version is not available in macports. after
compiled bdwgc from the source code, I can compile guile 3 successfully,
but it failed at 'make install' with the following error:

Must remake target `install-data-hook'.

Putting child 0x7f8549f04450 (install-data-hook) PID 98725 on the chain.

Live child 0x7f8549f04450 (install-data-hook) PID 98725

Reaping winning child 0x7f8549f04450 PID 98725

Live child 0x7f8549f04450 (install-data-hook) PID 98726

 /usr/bin/install -c -m 644 libguile-3.0-gdb.scm
/opt/local/lib/libguile-3.0.a-gdb.scm

*sed: -e: No such file or directory*

Reaping losing child 0x7f8549f04450 PID 98726

make[3]: *** [install-data-hook] Error 1

Removing child 0x7f8549f04450 PID 98726 from chain.

Reaping losing child 0x7f9c9e723fb0 PID 98724

make[2]: *** [install-data-am] Error 2

Removing child 0x7f9c9e723fb0 PID 98724 from chain.

Reaping losing child 0x7f89e501d110 PID 98618

make[1]: *** [install-am] Error 2

After a while of digging into the Makefile, I found out it caused by the
'sed -i -e ..." for:

libguile/Makefile.am:

## Instantiate a template.

INSTANTIATE =
    \

*  $(SED) -i -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'
      \*

            -e 's,[@]pkglibdir[@],$(pkglibdir),g'
    \

            -e
's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g'
...

install-data-hook: libguile-@[email-masked]
...

        echo " $(INSTALL_DATA) $<                               \

$(DESTDIR)$(libdir)/$$libname-gdb.scm";                         \

        $(INSTALL_DATA) "$<"                                    \

            "$(DESTDIR)$(libdir)/$$libname-gdb.scm";            \

        $(INSTANTIATE) "$(DESTDIR)$(libdir)/$$libname-gdb.scm"

The /usr/bin/sed on Mac OS 10.15, the BSD sed, it's a bit different from
the sed on Linux, the "-i" option must be followed a SUFFIX option.

Simply, change it to sed -i "" -e ... works for me, there would be a better
solution for it.

Thanks

Hong