not able to install anything using opam - ocaml

I installed opam with homebrew on Mac OS X 10.10. But I can't install anything using opam. This is an example error output that get when I try to install ocamlfind:
# opam-version 1.2.0
# os darwin
# command ./configure -bindir /Users/roger/.opam/system/bin -sitelib /Users/roger/.opam/system/lib -mandir /Users/roger/.opam/system/man -config /Users/roger/.opam/system/lib/findlib.conf -no-topfind
# path /Users/roger/.opam/system/build/ocamlfind.1.5.5
# compiler system (4.02.1)
# exit-code 1
# env-file /Users/roger/.opam/system/build/ocamlfind.1.5.5/ocamlfind-91360-c61e7b.env
# stdout-file /Users/roger/.opam/system/build/ocamlfind.1.5.5/ocamlfind-91360-c61e7b.out
# stderr-file /Users/roger/.opam/system/build/ocamlfind.1.5.5/ocamlfind-91360-c61e7b.err
### stdout ###
# ...[truncated]
# Configuration for str written to site-lib-src/str/META
# Configuration for threads written to site-lib-src/threads/META
# Configuration for unix written to site-lib-src/unix/META
# Configuration for stdlib written to site-lib-src/stdlib/META
# Configuration for bigarray written to site-lib-src/bigarray/META
# Configuration for camlp4 written to site-lib-src/camlp4/META
# Configuration for ocamlbuild written to site-lib-src/ocamlbuild/META
# Configuration for compiler-libs written to site-lib-src/compiler-libs/META
# Configuration for bytes written to site-lib-src/bytes/META
# Detecting compiler arguments: FAILED (see the file ocargs.log for details)
### stderr ###
# ./configure: line 547: cd: src: No such file or directory

brew install opam
opam init --comp=4.02.1
eval `opam config env`
ocaml
Update:
Sometimes brewed opam can fail with Illegal Instruction, in that case you need to reinstall opam from sources:
brew reinstall --build-from-source opam
Also, you need a working toolchain, i.e., compiler, autotools and other developer tools. You can try to install it using brew, e.g., brew install autotools, etc. Or you can try to install xcode toolchain, including apple command line developer tools.

I had the same problem trying to install mirage, the problem is because the current directory is not in the CDPATH by default on macOS X. The posix /bin/sh will not "cd src" though can "cd ./src". The quick fix is to do the following before running opam (or just put it in your .bash_profile.
export CDPATH=.
opam install WHATEVER

Related

How does one install a specific ocaml compiler when it doesn't appear on the opam switch list?

I've installed this compiler before in a docker container, but I don't understand why it's missing right now. Command and error:
(iit_synthesis) brando9~ $ opam switch create ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1 ocaml-variants.4.07.1+flambda
[ERROR] No compiler matching `ocaml-variants.4.07.1+flambda' found, use `opam switch list-available' to see what is available, or use `--packages' to
select packages explicitly.
but it's not in the list:
(iit_synthesis) brando9~ $ opam switch list-available
# Listing available compilers from repositories: default
# Name # Version # Synopsis
ocaml-option-32bit 1 Set OCaml to be compiled in 32-bit mode for 64-bit Linux and OS X hosts
ocaml-option-flambda 1 Set OCaml to be compiled with flambda activated
ocaml-option-nnpchecker 1 Set OCaml to be compiled with --enable-naked-pointers-checker
ocaml-option-spacetime 1 Set OCaml to be compiled with spacetime activated
ocaml-options-vanilla 1 Ensure that OCaml is compiled with no special options enabled
Opam update fails
Output:
$ opam update --all
<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
Processing 1/1: [default: http]
Processing 1/1: [default: http]
[default] synchronised from https://opam.ocaml.org
[ERROR] Could not update repository "default": "~/anaconda/bin/patch -p1 -i /dfs/scratch0/brando9/.opam/log/patch-99014-0624b6" exited with code 2
I probably should have started with this but I installed opam with "manually" with deb because I don't have sudo. In particular I did this:
# - opam (snap, no sudo)
# ref: https://askubuntu.com/questions/339/how-can-i-install-a-package-without-root-access
apt-get download opam
#apt-get download opam_1.2.2-4_amd64
# manually checked the opam name
#ls | less
mkdir -p ~/.local
dpkg -x opam_1.2.2-4_amd64.deb ~/.local/bin
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc.user
source ~/.bashrc.user
tr ':' '\n' <<< "$PATH"
opam --version
before that I did try installing opam with conda (which has worked in the past) but it failed. I wonder if that screwed things up :/. Will try to reproduce to post the conda error. But I ran conda install -c conda-forge opam.
related:
How to install a specific version of ocaml compiler with opam
https://discuss.ocaml.org/t/why-doesnt-my-server-show-the-ocaml-compiler-that-i-need/10917
https://www.reddit.com/r/ocaml/comments/zed88p/how_does_one_install_a_specific_ocaml_compiler/
How does one install opam without sudo priveledges on linux/ubuntu?

MacPorts: "Error: clang-4.0 has been replaced by clang-8.0; please install that instead" but I have clang-8.0 already installed

I am getting the same error when trying to install many ports with MacPorts, e.g. gtk2:
~ sudo port install gtk2
Password:
---> Computing dependencies for gtk2
The following dependencies will be installed:
clang-4.0
clang-5.0
graphite2
harfbuzz
ld64
ld64-latest
libmacho-headers
libomp
llvm-5.0
pango
perl5
xar
xorg-libXcomposite
xorg-libXcursor
xorg-libXdamage
xorg-libXinerama
xorg-libXrandr
xorg-util-macros
Continue? [Y/n]:
---> Configuring clang-4.0
Error: clang-4.0 has been replaced by clang-8.0; please install that instead.
Error: Failed to configure clang-4.0: obsolete port
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-4.0/clang-4.0/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port gtk2 failed
The installation here suggests to install clang-4.0, among others, to which I can only answer "Continue".
However, it then fails claiming that very same port is "obsolete". Suggesting to install 8.0 instead.
However, I already have it installed by MacPorts:
~ clang -v
clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin12.6.0
Thread model: posix
InstalledDir: /opt/local/bin
➜ ~ which clang
/opt/local/bin/clang
What is wrong here and why do MacPorts insist on installing an obsolete port dependency?
UPDATE1. Some troubleshooting attempts...
➜ ~ port installed|grep llvm
cctools #921_2+llvm37 (active)
llvm-3.7 #3.7.1_4 (active)
llvm_select #2_0 (active)
➜ ~
UPDATE2.
~ sudo port uninstall lldb-4.0
Warning: no such port: lldb-4.0, skipping uninstall
➜ ~ sudo port uninstall clang-4.0
➜ ~ sudo port uninstall clang_select
---> Deactivating clang_select #2_0
---> Cleaning clang_select
---> Uninstalling clang_select #2_0
---> Cleaning clang_select
➜ ~
However, clang-8.0 is installed and working:
~ clang -v
clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin12.6.0
Thread model: posix
InstalledDir: /opt/local/bin
➜ ~ clang
clang-8: error: no input files
➜ ~
Then why isn't it found by the MacPorts?
➜ ~ sudo port install gtk2
---> Computing dependencies for gtk2
The following dependencies will be installed:
clang-4.0
...
Can I configure it to be found in /opt/local/bin instead of trying to install the old clang-4.0?
UPDATE3.
My config directories:
➜ ~ ls /opt/local/etc/macports
archive_sites.conf macports.conf.default sources.conf variants.conf.default
archive_sites.conf.default pubkeys.conf sources.conf.default
macports.conf pubkeys.conf.default variants.conf
➜ ~
➜ ~ less /opt/local/etc/macports/macports.conf
# MacPorts system-wide configuration file.
# Commented-out values are defaults unless otherwise noted.
# Directory under which MacPorts should install ports. This must be
# where MacPorts itself is installed.
prefix /opt/local
# User to run operations as when MacPorts drops privileges.
#macportsuser macports
# Directory for MacPorts working data.
portdbpath /opt/local/var/macports
# Colon-delimited list of directories to search for external tools
# (make(1), pkg-config(1), etc.). While installing ports, MacPorts uses
# this list for PATH. Changing this setting is intended for advanced
# users only and is unsupported.
#binpath /opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
# Directory containing Xcode Tools. By default, MacPorts determines this
# using xcode-select(1).
#developer_dir /Applications/Xcode.app/Contents/Developer
# Location of PackageMaker. Defaults to
# "${developer_dir}/Applications/Utilities/PackageMaker.app" with Xcode
# 4.2 and earlier and "/Applications/PackageMaker.app" with 4.3 and later.
#packagemaker_path /Applications/PackageMaker.app
# Directory for application bundles installed by ports.
applications_dir /Applications/MacPorts
# Directory for frameworks installed by ports.
frameworks_dir /opt/local/Library/Frameworks
# Location of the MacPorts sources list.
sources_conf /opt/local/etc/macports/sources.conf
# Location of the MacPorts global variants definition file. Optional.
variants_conf /opt/local/etc/macports/variants.conf
# When MacPorts should build ports from source.
# - ifneeded: Download binary archives if available; build from source
# otherwise.
# - always: Always build from source; never try fetching archives.
# - never: Never build from source; try fetching archives and abort if
# unavailable.
#buildfromsource ifneeded
# Type of archive to use for port images. Supported types are cpgz,
# cpio, tar, tbz, tbz2, tgz, tlz, txz, xar, zip.
#portarchivetype tbz2
# Apply transparent filesystem compression to files on activation.
# Requires bsdtar with support for --hfsCompression in binpath, which can be
# provided by installing the libarchive port. This will work with HFS+ or APFS
# volumes only and will be ignored on other filesystems.
#hfscompression yes
# CPU architecture to target. Supported values are "ppc", "ppc64",
# "i386", and "x86_64". Defaults to:
# - OS X 10.5 and earlier: "ppc" on PowerPC, otherwise "i386".
# - OS X 10.6 and later: "x86_64" on Intel 64, otherwise "i386".
#build_arch i386
# Space-delimited list of CPU architectures to target when building
# universal. Defaults to "i386 ppc" on Mac OS X 10.5 and earlier,
# "x86_64 i386" on Mac OS X 10.6 through macOS 10.13, and "x86_64" on
# macOS 10.14 and later (the 10.14 SDK is not universal).
#universal_archs x86_64 i386
# Use ccache, a compiler cache for C, C++, Objective-C, and
# Objective-C++. (See http://ccache.samba.org.) The "ccache" executable
# must exist in one of the directories in binpath.
#configureccache no
# Directory for ccache's cached compiler output.
#ccache_dir /opt/local/var/macports/build/.ccache
# Maximum size of files stored in ccache's cache. Append "G", "M", or
# "K" for gigabytes, megabytes, or kilobytes.
# Use distcc, a distributed compiler for C, C++, Objective-C, and
# Objective-C++. (See http://distcc.org.) The "distcc" executable must
# exist in one of the directories in binpath.
#configuredistcc no
# Use pipes rather than temporary files for communication between the
# various stages of C, C++, Objective-C, and Objective-C++ compilation.
#configurepipe yes
# Lowered scheduling priority to use for commands run during configure,
# build, and destroot. Accepted values are 0 (normal priority) through
# 20 (lowest priority).
#buildnicevalue 0
# Number of simultaneous make(1) jobs to use when building ports. If set
# to 0, the number of jobs will be the lesser of:
# - number of automatically-detected CPU cores
# - gigabytes of physical memory + 1
#buildmakejobs 0
# umask value to use when a port installs its files.
#destroot_umask 022
# Automatically execute "clean" after "install" of ports.
#portautoclean yes
# Keep logs after successful installations.
#keeplogs no
# The rsync server for fetching MacPorts base during selfupdate. This
# setting is NOT used when downloading ports trees; ports trees are
# configured using the file referenced by sources_conf. See
# https://trac.macports.org/wiki/Mirrors#MacPortsSource for a list of
# available servers.
#rsync_server rsync.macports.org
# Location of MacPorts base sources on rsync_server. If this references
# a .tar file, a signed .rmd160 file must exist in the same directory
# and will be used to verify its integrity. See
# https://trac.macports.org/wiki/Mirrors#MacPortsSource to find the
# correct rsync_dir for a particular rsync_server.
#rsync_dir macports/release/tarballs/base.tar
# Options to pass to rsync when fetching MacPorts base and the ports tree.
#rsync_options -rtzvl --delete-after
# Type of generated StartupItems.
# - launchd: Create StartupItems for use with launchd.
# - default: Create StartupItems for launchd on OS X and none on
# other platforms.
# - none: Disable creation of StartupItems.
# This setting only applies when building ports from source.
#startupitem_type default
# Create system-level symlinks to generated StartupItems. If set to
# "no", symlinks will not be created; otherwise, symlinks will be placed
# in /Library/LaunchDaemons or /Library/LaunchAgents as appropriate.
# This setting only applies when building ports from source.
#startupitem_install yes
# Whether to allow ports to automatically load their StartupItems.
# If set to "no", StartupItems will never be loaded unless the user
# explicitly requests it. If set to "yes" (the default), some ports may
# automatically load their StartupItems when they are activated.
#startupitem_autostart yes
# Extra environment variables to keep. MacPorts sanitizes its
# environment while processing ports, keeping:
# - DISPLAY
# - DYLD_FALLBACK_FRAMEWORK_PATH, DYLD_FALLBACK_LIBRARY_PATH,
# DYLD_FRAMEWORK_PATH, DYLD_INSERT_LIBRARIES, DYLD_LIBRARY_PATH
# - JAVA_HOME
# - ARCHIVE_SITE_LOCAL, MASTER_SITE_LOCAL, PATCH_SITE_LOCAL
# - PORTSRC
# - ALL_PROXY, FTP_PROXY, http_proxy, HTTPS_PROXY, NO_PROXY, RSYNC_PROXY
# - GROUP, USER
# - COLUMNS, LINES
# Variables listed in extra_env are added to this list. This has no
# default value; setting it is intended for advanced users and is
# unsupported. (Note that sudo(8) sanitizes its environment on OS X 10.5
# and later, so it may have to be configured to pass the desired
# variables to MacPorts.)
#extra_env KEEP_THIS THIS_TOO
# Override proxy-related environment variables. By default, MacPorts
# takes proxy settings from the environment, from the proxy_* options
# below, and from Network Preferences, in that order. If this is set to
# "yes", MacPorts uses proxy_*, then Network Preferences, then the
# environment. (Note that Network Preferences does not have a setting
# for rsync proxies. Also note that sudo(8) sanitizes its environment on
# OS X 10.5 and later, so it may have to be configured to pass desired
# variables to MacPorts.)
#proxy_override_env no
# Proxies. These have no default values. The analogous environment
# variables are "http_proxy", "HTTPS_PROXY", "FTP_PROXY", and
# "RSYNC_PROXY".
#proxy_http proxy1:12345
#proxy_https proxy2:67890
#proxy_ftp proxy3:02139
#proxy_rsync proxy4:11377
# Comma-delimited list of hosts that MacPorts should not access through
# the HTTP, HTTPS, and FTP proxies. This does not apply to rsync, and it
# has no default value.
#proxy_skip host1, host2, host3
# Space-delimited lists of glob patterns matched against download hosts
# that MacPorts should not use and that MacPorts should prefer, respectively,
# overriding the usual ping time checks. These have no default values.
#host_blacklist badhost1 badhost2
#preferred_hosts preferredhost1 preferredhost2 *.de.*.macports.org
# Whether MacPorts should automatically run rev-upgrade after upgrading
# ports.
#revupgrade_autorun yes
# Whether rev-upgrade should automatically rebuild ports with broken
# linking or merely report the breakage. Supported values are "report"
# and "rebuild".
#revupgrade_mode rebuild
# Space-delimited list of files and directories to delete after the
# unarchive stage and before creating a pkg. Paths are interpreted
# relative to prefix, and there is no default value. This is useful for
# removing unnecessary files and directories prior to pkg or mpkg
# deployment.
#pkg_post_unarchive_deletions include share/doc share/man
# Whether the user interface should ask interactive questions
#ui_interactive yes
# Added to support C++11 following https://trac.macports.org/wiki/LibcxxOnOlderSystems
cxx_stdlib libc++
buildfromsource always
(END)
I have finally solved this puzzle, thanks to a hint from a MacPorts mailing list user. He suggested to
port install <port> configure.compiler=macports-clang-8.0
that did not work for me though, because my clang8 was in /usr/bin, while if I understand correctly, MacPorts look for their own packages rather than ones installed from elsewhere,
even after I manually symlinked it to /opt/local/bin/clang.
Then I read this comment:
We kept 3.4, 3.7, and 5.0 as stepping stones. I hope I thought that through fully...I think that’s the minimal amount needed.
It then occurred to me that I can try clang-3.7 as "stepping stone", installed it, and thereafter was able to install the other ports with
port install <port> configure.compiler=macports-clang-3.7
In particular, I was also able to install clang-5.0 that way:
port install clang-5.0 configure.compiler=macports-clang-3.7
And now that I have the more recent stepping stone in the chain, the problem seems fixed with no more annoying fallbacks
to obsolete ports!
Further sources
Quote from comment to my ticket referring to the problem:
https://trac.macports.org/ticket/58747#comment:1
MacPorts base 2.5.4 still has clang 4.0 in its list of compilers, even though the port has been made obsolete: ​https://github.com/macports/macports-base/blob/v2.5.4/src/port1.0/portconfigure.tcl#L604
It points to the code line 604:
lappend compilers macports-clang-5.0 macports-clang-4.0
from where it appears that one of clang-4.0 or 5.0 is required. This could be the reason why it insists on installing one of these ports, defaulting to the obsolete 4.0.
I presume a fix should include adding more ports to this list, e.g. clang-3.7 that is not obsolete (with hopefully no plans to change it).
Which is currently proposed in
Relevant Github PR https://github.com/macports/macports-base/pull/137
Please add your voice to get it merged!
This is an obsoletion message. Since you already have the replacement, just uninstall clang-4.0, llvm-4.0, and lldb-4.0 and you will be fine.

Why can't opam install the graphics package?

I tried to install the ocaml graphics package, but it fails. Any suggestions for how I can fix it?
~/Documents/Work/Code/OCaml with graphics: opam update
=-=- Updating package repositories =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
[default: http] Command started
[default: http] Command started
[default] synchronized from https://opam.ocaml.org
~/Documents/Work/Code/OCaml with graphics: opam upgrade
Already up-to-date.
~/Documents/Work/Code/OCaml with graphics: opam install graphics
The following actions will be performed:
∗ install graphics 1.0
=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
[graphics: ocamlc graphics.cma] Command started
[ERROR] The compilation of graphics failed at "ocamlc -custom graphics.cma -o
test".
#=== ERROR while installing graphics.1.0 ======================================#
# opam-version 1.2.2
# os darwin
# command ocamlc -custom graphics.cma -o test
# path /Users/Tim/.opam/system/build/graphics.1.0
# compiler system (4.04.0)
# exit-code 2
# env-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.env
# stdout-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.out
# stderr-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.err
### stderr ###
# File "_none_", line 1:
# Error: Cannot find file graphics.cma
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
The following actions failed
∗ install graphics 1.0
No changes have been performed
=-=- graphics.1.0 troubleshooting -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 🐫
=> This package checks whether the Graphics library was compiled.
Other than the missing graphics package, my ocaml install is working fine.
Here are the contents of the files in ~/.opam/system/build/graphics.1.0
First, graphics-14648-7afd23.err:
File "_none_", line 1:
Error: Cannot find file graphics.cma
Then graphics-14648-7afd23.info:
# opam-version 1.2.2
# os darwin
# command ocamlc -custom graphics.cma -o test
# path /Users/Tim/.opam/system/build/graphics.1.0
# compiler system (4.04.0)
# env-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.env
# stdout-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.out
# stderr-file /Users/Tim/.opam/system/build/graphics.1.0/graphics-14648-7afd23.err
And graphics-14648-7afd23.env:
PATH=/Users/Tim/.opam/system/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin
OCAML_TOPLEVEL_PATH=/Users/Tim/.opam/system/lib/toplevel
PERL5LIB=/Users/Tim/.opam/system/lib/perl5:
MANPATH=/Users/Tim/.opam/system/man:/opt/local/share/man:
OPAMSWITCH=system
OPAMUTF8MSGS=1
CAML_LD_LIBRARY_PATH=/Users/Tim/.opam/system/lib/stublibs:/usr/local/lib/ocaml/stublibs
SHELL=/bin/bash
TERM=dumb
TMPDIR=/var/folders/kv/kmn525v16kb2mz2hrhq3q4mh0000gn/T/
BASHRC_HAS_BEEN_RUN=1
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.8tP8Ej926f/Render
EMACSDATA=/Applications/Emacs.app/Contents/Resources/etc
OLDPWD=/Users/Tim/Documents/Work/Code
EMACSPATH=/Applications/Emacs.app/Contents/MacOS/bin
USER=Tim
EMACS=t
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.EXKwsf0Dz0/Listeners
TERMCAP=
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
COLUMNS=190
BASH_PROFILE_HAS_BEEN_RUN=1
PWD=/Users/Tim/Documents/Work/Code/OCaml with graphics
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
EMACSLOADPATH=/Applications/Emacs.app/Contents/Resources/site-lisp:/Applications/Emacs.app/Contents/Resources/lisp:/Applications/Emacs.app/Contents/Resources/leim
SHLVL=1
HOME=/Users/Tim
LOGNAME=Tim
INFOPATH=/Applications/Emacs.app/Contents/Resources/info:
DISPLAY=/private/tmp/com.apple.launchd.jPYPDR7RIj/org.macosforge.xquartz:0
INSIDE_EMACS=23.1.1,comint
EMACSDOC=/Applications/Emacs.app/Contents/Resources/etc
_=/usr/local/bin/opam
OPAM_PACKAGE_VERSION=1.0
OPAM_PACKAGE_NAME=graphics
MAKELEVEL=
MAKEFLAGS=
The final file, graphics-14648-7afd23.env, is empty.
Edit: this answer didn't solve OP's problem. But I think this answer is still valuable, so I leave this here.
Install the OCaml compiler via OPAM, using opam switch <version number here> (Available version numbers are shown by opam switch). The graphics package is a virtual package to check the availability of the Graphics library, so opam install graphics will fail if there is no library on system's OCaml.
You can confirm the existence of the Graphics library by running ls ~/.opam/*/lib/ocaml/graphics.cma. If no file is found, then Graphics is not installed and therefore the failure of installation is the valid behavior. I don't know the exact reason why Graphics isn't installed, but maybe it's important that Graphics needs X11 to be installed. Especially, it's necessary to install XQuartz on macOS. See Shoe's answer for details. Also, re-installation of OCaml via OPAM will be needed after that. We can reinstall OCaml by running:
opam switch reinstall <version number here>

Frama-C Gui on mavericks not working

Does anyone have installed Frama-C on Mavericks ?
Because i can't install it or do not know how to install it (Gui Version)!
I already installed ocaml on my pc, but for the Gui version i need to install these libraries : Gtk, GtkSourceView, GnomeCanvas and Lablgtk2.
So i saw a previous post and did that :
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
sudo port install opam
opam init
Y
eval `opam config env`
sudo port install gtksourceview2 lablgtk2 ocaml-ocamlgraph
opam install frama-c
Im' having a problem in making "make" with frama-c which is :
Ocamlc src/logic/property_status.cmo
File "src/logic/property_status.ml", line 1444, characters 4-2027:
Error: Signature mismatch:
...
Values do not match:
val vertex_attributes :
v ->
[> `Color of int
| `Label of string
| `Shape of [> `Box | `Diamond ]
| `Style of [> `Bold | `Filled ] list
| `Width of float ]
list
is not included in
val vertex_attributes :
V.t -> Graph.Graphviz.DotAttributes.vertex list
File "src/logic/property_status.ml", line 1479, characters 16-33:
Actual declaration
make: *** [src/logic/property_status.cmo] Error 2
How am i able to solve this ?
i've just successfully installed Frama-c neon (with Gui) on maverick, using opam and homebrew.
here's my walkthrough. (Thanks to tips above)
1) Install homebrew
$ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
2) Install opam:
$ brew install opam
$ opam init
(i had to modify .profile instead of .bashrc with f option)
$ eval `opam config env`
3) Install all dependencies
$ brew install gtk+
$ brew install gtksourceview
$ brew install libgnomecanvasmm libgnomecanvas
$ brew install lablgtk
4) Install Frama-c
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ opam install frama-c
If you prefer install dependencies with macports, change the PKG_CONFIG_PATH to /opt/X11/lib/pkgconfig as explained here
Hope this help
I have successfully installed frama-c Neon with gui on mavericks using brew to get all the dependencies and using the source code in http://frama-c.com/download.html . If you try to do it using brew, you should install lablgtk from this repository(https://github.com/mht208/homebrew-formal) and only after all the other dependencies so the commands to install with gui would be(in source folder):
brew install ocaml
brew install gtk
brew install gtksourceview
brew install gnomecanvasmm gnomecanvas
brew tap mht208/formal
brew install lmht208/formal/lablgtk -with-gnomecanvas -with-gtksourceview2
./configure
make
You can also install ocamlgraph with opam, and you can compile Zarith and install in your system.
Graph.Graphviz is from OCamlGraph. There seems to be an incompatibility between the two latest versions of each.
You'll have to add version contraints on the frama-c library, or change the Style attribute to have a list of the polymorphic variant set.
EDIT -
you don't need to install ocamlgraph via port, you should install that by opam as well.

'opam install uri' failed

I'm trying to install the uri package for Opam but I keep running in to this error.
==== ERROR [while installing uri.1.3.8] ====
# opam-version 0.9.6 (latest-103-g955b7ca)
# os linux
# command ocaml setup.ml -configure --prefix /root/.opam/system
# path /root/.opam/system/build/uri.1.3.8
# exit-code 1
# env-file /root/.opam/system/build/uri.1.3.8/uri-ffb3fd.env
# stdout-file /root/.opam/system/build/uri.1.3.8/uri-ffb3fd.out
# stderr-file /root/.opam/system/build/uri.1.3.8/uri-ffb3fd.err
### stderr ###
ocamlfind: Package `compiler-libs.toplevel' not found
W: Field 'pkg_compiler_libs_toplevel' is not set: Command ''/root/.opam/system/bin/ocamlfind' query -format %d compiler-libs.toplevel > '/tmp/oasis-85d951.txt'' terminated with error code 2
E: Cannot find findlib package compiler-libs.toplevel
E: Failure("1 configuration error")
'opam install uri' failed.
I'm pretty new to Ocaml and the Opam repo. I really have no idea what is going wrong. I am running Ubuntu 12.04 and have Ocaml 3.12.1 installed.
Thanks for any insight you can provide!
I just installing uri under 3.12.1 without any issues.
3.12.1 is under your system ocaml compiler, right? and you probably installed ocaml via aptitude? In which case you need to also install ocaml-compiler-libs. There are a number of other optional packages for OCaml that are usually needed and may run into in the future --camlp4-extra is another that I see missed and oft needed. A maximal list is here.
I would also upgrade OPAM, since there were some changes to the uri package only two days ago. opam update; opam upgrade. This will require some re-compilation, and make sure you switched to the correct compiler.
The package "compiler-libs.toplevel" is missing. If I remember right, it's shipped together with ocaml and is available only since version 4.0.
Either install an older version of uri or update your compiler to 4.0. For details look here