Giter VIP home page Giter VIP logo

Comments (13)

axiles avatar axiles commented on July 26, 2024

Hi,

For compiling from the git repo, you have to generate the files './configure', 'Makefile.in', etc...

You can do this by just running 'autoreconf -i'. The will run autoconf, automake, etc... in the correct order. Of course, you need to have autoreconf installed.

For simplicity, I have just added a file './autogen.sh' which just call autoreconf.

The command:

'ocamlbuild -use-ocamlfind -pkg efl an_example.byte'

can only be run once ocaml-efl have been installed (after 'make install')

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

Thanks for helping me.
I have the same problems, what I have done:

./autogen.sh
./configure
make

The make command generated a lot of errors that you can see here:
https://gist.github.com/cedlemo/32493ab0915734edd040#file-ocaml-efl-make-log

I was able to install the libs:

sudo make install
Mot de passe [sudo] de cedlemo :
Installed /usr/local/lib/ocaml/4.02.3/efl/efl.a
Installed /usr/local/lib/ocaml/4.02.3/efl/libefl_stubs.a
Installed /usr/local/lib/ocaml/4.02.3/efl/dllefl_stubs.so
Installed /usr/local/lib/ocaml/4.02.3/efl/efl.cmxs
Installed /usr/local/lib/ocaml/4.02.3/efl/efl.cmxa
Installed /usr/local/lib/ocaml/4.02.3/efl/efl.cmi
Installed /usr/local/lib/ocaml/4.02.3/efl/efl.cma
Installed /usr/local/lib/ocaml/4.02.3/efl/META
Updated /usr/lib/ocaml/ld.conf

But I am not able to build one of your example:

cd examples
ocamlbuild -use-ocamlfind -pkg efl bubble_example_01.byte
+ ocamlfind ocamlc -linkpkg -package efl bubble_example_01.cmo -o bubble_example_01.byte
ocamlfind: Package `efl' not found
Command exited with code 2.
Hint: Recursive traversal of subdirectories was not enabled for this build,
  as the working directory does not look like an ocamlbuild project (no
  '_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,
  you should add the option "-r" or create an empty '_tags' file.

  To enable recursive traversal for some subdirectories only, you can use the
  following '_tags' file:

      true: -traverse
      <dir1> or <dir2>: traverse

Compilation unsuccessful after building 3 targets (2 cached) in 00:00:00.

from ocaml-efl.

axiles avatar axiles commented on July 26, 2024

Sorry, I did not see you installed ocaml with opam.

First, clean up what you did:
sudo make uninstall
make distclean

Now, do:
./configure --prefix=$(opam config var prefix) OCAMLFIND_DESTDIR=$(opam config var lib)
make
make examples # This should build all the examples
make install # By default, your opam directory is inside $HOME and you don't need sudo

NB1: Apparently, the log you posted for 'make' only contained warnings, and no errors. What is surprising, is that is that it also gives warnings in the EFL headers. How did you installed the EFL/Elementary ? By compiling the sources or by your package manager ?

NB2: There is an opam package available for the EFL, but its a few months old. However, there has been a new release today, and the opam package should be available in a few days.

NB3: This is a general remark about ocamlbuilld. Don't run ocamlbuild in a subdirectory of a directory where ocamlbuild has already been runed. If you want to test:
'ocamlbuild -use-ocamlfind -pkg efl something.byte'
you should create a fresh directory (for example ~/test_ocaml_efl) and copy/write the .ml files in it.

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

The make command works, but I have an error with the make examples

make examples
Finished, 0 targets (0 cached) in 00:00:00.
+ ocamlc.opt -I src -dllpath _build/src -dllpath /home/cedlemo/.opam/system/lib/stublibs -dllib -lefl_stubs -cclib '-lelementary -lefl -leina -lpthread -leet -levas -lecore -lecore_evas -lecore_file -lecore_input -ledje -leo -lethumb_client -lemotion -lecore_imf -lecore_con -leldbus -lefreet -lefreet_mime -lefreet_trash -leio -ldl -lm' src/efl.cmo examples/actionslider_example_01.cmo src/libefl_stubs.a -o examples/actionslider_example_01.byte
File "_none_", line 1:
Error: Error on dynamically loaded library: ./src/dllefl_stubs.so: ./src/dllefl_stubs.so: undefined symbol: copy_Eina_List_Evas_Object
Command exited with code 2.
Compilation unsuccessful after building 1053 targets (899 cached) in 00:00:04.
Makefile:547 : la recette pour la cible « examples » a échouée

Here is the ouput of the make install that I tried even if the previous one failed.

make install
Installed /home/cedlemo/.opam/system/lib/efl/efl.a
Installed /home/cedlemo/.opam/system/lib/efl/libefl_stubs.a
Installed /home/cedlemo/.opam/system/lib/efl/efl.cmxs
Installed /home/cedlemo/.opam/system/lib/efl/efl.cmxa
Installed /home/cedlemo/.opam/system/lib/efl/efl.cmi
Installed /home/cedlemo/.opam/system/lib/efl/efl.cma
Installed /home/cedlemo/.opam/system/lib/efl/META
Installed /home/cedlemo/.opam/system/lib/stublibs/dllefl_stubs.so
Installed /home/cedlemo/.opam/system/lib/stublibs/dllefl_stubs.so.owner
ocamlfind: [WARNING] You have installed DLLs but the directory /home/cedlemo/.opam/system/lib/stublibs is not mentioned in ld.conf
../../install-sh: *.byte does not exist.
../../install-sh: *.native does not exist.
The examples have been installed as: /home/cedlemo/.opam/system/bin/ocaml-efl_***

How did you installed the EFL/Elementary ? By compiling the sources or by your package manager ?

Nothing fancy, I used the ArchLinux package manager.

FYI:

yaourt -Qi efl
Nom                      : efl
Version                  : 1.16.0-3
Description              : Enlightenment Foundation Libraries
Architecture             : x86_64
URL                      : http://www.enlightenment.org
Licences                 : BSD  LGPL2.1  GPL2  custom
Groupes                  : --
Fournit                  : --
Dépend de                : bullet  libjpeg-turbo  gst-plugins-base  luajit  curl  fribidi  libpulse  libxcomposite  libxinerama  libxrandr  libxss  libinput  libxcursor  libxp  libwebp
                           shared-mime-info  libxkbcommon  wayland  lz4  openjpeg  avahi
Dépendances opt.         : python2: einabench-cmp [installé]
Requis par               : elementary  emotion_generic_players  evas_generic_loaders
Optionnel pour           : --
Est en conflit avec      : --
Remplace                 : ecore  edje  eet  eeze  efreet  eina  eio  embryo  emotion  ethumb  evas
Taille installée         : 17,93 MiB
Paqueteur                : Jan Alexander Steffens (heftig) <[email protected]>
Compilé le               : sam. 26 déc. 2015 03:46:17 CET
Installé le              : sam. 02 janv. 2016 09:33:27 CET
Motif d’installation     : Explicitement installé
Script d’installation    : Oui
Validé par               : Signature

and

pkg-config --cflags efl
-I/usr/include/efl-1 -I/usr/include/eo-1 -I/usr/include/efl-1 -I/usr/include/eina-1 -I/usr/include/eina-1/eina

There is an opam package available for the EFL, but its a few months old. However, there has been a new release today, and the opam package should be available in a few days.

Ok, but sometimes I prefer to use the github version. It helps me to learn faster (the hard way you know) and sometimes I can give some feedback or help (well not for now with Ocaml).

This is a general remark about ocamlbuilld. Don't run ocamlbuild in a subdirectory of a directory where ocamlbuild has already been runed. If you want to test:
'ocamlbuild -use-ocamlfind -pkg efl something.byte'
you should create a fresh directory (for example ~/test_ocaml_efl) and copy/write the .ml files in it.

Thanks for the informations, as a beginner with Ocaml, I find that the process to produce executable is not very obvious or clear at first sight. I will have to read more on it I guess.

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

I have uninstalled everything and installed the ocaml-efl 1.17 via opam.
I have copied the examples in a new directory and tried to build one example:

ocamlbuild -use-ocamlfind -pkg efl bubble_example_01.byte
+ ocamlfind ocamlc -linkpkg -package efl bubble_example_01.cmo -o bubble_example_01.byte
File "_none_", line 1:
Error: Error on dynamically loaded library: /home/cedlemo/.opam/system/lib/stublibs/dllefl_stubs.so: /home/cedlemo/.opam/system/lib/stublibs/dllefl_stubs.so: undefined symbol: copy_Eina_List_Evas_Object
Command exited with code 2.
Hint: Recursive traversal of subdirectories was not enabled for this build,
  as the working directory does not look like an ocamlbuild project (no
  '_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,
  you should add the option "-r" or create an empty '_tags' file.

  To enable recursive traversal for some subdirectories only, you can use the
  following '_tags' file:

      true: -traverse
      <dir1> or <dir2>: traverse

Compilation unsuccessful after building 3 targets (0 cached) in 00:00:00.

from ocaml-efl.

axiles avatar axiles commented on July 26, 2024

Could you give me the build log when your are trying to compile the first C example given here:

https://www.enlightenment.org/docs/efl/start

Just, to check you still gets all the warnings you posted.

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

No I have no warnings or errors, the two first examples can be built.

I will try to test in a clean install in a VM of ArchLInux in order to see if its my machine that have a specific configuration. I can make a vagrant file for you (using Virtualbox and an ArchLinux) if you are interested.

from ocaml-efl.

axiles avatar axiles commented on July 26, 2024

Have you previously runed the command:

eval $(opam config env)

which should be run every time you open a terminal (or you can put it in your ~/.bashrc) ?

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

I am using the fish shell but I have this in my configuration file:

set fisher_home ~/.config/fish/fisherman
set fisher_config ~/.config/fisherman
source $fisher_home/config.fish

set --erase fish_greeting
set -gx TERM "xterm-256color"
set -gx NVIM_LISTEN_ADDRESS "/tmp/nvim.sock"

# Load opam variables
source /home/cedlemo/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true

The last line does the same things :

init.fish

# Load the environment variables
source /home/cedlemo/.opam/opam-init/variables.fish > /dev/null 2> /dev/null; or true

variables.fish

# Current opam switch binary dir
set -gx PATH "/home/cedlemo/.opam/system/bin" $PATH;
if [ 0 -eq (count $MANPATH) ]; set -gx MANPATH ""; end;
# Current opam switch man dir
set -gx MANPATH $MANPATH "/home/cedlemo/.opam/system/man";
# Updated by compiler system
set -gx CAML_LD_LIBRARY_PATH "/home/cedlemo/.opam/system/lib/stublibs:/usr/lib/ocaml/stublibs";

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

So I tested in a newly created VM (virtualbox) and I had the same issue. If you wan to try :
use vagrant and the archlinux box from https://github.com/terrywang/vagrantboxes/blob/master/archlinux-x86_64.md:

vagrant box add archlinux-x86_64 http://cloud.terry.im/vagrant/archlinux-x86_64.box
mkdir test_arch_64_ocaml_efl

In this directory add the following vargant file named "Vagrant"

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
  config.vm.box = "archlinux-x86_64"

   config.vm.provider "virtualbox" do |vb|
     # Display the VirtualBox GUI when booting the machine
     vb.gui = true

     # Customize the amount of memory on the VM:
     vb.memory = "1024"
   end
  shell_script =  <<-SHELL
  sudo pacman -Syu --noconfirm
  yaourt --noconfirm -S git opam efl elementary ocaml ocaml-findlib ocaml-ctypes unzip 
  opam init
  source /home/vagrant/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
  opam install efl
  git clone https://github.com/axiles/ocaml-efl
  cp -rf ocaml-efl/examples efl_examples
  cd efl_examples
  eval $(opam config env)
  ocamlbuild -use-ocamlfind -pkg efl bubble_example_01.byte
  SHELL
  config.vm.provision "shell", inline: shell_script, privileged: false
end

then do

cd test_arch_64_ocaml_efl
vagrant up --provision

It will take some times but at the end I have this message:

==> default: ocamlfind ocamldep -package efl -modules bubble_example_01.ml > bubble_example_01.ml.depends
==> default: ocamlfind ocamlc -c -package efl -o bubble_example_01.cmo bubble_example_01.ml
==> default: ocamlfind ocamlc -linkpkg -package efl bubble_example_01.cmo -o bubble_example_01.byte
==> default: + ocamlfind ocamlc -linkpkg -package efl bubble_example_01.cmo -o bubble_example_01.byte
==> default: File "_none_", line 1:
==> default: Error: Error on dynamically loaded library: /home/vagrant/.opam/system/lib/stublibs/dllefl_stubs.so: /home/vagrant/.opam/system/lib/stublibs/dllefl_stubs.so: undefined symbol: copy_Eina_List_Evas_Object
==> default: Command exited with code 2.
==> default: Hint: Recursive traversal of subdirectories was not enabled for this build,
==> default:   as the working directory does not look like an ocamlbuild project (no
==> default:   '_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,
==> default:   you should add the option "-r" or create an empty '_tags' file.
==> default:   
==> default:   To enable recursive traversal for some subdirectories only, you can use the
==> default:   following '_tags' file:
==> default:   
==> default:       true: -traverse
==> default:       <dir1> or <dir2>: traverse
==> default:       

You can use vagrant ssh in order to investigate (I don't know is you have already used vagrant or not)

from ocaml-efl.

axiles avatar axiles commented on July 26, 2024

Thank you.
I will investigate.

from ocaml-efl.

axiles avatar axiles commented on July 26, 2024

Ok, I think I solved the issue: it was about not having inline prototype functions.
You can try to buil ocaml-efl with the last git version.

I remind you that for opam you have to do the configuration step as follows:
./configure --prefix=$(opam config var prefix) OCAMLFIND_DESTDIR=$(opam config var lib)

from ocaml-efl.

cedlemo avatar cedlemo commented on July 26, 2024

Ok, I think I solved the issue

Yes it works, everything is compiling.

Just to sumup (using bash):

./autoconf.sh
#for an installation in the opam dsubdirectories
./configure --prefix=$(opam config var prefix) OCAMLFIND_DESTDIR=$(opam config var lib)
make examples
make install

Thanks for your help. I will try to do the same with the fish shell and try your examples.

from ocaml-efl.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.