ciao-lang / ciao

Ciao is a modern Prolog implementation that builds up from a logic-based simple kernel designed to be portable, extensible, and modular.
https://ciao-lang.org
GNU Lesser General Public License v3.0
272 stars 21 forks source link

Problem installing Ciao on MacBook M1 with Apple Silicon (ARM) #39

Closed Robert-Adelard closed 2 years ago

Robert-Adelard commented 2 years ago

Is it possible to install Ciao on a MacBook M1 or is this not a supported platform? There does not appear be a binary release available and when I try to build from source code using ciao-boot.sh local-install I get the error message:

{ERROR (ciao_builder): '.' does not look like a valid builder target.

It does not correspond to a known bundle name, a path to a bundle, or a path
to a workspace containing bundles.

Some possible reasons: the target is not reachable from CIAOROOT or CIAOPATH,
or it does not contain the ACTIVATE mark (for catalogues), or the bundle
sources are incomplete (no valid Manifest.pl?).}

I did some investigation and discovered that the bootstrap had built a BOOT configuration in build-boot/eng/ciaoengine/cfg/BOOT that looked reasonable - however, line 806 of builder/sh_src/build_car.sh sets eng_cfg=DEFAULT rather than BOOT if $ENG_CFG is not set. This appears to be deliberate according to aTODO comment at line 619 that states # TODO: ENG_CFG=DEFAULT hardwired.

How can I bootstrap a new configuration for my platform?

jfmc commented 2 years ago

Hi,

Apple M1 is a supported platform and it should compile and install without any problem. The error message that you report is a bit strange. Something like:

$ git clone git@github.com:ciao-lang/ciao.git
$ cd ciao
$ ./ciao-boot.sh local-install

should work. If it does not, could you try this instead?

./ciao-boot.sh configure
./ciao-boot.sh build
./ciao-boot.sh install

(and attach a copy of the log messages if it still does not work)

Binary distributions for that platform are unfortunately not available in GitHub Actions (AFAIK, except for self-hosted runners).

Robert-Adelard commented 2 years ago

Thank you for confirming that Apple M1 is a support platform. Unfortunately, it doesn't work for me...

$ ./ciao-boot.sh local-install
=> builder: building [boot]
   compiling ciaoengine (engine for ciaoc.sta)
   compiling ciao_builder (command) [using ciaoc.sta]
{Reading .../ciao/core/lib/compiler/exemaker.pl
ERROR: (lns 1-6) Module exemaker already defined in source ..../ciao/core/lib/compiler/exemaker
}
   reusing ciaoengine (engine for ciao_builder)
{ERROR (ciao_builder): '.' does not look like a valid builder target.

It does not correspond to a known bundle name, a path to a bundle, or a path
to a workspace containing bundles.

Some possible reasons: the target is not reachable from CIAOROOT or CIAOPATH,
or it does not contain the ACTIVATE mark (for catalogues), or the bundle
sources are incomplete (no valid Manifest.pl?).} 

If I run the configure command separately, I get the same error message from ciao_builder:

$ ./ciao-boot.sh configure
{ERROR (ciao_builder): '.' does not look like a valid builder target.

It does not correspond to a known bundle name, a path to a bundle, or a path
to a workspace containing bundles.

Some possible reasons: the target is not reachable from CIAOROOT or CIAOPATH,
or it does not contain the ACTIVATE mark (for catalogues), or the bundle
sources are incomplete (no valid Manifest.pl?).}
jfmc commented 2 years ago

That error is strange (somehow the build system is not recognizing the source tree). Are you installing from a fresh git clone? Is any of the parent directories in a symbolic link?

Robert-Adelard commented 2 years ago

Yes, I'm installing from a fresh git clone, and No, none of the parent directories is a symbolic link.

Are there any debug flags I can use to generate more logging information?

jfmc commented 2 years ago

There is no logging information at the required level to trace this issue. I've located a couple of places to inspect by manually adding logging code (if you are familiar with Prolog).

Some checks before:

Robert-Adelard commented 2 years ago

Some checks before:

  • does the absolute path of Ciao contain non-alphanumeric or UTF8 characters?

Aha - the parent directory was S-CASP. Changing it to SCASP has fixed the problem.

Thank you for your help.

jfmc commented 2 years ago

Great!