Results 1 to 2 of 2

Thread: HOWTO: Install gizmod on 11.10 or 12.04

Hybrid View

  1. #1
    Join Date
    Aug 2006
    Beans
    923
    Distro
    Kubuntu 8.04 Hardy Heron

    HOWTO: Install gizmod on 11.10 or 12.04

    The information in this thread has been moved to https://help.ubuntu.com/community/GizmodIn11.10and12.04

    A thread for discussion of the wiki page only can be found here http://ubuntuforums.org/showthread.p...4#post12062154

    Thread closed.


    HOWTO: Install gizmod on Ubuntu 11.10+
    The Gizmo Daemon (gizmod) is a nice utility that lets you customize how various input devices (keyboards, mice, etc.) interact with Linux. In particular, it can be useful to recognize more exotic input devices that Linux doesn't natively understand. Example: it has support for the Griffin PowerMate dial, and you can then assign arbitrary actions to the dial (scroll, click, etc.).

    As of 11.10, gizmod is no longer in the Ubuntu repositories. As such, you have to compile it manually. The gizmod wiki has some good information, but the instructions don't work on Ubuntu 11.10+.

    Here I've collected the various tricks necessary to install gizmod on Ubuntu 11.10 (Oneric Ocelot) or 12.04 LTS (Precise Pangolin). You will need to make a small number of modifications to the source code, and compile it. Follow the official compile-from-source instructions until the Compiling and Installing step:
    https://sourceforge.net/apps/mediawi...le_from_Source

    Before that step, you'll need to make the changes detailed in this forum post. Specifically:

    size_t errors
    When attempting to run 'make' you will get errors like:
    Code:
    In file included from ./gizmod-3.5/libHAverage.cpp:31:0:
    ./gizmod-3.5/libH/Average.hpp:74:5: error: ‘size_t’ does not name a type
    To fix these, make the following edits to the source code:
    1. In file ./gizmod-3.5/libH/Average.hpp
    Add:
    Code:
    #include <stdlib.h>
    2. In file ./gizmod-3.5/libH/DynamicBuffer.hpp
    Add:
    Code:
    #include <stdlib.h>
    no member named string errors
    When attempting to run 'make' you will get errors like:
    Code:
    gizmod-3.5/libGizmod/Processes.cpp: In static member function ‘static void Gizmod::Processes::updateProcessTree()’:
    gizmod-3.5/libGizmod/Processes.cpp:157:27: error: ‘class boost::filesystem3::directory_entry’ has no member named ‘string’
    To fix this, make the following change to the source code:
    1. In the file ./gizmod-3.5/libGizmod/Proceses.cpp
    On line 157, change:
    string StatPath = iter->string() + "/stat";
    To:
    string StatPath = iter->path().string() + "/stat";
    2. In the file ./gizmod-3.5/gizmod/GizmoDaemon.cpp
    a. On line 1109, change:
    ret += "sys.path.insert(0, \"" + iter->string() + "\")\n";
    To:
    ret += "sys.path.insert(0, \"" + iter->path().string() + "\")\n";
    b. On line 1567, change:
    UserScripts.push_back(iter->path().leaf());
    To:
    UserScripts.push_back(iter->path().filename().string());
    c. On line 2192, change:
    if (iter->path().leaf().find("event") != 0)
    To:
    if (iter->path().filename().string().find("event") != 0)
    d. On line 2194, change:
    eventsFiles.push_back(mEventsDir + "/" + iter->path().leaf());
    To:
    eventsFiles.push_back(mEventsDir + "/" + iter->path().filename().string());

    default_name_check error
    When attempting to run 'make' you will get an error like:
    Code:
    gizmod-3.5/gizmod/Main.cpp: In function ‘int main(int, char**)’:
    gizmod-3.5/gizmod/Main.cpp:57:2: error: ‘default_name_check’ is not a member of ‘boost::filesystem3::path’
    To fix this, remove line 57 from ./gizmod-3.5/gizmod/Main.cpp

    Code:
        // set filesystem to native filesystem checking
        // path::default_name_check(native); // Removed to eliminate compile error
    boost error
    When attempting to run 'make' you will get an error like:
    Code:
    Linking CXX executable gizmod
    /usr/bin/ld: CMakeFiles/gizmod.dir/GizmoDaemon.o: undefined reference to symbol 'boost::system::system_category()'
    /usr/bin/ld: note: 'boost::system::system_category()' is defined in DSO /usr/lib/libboost_system.so.1.46.1 so try adding it to the linker command line
    /usr/lib/libboost_system.so.1.46.1: could not read symbols: Invalid operation
    To fix, edit the file /gizmod-3.5/build/gizmod/CMakeFiles/gizmod.dir/link.txt
    And add '''-lboost_system''' to the arguments:
    /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/gizmod.dir/GizmoDaemon.o CMakeFiles/gizmod.dir/GizmoUtils.o CMakeFiles/gizmod.dir/GizmodEventHandlerInterface.o CMakeFiles/gizmod.dir/Main.o -o gizmod -rdynamic ../libH/libH.a ../libGizmod/libGizmod.so.3.4.0 -lboost_program_options -lpython2.7 ../libH/libH.a -lboost_filesystem -lboost_system -lboost_thread -lboost_serialization -lboost_python -lasound -lSM -lICE -lX11 -lXext -lutil -lpython2.7 -Wl,-rpath,/home/user/tmp/gizmod/gizmod-3.5/build/libGizmod:

    Finish compile
    With those changes, you should be able to finish the compile steps:
    Code:
    make
    sudo make install
    Excessive CPU usage
    If you find that gizmod is using 100% of CPU on your machine, this may be due to how polling interacts with newer kernel versions. The fix is to edit ./gizmod-3.5/libH/FileEventWatcher.cpp line 232-236:

    Code:
        case WATCH_INOUT:
            flags = O_RDWR;
            //events = POLLIN | POLLOUT; // This line causes 100% CPU usage on newer kernels
            events = POLLIN;// | POLLOUT;
            ModeString = "Read / Write";
            break;
    Then re-compile and re-install:
    Code:
    make
    sudo make install
    Last edited by nothingspecial; June 29th, 2012 at 09:55 AM.
    New users: Be sure you understand commands before using them (especially sudo and rm).

  2. #2
    Join Date
    Jan 2008
    Location
    Manchester UK
    Beans
    13,636
    Distro
    Ubuntu

    Re: HOWTO: Install gizmod on 11.10 or 12.04

    This thread is closed.

    The information is now held on the community wiki at https://help.ubuntu.com/community/GizmodIn11.10and12.04

    Thank you for your thread and the work you have done in keeping it current and of use to the community.

    A thread for discussion of the wiki can be found at http://ubuntuforums.org/showthread.p...4#post12062154


    Support threads regarding the wiki and it's content should be created in a suitable forum.

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •