cppit / jucipp

A lightweight & cross-platform IDE supporting the most recent C++ standards. This project has moved to https://gitlab.com/cppit/jucipp.
https://gitlab.com/cppit/jucipp
MIT License
883 stars 97 forks source link

Build errors on FreeBSD #253

Closed NuLL3rr0r closed 8 years ago

NuLL3rr0r commented 8 years ago

I'm trying to build juCi++ on FreeBSD 10.3-Release which is my main development box. Unfortunately I'm getting a few build errors:

First it was not able to find libclang.so. That's because FreeBSD uses a different directory structure in order to allow the user install different compiler versions. So, I made the following changes:

cmake_modules/FindLibClang.cmake

find_path(LIBCLANG_INCLUDE_DIR clang-c/Index.h
  PATHS ${libclang_llvm_header_search_paths}
  PATH_SUFFIXES LLVM/include llvm33/include llvm34/include llvm35/include llvm36/include llvm37/include llvm38/include #Windows package from http://llvm.org/releases/
  DOC "The path to the directory that contains clang-c/Index.h")

# On Windows with MSVC, the import library uses the ".imp" file extension
# instead of the comon ".lib"
if (MSVC)
  find_file(LIBCLANG_LIBRARY libclang.imp
    PATH_SUFFIXES LLVM/lib llvm33/lib llvm34/lib llvm35/lib llvm36/lib llvm37/lib llvm38/lib
    DOC "The file that corresponds to the libclang library.")
endif()

find_library(LIBCLANG_LIBRARY NAMES libclang.imp libclang clang
  PATHS ${libclang_llvm_lib_search_paths}
  PATH_SUFFIXES LLVM/lib llvm33/lib llvm34/lib llvm35/lib llvm36/lib llvm37/lib llvm38/lib #Windows package from http://llvm.org/releases/
  DOC "The file that corresponds to the libclang library.")

Then cmake was successful:

-- The C compiler identification is Clang 3.4.1
-- The CXX compiler identification is Clang 3.4.1
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LibClang: /usr/local/llvm38/lib/libclang.so  
-- Boost version: 1.55.0
-- Found the following Boost libraries:
--   regex
--   system
--   filesystem
-- Found ASPELL: /usr/local/lib/libaspell.so  
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.28") 
-- Checking for module 'gtkmm-3.0'
--   Found gtkmm-3.0, version 3.16.0
-- Checking for module 'gtksourceviewmm-3.0'
--   Found gtksourceviewmm-3.0, version 3.2.0
-- Checking for module 'libgit2'
--   Found libgit2, version 0.24.0
-- Could NOT find plantuml (missing:  PLANTUML_JARFILE) 
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/babaei/Desktop/jucipp/build

Now, I'm getting the following error at the build stage:

[  9%] Building CXX object src/CMakeFiles/project_shared.dir/git.cc.o
/home/babaei/Desktop/jucipp/src/git.cc:106:44: error: no member named
      'FILE_MONITOR_WATCH_MOVES' in 'Gio::FileMonitorFlags'; did you mean
      'G_FILE_MONITOR_WATCH_MOVES'?
  ...Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     G_FILE_MONITOR_WATCH_MOVES
/usr/local/include/glib-2.0/gio/gioenums.h:347:3: note: 
      'G_FILE_MONITOR_WATCH_MOVES' declared here
  G_FILE_MONITOR_WATCH_MOVES      = (1 << 3)
  ^
/home/babaei/Desktop/jucipp/src/git.cc:106:26: error: no matching member
      function for call to 'monitor_directory'
  monitor=git_directory->monitor_directory(Gio::FileMonitorFlags::FILE_M...
      ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/local/include/giomm-2.4/giomm/file.h:2735:29: note: candidate function not
      viable: no known conversion from 'GFileMonitorFlags' to 'const
      Glib::RefPtr<Cancellable>' for 1st argument
  Glib::RefPtr<FileMonitor> monitor_directory(const Glib::RefPtr<Cancell...
                        ^
/usr/local/include/giomm-2.4/giomm/file.h:2743:29: note: candidate function not
      viable: no known conversion from 'GFileMonitorFlags' to
      'Gio::FileMonitorFlags' for 1st argument
  Glib::RefPtr<FileMonitor> monitor_directory(FileMonitorFlags flags = F...
                        ^
2 errors generated.
*** Error code 1

Stop.
make[2]: stopped in /usr/home/babaei/Desktop/jucipp/build
*** Error code 1

Stop.
make[1]: stopped in /usr/home/babaei/Desktop/jucipp/build
*** Error code 1

Stop.
make: stopped in /usr/home/babaei/Desktop/jucipp/build

It seems cmake picks up the wrong version of gtkmm library since I do have two different version of it installed at the same time (despite the fact that it says it picked up version 3 of the library):

    $ pkg info | grep gtkmm
    gtkmm24-2.24.4_2               C++ wrapper for Gtk+
    gtkmm30-3.16.0                 C++ wrapper for Gtk+3

I'm really excited about this brand new IDE and like to check it out, or even create a port for it. So, any help would be greatly appreciated.

eidheim commented 8 years ago

Thank you for testing on FreeBSD. There seems to be a version mismatch between your glib and glibmm. We should really test glibmm version instead of glib version here: https://github.com/cppit/jucipp/blob/master/src/git.cc#L107. I'll try fix it now.

eidheim commented 8 years ago

Would you mind test the above commit?

eidheim commented 8 years ago

Sorry, there was a similar check in src/directories.cc as well. I did a rebase too, please use the latest commit above.

NuLL3rr0r commented 8 years ago

Thank you so much for the quick reply. I'm not at home right now. But, I'll try to test and report back as soon as I can.

NuLL3rr0r commented 8 years ago

I just checked out the master branch and I'm getting the following error:

[ 12%] Building CXX object src/CMakeFiles/project_shared.dir/git.cc.o
/home/babaei/Desktop/jucipp-master/src/git.cc:108:44: error: no member named
      'FILE_MONITOR_WATCH_MOVES' in 'Gio::FileMonitorFlags'; did you mean
      'G_FILE_MONITOR_WATCH_MOVES'?
  monitor=git_directory->monitor_directory(Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES);
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                           G_FILE_MONITOR_WATCH_MOVES
/usr/local/include/glib-2.0/gio/gioenums.h:347:3: note: 'G_FILE_MONITOR_WATCH_MOVES' declared
      here
  G_FILE_MONITOR_WATCH_MOVES      = (1 << 3)
  ^
/home/babaei/Desktop/jucipp-master/src/git.cc:108:26: error: no matching member function for
      call to 'monitor_directory'
  monitor=git_directory->monitor_directory(Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES);
          ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/local/include/giomm-2.4/giomm/file.h:2735:29: note: candidate function not viable: no
      known conversion from 'GFileMonitorFlags' to 'const Glib::RefPtr<Cancellable>' for 1st
      argument
  Glib::RefPtr<FileMonitor> monitor_directory(const Glib::RefPtr<Cancellable>& cancell...
                            ^
/usr/local/include/giomm-2.4/giomm/file.h:2743:29: note: candidate function not viable: no
      known conversion from 'GFileMonitorFlags' to 'Gio::FileMonitorFlags' for 1st argument
  Glib::RefPtr<FileMonitor> monitor_directory(FileMonitorFlags flags = FILE_MONITOR_NONE);
                            ^
2 errors generated.
gmake[2]: *** [src/CMakeFiles/project_shared.dir/build.make:159: src/CMakeFiles/project_shared.dir/git.cc.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:125: src/CMakeFiles/project_shared.dir/all] Error 2
gmake: *** [Makefile:150: all] Error 2
eidheim commented 8 years ago

What version of glib and glibmm do you have?

NuLL3rr0r commented 8 years ago
$ pkg info | grep glib
dbus-glib-0.104                GLib bindings for the D-BUS messaging system
glib-2.46.2_2                  Some useful routines of C programming (current stable version)
glib-networking-2.46.1_1       Network-related giomodules for glib
glibmm-2.44.0,1                C++ interfaces for glib2
json-glib-1.1.2                JSON (RFC 4627) interface for Glib
libgit2-glib-0.24.0            Glib wrapper library around the libgit2 git access library
poppler-glib-0.40.0            GLib bindings to poppler
taglib-1.10                    Library for manipulating ID3 tags and Ogg comments
telepathy-glib-0.24.1          GLib utility library for the Telepathy framework
eidheim commented 8 years ago

That is strange, you have the required glibmm version (2.44) for Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES. You can however replace Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES with Gio::FileMonitorFlags::FILE_MONITOR_SEND_MOVED in src/git.cc and src/directories.cc.

eidheim commented 8 years ago

Or, is there a separate giomm package on FreeBSD? In that case, what version is your gio and giomm?

NuLL3rr0r commented 8 years ago

Or, is there a separate giomm package on FreeBSD? In that case, what version is your gio and giomm?

No, there is not: https://www.freebsd.org/cgi/ports.cgi?query=giomm&stype=name&sektion=all

NuLL3rr0r commented 8 years ago

That is strange, you have the required glibmm version (2.44) for Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES. You can however replace Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES with Gio::FileMonitorFlags::FILE_MONITOR_SEND_MOVED in src/git.cc and src/directories.cc.

Now I get a linker error despite the fact that I have /usr/local/lib/libgtkmm-3.0.so on my system:

[41/41] Linking CXX executable src/juci
FAILED: src/juci 
: && /usr/bin/CC   -DJUCI_VERSION=\"1.2.1\" -std=c++1y -pthread -Wall -Wextra -Wno-unused-parameter -Wno-reorder -O3   src/CMakeFiles/project_shared.dir/cmake.cc.o src/CMakeFiles/project_shared.dir/ctags.cc.o src/CMakeFiles/project_shared.dir/dispatcher.cc.o src/CMakeFiles/project_shared.dir/filesystem.cc.o src/CMakeFiles/project_shared.dir/git.cc.o src/CMakeFiles/project_shared.dir/project_build.cc.o src/CMakeFiles/project_shared.dir/source.cc.o src/CMakeFiles/project_shared.dir/source_clang.cc.o src/CMakeFiles/project_shared.dir/source_diff.cc.o src/CMakeFiles/project_shared.dir/source_spellcheck.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/CodeCompleteResults.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/CompilationDatabase.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/CompileCommand.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/CompileCommands.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/CompletionString.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Cursor.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Diagnostic.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Index.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/SourceLocation.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/SourceRange.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Token.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Tokens.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/TranslationUnit.cc.o src/CMakeFiles/project_shared.dir/__/libclangmm/src/Utility.cc.o src/CMakeFiles/project_shared.dir/__/tiny-process-library/process.cpp.o src/CMakeFiles/project_shared.dir/__/tiny-process-library/process_unix.cpp.o src/CMakeFiles/juci.dir/config.cc.o src/CMakeFiles/juci.dir/dialogs.cc.o src/CMakeFiles/juci.dir/dialogs_unix.cc.o src/CMakeFiles/juci.dir/directories.cc.o src/CMakeFiles/juci.dir/entrybox.cc.o src/CMakeFiles/juci.dir/info.cc.o src/CMakeFiles/juci.dir/juci.cc.o src/CMakeFiles/juci.dir/menu.cc.o src/CMakeFiles/juci.dir/notebook.cc.o src/CMakeFiles/juci.dir/project.cc.o src/CMakeFiles/juci.dir/selectiondialog.cc.o src/CMakeFiles/juci.dir/terminal.cc.o src/CMakeFiles/juci.dir/tooltips.cc.o src/CMakeFiles/juci.dir/window.cc.o  -o src/juci  -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lpthread -lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lgtksourceviewmm-3.0 -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtksourceview-3.0 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lpthread -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl /usr/local/lib/libboost_system.so /usr/local/lib/libboost_filesystem.so /usr/local/llvm36/lib/libclang.so /usr/local/lib/libaspell.so -lgit2 -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtksourceviewmm-3.0 -lgtksourceview-3.0 /usr/local/lib/libboost_system.so /usr/local/lib/libboost_filesystem.so /usr/local/llvm36/lib/libclang.so /usr/local/lib/libaspell.so -lgit2 -Wl,-rpath,/usr/local/lib:/usr/local/llvm36/lib: && :
/usr/bin/ld: cannot find -lgtkmm-3.0
c++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
NuLL3rr0r commented 8 years ago

I should not that traditionally FreeBSD systems install all packages inside /usr/local and leaves the base system untouched by ports and packages. e.g:

/usr/local/lib
/usr/local/include
/usr/local/share
/usr/local/etc
NuLL3rr0r commented 8 years ago

Or, is there a separate giomm package on FreeBSD? In that case, what version is your gio and giomm?

No, there is not: https://www.freebsd.org/cgi/ports.cgi?query=giomm&stype=name&sektion=all

$ pkg which /usr/local/include/giomm-2.4/giomm/file.h
/usr/local/include/giomm-2.4/giomm/file.h was installed by package glibmm-2.44.0,1
eidheim commented 8 years ago

I fixed the gio check in https://github.com/cppit/jucipp/tree/freebsd I hope.

Regarding the linking error, try add -L/usr/local/lib to the compile flags, or modify the path so that the libgtkmm-3.0.so(or something similar) library is found.

NuLL3rr0r commented 8 years ago

OK, thanks. I checked out the freebsd branch and the gio check issue still persists:

$ git status
On branch freebsd
Your branch is up-to-date with 'origin/freebsd'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   ../tiny-process-library (new commits)

no changes added to commit (use "git add" and/or "git commit -a")

The actual build error:

Scanning dependencies of target project_shared
[  2%] Building CXX object src/CMakeFiles/project_shared.dir/cmake.cc.o
[  4%] Building CXX object src/CMakeFiles/project_shared.dir/ctags.cc.o
[  7%] Building CXX object src/CMakeFiles/project_shared.dir/dispatcher.cc.o
[  9%] Building CXX object src/CMakeFiles/project_shared.dir/filesystem.cc.o
[ 12%] Building CXX object src/CMakeFiles/project_shared.dir/git.cc.o
/usr/home/babaei/Desktop/jucipp-freebsd/src/git.cc:108:44: error: no member named
      'FILE_MONITOR_WATCH_MOVES' in 'Gio::FileMonitorFlags'; did you mean
      'G_FILE_MONITOR_WATCH_MOVES'?
  monitor=git_directory->monitor_directory(Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES);
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                           G_FILE_MONITOR_WATCH_MOVES
/usr/local/include/glib-2.0/gio/gioenums.h:347:3: note: 'G_FILE_MONITOR_WATCH_MOVES' declared
      here
  G_FILE_MONITOR_WATCH_MOVES      = (1 << 3)
  ^
/usr/home/babaei/Desktop/jucipp-freebsd/src/git.cc:108:26: error: no matching member function
      for call to 'monitor_directory'
  monitor=git_directory->monitor_directory(Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES);
          ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/local/include/giomm-2.4/giomm/file.h:2735:29: note: candidate function not viable: no
      known conversion from 'GFileMonitorFlags' to 'const Glib::RefPtr<Cancellable>' for 1st
      argument
  Glib::RefPtr<FileMonitor> monitor_directory(const Glib::RefPtr<Cancellable>& cancell...
                            ^
/usr/local/include/giomm-2.4/giomm/file.h:2743:29: note: candidate function not viable: no
      known conversion from 'GFileMonitorFlags' to 'Gio::FileMonitorFlags' for 1st argument
  Glib::RefPtr<FileMonitor> monitor_directory(FileMonitorFlags flags = FILE_MONITOR_NONE);
                            ^
2 errors generated.
gmake[2]: *** [src/CMakeFiles/project_shared.dir/build.make:159: src/CMakeFiles/project_shared.dir/git.cc.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:125: src/CMakeFiles/project_shared.dir/all] Error 2
gmake: *** [Makefile:150: all] Error 2

In addition to that now I noticed that CMake is not able to find liblldb in both master and freebsd branches. In the cmake_modules/FindLibClang.cmake file I manipulated from v1.2.0 tag there is no warning about liblldb is missing:

-- The C compiler identification is Clang 3.4.1
-- The CXX compiler identification is Clang 3.4.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/CC
-- Check for working CXX compiler: /usr/bin/CC -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LibClang: /usr/local/llvm36/lib/libclang.so  
liblldb not found. Building juCi++ without debugging support
-- Boost version: 1.55.0
-- Found the following Boost libraries:
--   system
--   filesystem
-- Found ASPELL: /usr/local/lib/libaspell.so  
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.28") 
-- Checking for module 'gtkmm-3.0'
--   Found gtkmm-3.0, version 3.16.0
-- Checking for module 'gtksourceviewmm-3.0'
--   Found gtksourceviewmm-3.0, version 3.2.0
-- Checking for module 'libgit2'
--   Found libgit2, version 0.24.0
-- Could NOT find plantuml (missing:  PLANTUML_JARFILE) 
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/home/babaei/Desktop/jucipp-freebsd/build
eidheim commented 8 years ago

Thank you very much for testing this! According to https://developer.gnome.org/glibmm/stable/group__giommEnums.html#ga469f795e9a4dddb2421c0e5568be6649, the check is correct in master branch. Not sure how to fix the compilation error actually, other than doing the manual replace.

Where is your liblldb located? I might need the full path and file name.

NuLL3rr0r commented 8 years ago

OK, I found the issue with: liblldb not found. Building juCi++ without debugging support

I have 3 versions of LLVM installed at the same time:

/usr/local/llvm36
/usr/local/llvm37
/usr/local/llvm38

Now if change the following lines inside ./cmake_modules/FindLibClang.cmake from

find_path(LIBCLANG_INCLUDE_DIR clang-c/Index.h
  PATHS ${libclang_llvm_header_search_paths}
  PATH_SUFFIXES LLVM/include #Windows package from http://llvm.org/releases/
    llvm33/include llvm34/include llvm35/include llvm36/include llvm37/include llvm38/include llvm39/include # FreeBSD
  DOC "The path to the directory that contains clang-c/Index.h")

find_library(LIBCLANG_LIBRARY NAMES libclang.imp libclang clang
  PATHS ${libclang_llvm_lib_search_paths}
  PATH_SUFFIXES LLVM/lib #Windows package from http://llvm.org/releases/
    llvm33/lib llvm34/lib llvm35/lib llvm36/lib llvm37/lib llvm38/lib llvm39/lib # FreeBSD
  DOC "The file that corresponds to the libclang library.")

To, for example

find_path(LIBCLANG_INCLUDE_DIR clang-c/Index.h
  PATHS ${libclang_llvm_header_search_paths}
  PATH_SUFFIXES LLVM/include #Windows package from http://llvm.org/releases/
    llvm38/include # FreeBSD
  DOC "The path to the directory that contains clang-c/Index.h")

find_library(LIBCLANG_LIBRARY NAMES libclang.imp libclang clang
  PATHS ${libclang_llvm_lib_search_paths}
  PATH_SUFFIXES LLVM/lib #Windows package from http://llvm.org/releases/
    llvm38/lib # FreeBSD
  DOC "The file that corresponds to the libclang library.")

CMake won't get confused and won't spit out that warning.

NuLL3rr0r commented 8 years ago

Thank you very much for testing this! According to https://developer.gnome.org/glibmm/stable/group__giommEnums.html#ga469f795e9a4dddb2421c0e5568be6649, the check is correct in master branch. Not sure how to fix the compilation error actually, other than doing the manual replace.

Maybe an #if defined ( __FreeBSD__ ) is necessary on that check.

I'll try to make it work and make the necessary patches with your approval.

eidheim commented 8 years ago

Thank you, I'll change the search order so that the newest version is checked first. I also removed older llvm versions. llvm 3.6 should probably be minimum.

eidheim commented 8 years ago

That would be great @NuLL3rr0r

eidheim commented 8 years ago

When I think about it, the gio build error might be a glibmm issue on freebsd, so the #if check might be needed as a workaround.

NuLL3rr0r commented 8 years ago

Well, I investigated that http://svnweb.freebsd.org/ports/head/devel/glibmm/ In the Makefile the MASTER_SITES variable points to gnome official website and if you check the distinfo file the sha hash is the same. Moreover, in FreeBSD Ports system if they patch a port/package there should be a files folder too which is not there (all patch files go into that folder). So, the package is a vanilla upstream package.

eidheim commented 8 years ago

The file operations are very platform dependent. What I'm thinking is that, Gio::FileMonitorFlags::FILE_MONITOR_WATCH_MOVES is missing or not implemented in your version of glibmm. Since it might be implemented in glib (the C-library), this might be an issue with glibmm where there might be an incorrect platform check. I've seen this before for gtksourceview (and posted a fix) for MSYS2. This is only a hunch though, the problem might lie elsewhere.

NuLL3rr0r commented 8 years ago

Thanks for the info, I'm not familiar with these gtk stuff. So, perhaps your guess might be correct. I checked this package maintainer's email and it's the FreeBSD Gnome Team at gnome@FreeBSD.org. Probably they are the best to ask.

eidheim commented 8 years ago

I'll have a look at the glibmm bug reports and the source code later in a day or two. We probably have to add the #if defined ( __FreeBSD__ ) expression anyway though, since a potential fix would not arrive until a later glibmm version.

NuLL3rr0r commented 8 years ago

Thank you so much. Now I'm able to build and install it on my FreeBSD system. I'll try to create a FreeBSD port and submit it for review on FreeBSD ports tree.

Looks promising BTW! Thanks for the great work.

eidheim commented 8 years ago

Thank you as well! Let me know if there are any more issues on FreeBSD. I guess it's about time I give FreeBSD a try too, maybe next week:)

NuLL3rr0r commented 8 years ago

My pleasure! That's awesome :) I'm sure you'll like it.