How to install corebuild in ocaml - ocaml

I have installed opam, and after this I can access ocaml, ocamlc, buildocaml successfully.
But I am reading Real World OCaml which is asking me to run a tool called corebuild.
I am not able to install (or run) corebuild.
If I search for sudo find / -name corebuild... I can see files like
/home/abhishek/.opam/repo/default/packages/core/core.109.38.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.42.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.35.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.34.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.47.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.41.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.32.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.37.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.45.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.36.00/files/corebuild
/home/abhishek/.opam/repo/default/packages/core/core.109.40.00/files/corebuild
But still then I don't know how to run this tool.

You need to run opam install core to get corebuild.
More generally, you should look at the install instructions here, which will show you which libraries to install. Note that corebuild is a simple wrapper around ocamlbuild, and it assumes that you have core installed, and gives you the option of using it by default.

Related

How to build OCaml reference manual for an opam switch?

I like to have a local copy of the ocaml reference manual that correspond to the current version I'm using, so I used to build the documentation when I was compiling ocaml from source.
Now that I use opam, I was wondering if it was possible to ask it to build the documentation when I create a new switch.
Not directly, but you can install a matching version of the manual with
opam install ocaml-manual
You can get the reference manual and documentation for all installed packages via the odig utility,
opam install ocaml-manual odig odoc #installs necessary packages
odig odoc # builds the documentation (takes a while)
odig doc # opens the built documentation in your browser
You can also use odig to search for packages and otherwise explore your opam installation.

Installing c++ boost using cygwin: can't find configure file

I'm trying to install Boost for c++. Since I use cygwin (on Windows 7) I follow these instructions for Unix.
I start by downloading boost_1_55_0.zip from sourceforge. The instructions tell me to run tar --bzip2 -xf /path/to/boost_1_55_0.zip but this doesn't work (probably because the downloaded file is .zip and not .tar.bz2; I can't find the latter anywhere to download), so instead I use winrar and unzip it into /usr/local.
After this the header-only libraries work fine, but I need the ones where a build is necessary.
The instructions tells me to go to the boost folder and run./configure --help, but this doesn't work; I get the message -bash: ./configure: No such file or directory. So I locate the file configure in the folder /usr/local/boost_1_55_0/tools/build/v2/engine/boehm_gc, go there and try again, and this time it works: I get the help for configure.
I then try to run ./configure --prefix=/usr/local/boost_1_55_0 --enable-cplusplus but get the error message configure: error: cannot run /bin/sh ./config.sub. I try it with only one or none of the options too but that doesn't help.
Any ideas?
I don't know what guide you're following, but to install boost I have done:
cd boost
./bootstrap.sh
./b2
./b2 install
stop
As report boost doc:
If you plan to build from the Cygwin bash shell, you're actually
running on a POSIX platform and should follow the instructions for
getting started on Unix variants. Other command shells, such as
MinGW's MSYS, are not supported—they may or may not work.

Does Linux command libboost-all-dev install and compile the header-only libraries?

On Ubuntu there is a command to install boost libraries which is something like this:
sudo apt-get install libboost-all-dev
does this command also install and compile the header-only libraries?
If not, what other terminal command would I need to execute so that I can install the FULL set of boost libraries?
My ultimate aim is to know which linux terminal commands I need to install (and have available) to obtain all of the boost libraries.
As is implied by "header only", one does not need to compile the header-only libraries. They're just headers.
Now, the libbost-all-dev package does install those libraries which need compilation (in addition to the header-only libs), but it does not compile them on the spot. Ubuntu is a so-called binary distribution, which means that it distributes packages in compiled form. Apt downloads the binaries and installs them immediately. This is in contrast to e.g. Gentoo which is a source distribution (and compiles everything on your machine).
In short, no further commands are necessary. Installing libbost-all-dev will install all available Boost libraries on Ubuntu.
Your questions, as posed, makes no sense.
The Debian / Ubuntu package libboost-all-dev has dependencies, and those dependencies do include the few binary library packages (eg Boost Thread, the formatting parts of Boost DateTime, etc pp). All those will get installed.
And yes, the intent of this meta package is to install the rest of the Boost development environment.
But it does not compile anything. All Debian / Ubuntu packages are pre-generated and built-offline and "just installed" at your end.
You can inspect the content of a package by browsing the online database.
But if you are only interested in header-only libraries I suggest to download the latest version of the boost libraries right from the official website; you should also learn how to build boost from the source because it's a know-how that you are very likely to use in a near future if you are relying on that library.
An equivalent step to browsing the online database, it's about using the following command
apt-cache show <package>
so, in your case
apt-cache show libboost-all-dev
and this will give you a very specific idea about what you are about to install.

Ocaml Opam install camlbz2

Error while installing camlbz2
%opam install camlbz2
...
...
. checking bzlib.h usability... no
. checking bzlib.h presence... no
. checking for bzlib.h... no
awk: line 1: regular expression compile failed (syntax error ^* or ^+)
^+
configure: error: not found 'opam install camlbz2' failed.
I can not find anything for opam to install something like "libbz2" or whatever, any suggestions?
OPAM only deals (currently) with OCaml source packages.
Here, your problem comes from the ./configure script of the OCaml package detecting that a system package is missing, not an OCaml package (you can see that it has searched for files with a .h extension, i.e. a C include file).
To fix your problem, you need to install this system package. As Ontologiae said, the missing package is related to the libbz2 library, and include files are usually provided in development packages, so you should probably try to install libbz2-dev using the system installer of your OS. This package is not in OCaml, so there is no risk of messing up with OPAM installation.
Note that, since you use opam config -env to set your OCaml environment, even if you install OCaml packages with your system installer, there should be no bad interaction with packages installed in your homedir by OPAM.
You need to install the libbz2 C library. So, check your package system and install it.
In Debian, it's the package "libbz2-dev" (so sudo apt-get install libbz2-dev)

Enabling OpenGL in wxWidgets

I installed the wxWidgets source code, compiled it and am linking the libraries thus obtained with my application code. Now I need to use OpenGL in my wxWidgets application. How do I enable this?
For building on Windows with project files:
Assume $(WXWIDGETSROOT) is the root directory of your wxWidgets installation.
Open the file $(WXWIDGETSROOT)\include\wx\msw\setup.h
Search for the #define for wxUSE_GLCANVAS.
Change its value from 0 to 1.
Recompile the library.
For building on Linux and other ./configure based platforms:
Just use ./configure --with-opengl
(A mashup answer from two partial answers given by others)
If you're using configure to build wxWidgets you just need to add --with-opengl to your command line.
Just to add a little bit... If you're on linux you need to watch the logs when running configure. If it can't find opengl dev packages then it will turn opengl off with one line of warning which is easy to miss.
run it like this to make it more obvious what development libraries you're actually missing (it looks like the --with-opengl is on by default in 3.0.0 and possibly earlier versions of wxwidgets, but it can't hurt to include it I suspect).
./configure --with-opengl > configure.log
Once configure can find all the dev libs you think you're going to use you need to rebuild wxwidgets:
make
sudo make install
I had to install these on linux mint to make wxwidget's configure happy as far as opengl was concerned (and should also work for ubuntu) to get the dev libs I needed.
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
(Assume $(WX_WIDGETS_ROOT) is the root directory of your wxWidgets installation.)
Open the file $(WX_WIDGETS_ROOT)\include\wx\msw\setup.h
Search and find the option wxUSE_GLCANVAS. Change its value from 0 to 1.
Recompile the library.