I'm building amarok 3.5.13. I receive this message:
Looking for linux/inotify.h - not found
The header file does exist at /usr/include/linux.inotify.h.
Any ideas for the message?
Darrell
I'm building amarok 3.5.13. I receive this message:
Looking for linux/inotify.h - not found
The header file does exist at /usr/include/linux.inotify.h.
Any ideas for the message?
Darrell
Most distros use sys/inotify.h instead (glibc builtin IIRC). I would consider the incomplete inotify checks in Amarok a bug and update them from the tdelibs inotify checks I recently added.
Tim
I'm building amarok 3.5.13. I
receive this message:
Looking for linux/inotify.h - not found
The header file does exist at
/usr/include/linux.inotify.h.
Any ideas for the message?
Darrell
Most distros use sys/inotify.h instead (glibc builtin IIRC). I would consider the incomplete inotify checks in Amarok a bug and update them from the tdelibs inotify checks I recently added.
Fortunately nothing complicated was needed. I changed linux/inotify.h to sys/inotify.h and the cmake scripts then found the header file. I don't know why the scripts could not find linux/inotify.h.
Here is the patch, unless you want me to submit through bugzilla:
=============================================== diff -urN amarok/ConfigureChecks.cmake amarok.new/ConfigureChecks.cmake --- amarok/ConfigureChecks.cmake 2011-05-03 00:45:53.000000000 -0500 +++ amarok.new/ConfigureChecks.cmake 2012-01-10 01:32:02.000000000 -0600 @@ -21,7 +21,7 @@
check_include_file( stdint.h HAVE_STDINT_H ) check_include_file( systems.h HAVE_SYSTEMS_H ) -check_include_file( linux/inotify.h HAVE_INOTIFY ) +check_include_file( sys/inotify.h HAVE_INOTIFY )
check_function_exists( statvfs HAVE_STATVFS )
diff -urN amarok/amarok/configure.in.in amarok.new/amarok/configure.in.in --- amarok/amarok/configure.in.in 2011-08-21 16:54:15.000000000 -0500 +++ amarok.new/amarok/configure.in.in 2012-01-10 01:31:51.000000000 -0600 @@ -366,7 +366,7 @@ # BEGIN INOTIFY CHECK ###############################################################################
-AC_CHECK_HEADERS(linux/inotify.h) +AC_CHECK_HEADERS(sys/inotify.h)
if test x"$ac_cv_header_linux_inotify_h" = x"yes"; then AC_DEFINE(HAVE_INOTIFY, 1, [have inotify]) diff -urN amarok/amarok/src/collectiondb.cpp amarok.new/amarok/src/collectiondb.cpp --- amarok/amarok/src/collectiondb.cpp 2011-08-17 15:59:49.000000000 -0500 +++ amarok.new/amarok/src/collectiondb.cpp 2012-01-10 01:31:53.000000000 -0600 @@ -86,7 +86,7 @@ #undef HAVE_INOTIFY // NOTE Disabled for now, due to stability issues
#ifdef HAVE_INOTIFY - #include <linux/inotify.h> + #include <sys/inotify.h> #include "inotify/inotify-syscalls.h" #endif
diff -urN amarok/config.h.in amarok.new/config.h.in --- amarok/config.h.in 2010-08-11 22:24:39.000000000 -0500 +++ amarok.new/config.h.in 2012-01-10 01:31:58.000000000 -0600 @@ -94,7 +94,7 @@ /* Define if you have libz */ #undef HAVE_LIBZ
-/* Define to 1 if you have the <linux/inotify.h> header file. */ +/* Define to 1 if you have the <sys/inotify.h> header file. */ #undef HAVE_LINUX_INOTIFY_H
/* Define to 1 if you have the <memory.h> header file. */ diff -urN amarok/configure.in amarok.new/configure.in --- amarok/configure.in 2011-08-21 16:54:15.000000000 -0500 +++ amarok.new/configure.in 2012-01-10 01:31:58.000000000 -0600 @@ -446,7 +446,7 @@ # BEGIN INOTIFY CHECK ###############################################################################
-AC_CHECK_HEADERS(linux/inotify.h) +AC_CHECK_HEADERS(sys/inotify.h)
if test x"$ac_cv_header_linux_inotify_h" = x"yes"; then AC_DEFINE(HAVE_INOTIFY, 1, [have inotify]) ===============================================
Darrell
I'm building amarok 3.5.13. I
receive this message:
Looking for linux/inotify.h - not found
The header file does exist at
/usr/include/linux.inotify.h.
Any ideas for the message?
Darrell
Most distros use sys/inotify.h instead (glibc builtin IIRC). I would consider the incomplete inotify checks in Amarok a bug and update them from the tdelibs inotify checks I recently added.
Fortunately nothing complicated was needed. I changed linux/inotify.h to sys/inotify.h and the cmake scripts then found the header file. I don't know why the scripts could not find linux/inotify.h.
Here is the patch, unless you want me to submit through bugzilla:
=============================================== diff -urN amarok/ConfigureChecks.cmake amarok.new/ConfigureChecks.cmake --- amarok/ConfigureChecks.cmake 2011-05-03 00:45:53.000000000 -0500 +++ amarok.new/ConfigureChecks.cmake 2012-01-10 01:32:02.000000000 -0600 @@ -21,7 +21,7 @@
check_include_file( stdint.h HAVE_STDINT_H ) check_include_file( systems.h HAVE_SYSTEMS_H ) -check_include_file( linux/inotify.h HAVE_INOTIFY ) +check_include_file( sys/inotify.h HAVE_INOTIFY )
check_function_exists( statvfs HAVE_STATVFS )
diff -urN amarok/amarok/configure.in.in amarok.new/amarok/configure.in.in --- amarok/amarok/configure.in.in 2011-08-21 16:54:15.000000000 -0500 +++ amarok.new/amarok/configure.in.in 2012-01-10 01:31:51.000000000 -0600 @@ -366,7 +366,7 @@ # BEGIN INOTIFY CHECK ###############################################################################
-AC_CHECK_HEADERS(linux/inotify.h) +AC_CHECK_HEADERS(sys/inotify.h)
if test x"$ac_cv_header_linux_inotify_h" = x"yes"; then AC_DEFINE(HAVE_INOTIFY, 1, [have inotify]) diff -urN amarok/amarok/src/collectiondb.cpp amarok.new/amarok/src/collectiondb.cpp --- amarok/amarok/src/collectiondb.cpp 2011-08-17 15:59:49.000000000 -0500 +++ amarok.new/amarok/src/collectiondb.cpp 2012-01-10 01:31:53.000000000 -0600 @@ -86,7 +86,7 @@ #undef HAVE_INOTIFY // NOTE Disabled for now, due to stability issues
#ifdef HAVE_INOTIFY
- #include <linux/inotify.h>
- #include <sys/inotify.h> #include "inotify/inotify-syscalls.h"
#endif
diff -urN amarok/config.h.in amarok.new/config.h.in --- amarok/config.h.in 2010-08-11 22:24:39.000000000 -0500 +++ amarok.new/config.h.in 2012-01-10 01:31:58.000000000 -0600 @@ -94,7 +94,7 @@ /* Define if you have libz */ #undef HAVE_LIBZ
-/* Define to 1 if you have the <linux/inotify.h> header file. */ +/* Define to 1 if you have the <sys/inotify.h> header file. */ #undef HAVE_LINUX_INOTIFY_H
/* Define to 1 if you have the <memory.h> header file. */ diff -urN amarok/configure.in amarok.new/configure.in --- amarok/configure.in 2011-08-21 16:54:15.000000000 -0500 +++ amarok.new/configure.in 2012-01-10 01:31:58.000000000 -0600 @@ -446,7 +446,7 @@ # BEGIN INOTIFY CHECK ###############################################################################
-AC_CHECK_HEADERS(linux/inotify.h) +AC_CHECK_HEADERS(sys/inotify.h)
if test x"$ac_cv_header_linux_inotify_h" = x"yes"; then AC_DEFINE(HAVE_INOTIFY, 1, [have inotify]) ===============================================
Darrell
I fixed it in GIT hash 899586d. For reference, the inotify.h file can commonly exist in one of two places; the check that is in tdelibs (and now in Amarok) looks both places before giving up.
Tim
I fixed it in GIT hash 899586d. For reference, the inotify.h file can commonly exist in one of two places; the check that is in tdelibs (and now in Amarok) looks both places before giving up.
Great. :)
I think that needs to be done with most packages. For example, many only look in /usr/include and not any subdirectories. With the little I have browsed cmake files, I think cmake can be configured for that. I don't know about automake. Not finding header files in a subdirectory seems to be a common building bug. Automake has the --with-extra-includes option, but find header files should be automatic. Likewise with cmake. :)
Darrell
I fixed it in GIT hash 899586d. For reference, the inotify.h file can commonly exist in one of two places; the check that is in tdelibs (and now in Amarok) looks both places before giving up.
Great. :)
I think that needs to be done with most packages. For example, many only look in /usr/include and not any subdirectories. With the little I have browsed cmake files, I think cmake can be configured for that. I don't know about automake. Not finding header files in a subdirectory seems to be a common building bug. Automake has the --with-extra-includes option, but find header files should be automatic. Likewise with cmake. :)
Darrell
From my perspective yes, we should search *standard* and project specific include directories. Normally that includes /usr/include and /usr/include/<archname>, as well as /opt/trinity/include. We should NOT search all possible custom include directories. If someone installs something to, for example, /my/custom/includes they will need to specify the path to that directory in their CMake build flags.
In the case of inotify things are messy because there are actually two standard include directories possible--one for an (older?) standalone inotify version and one for the glibc integrated version.
Tim
From my perspective yes, we should search *standard* and project specific include directories. Normally that includes /usr/include and /usr/include/<archname>, as well as /opt/trinity/include. We should NOT search all possible custom include directories. If someone installs something to, for example, /my/custom/includes they will need to specify the path to that directory in their CMake build flags.
In the case of inotify things are messy because there are actually two standard include directories possible--one for an (older?) standalone inotify version and one for the glibc integrated version.
I've known about both, but I never understood the difference between the two header files. Or which one is preferred. Or why. :)
I searched my local GIT tree for "linux/inotify.h" and found the following files:
main/applications/wlassistant/ConfigureChecks.cmake main/applications/kio-locate/ConfigureChecks.cmake main/applications/amarok/config.h.in main/applications/amarok/amarok/configure.in.in main/applications/amarok/amarok/src/collectiondb.cpp main/applications/amarok/configure.in main/applications/amarok/ConfigureChecks.cmake main/applications/kbfx/ConfigureChecks.cmake main/applications/kgtk-qt3/ConfigureChecks.cmake main/applications/tde-style-qtcurve/ConfigureChecks.cmake main/applications/rosegarden/ConfigureChecks.cmake main/applications/tdesvn/src/svnqt/ConfigureChecks.cmake main/applications/tdesvn/ConfigureChecks.cmake main/applications/abakus/ConfigureChecks.cmake main/tdepim/kmail/configure.in.in main/tdelibs/kio/kio/configure.in.in
Looks like main/applications/amarok/amarok/src/collectiondb.cpp is hard-coded.
Darrell