ironhide icon indicating copy to clipboard operation
ironhide copied to clipboard

optirun issus

Open XYYHun opened this issue 13 years ago • 3 comments

Some strange output is displayed when I run the following command.

Desktop$ optirun -f java -jar minecraft.jar 
The application will be run with Ironhide even if it's not connected to a power supply (e.g. running on battery)
file: invalid option -- 'j'
file: invalid option -- 'a'
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
file: invalid option -- 'j'
file: invalid option -- 'a'
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
 * Starting Ironhide X server ironhide                                            _PS0 Enabling nVidia Card Succeded.
.                                                                          [ OK ]

(java:14280): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",

(java:14280): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",

(java:14280): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",

(java:14280): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
 * Stopping Ironhide X server ironhide                                            _PS0 Disabling nVidia Card Succeded.
                                                                           [ OK ]

Error might be here in optirun

for arg in $@; do

if [[ `echo $arg | grep wine` -eq 0  ]]; then

if [[ `file $arg | grep 64-bit |wc -l` -ne 0 ]];then
        VGL_DRIVER=/usr/lib/nvidia-current
        break
elif [[ `file $arg | grep 32-bit |wc -l` -ne 0 ]];then
        VGL_DRIVER=/usr/lib32/nvidia-current
    break
fi

fi

done

these code test aplication whether it is a 32-bit programs or 64-bit programs. but file command must use full path, and only works with binary files.

XYYHun avatar Feb 16 '12 19:02 XYYHun

I suggest you to try Bumblebee which alleviates this issue by passing both library paths. http://bumblebee-project.org/

Lekensteyn avatar Feb 23 '12 13:02 Lekensteyn

Add a test to make sure arg is executable (get the real path with readlink in case it's a symlink). Also the test if it's a wine program needs to be fixed. I did this and tested it on "java -jar minecraft.jar". This worked for me:


for arg in $@; do
    if [[ `echo $arg | grep -c wine` -eq 0  ]]; then
        if [[ -x `which $arg` ]]; then
            pathtofile=`which $arg`
            abspath=`readlink -f $pathtofile`
            if [[ `file $abspath | grep -c 64-bit` -ne 0 ]];then
                    VGL_DRIVER=/usr/lib/nvidia-current
                    break
            elif [[ `file $abspath | grep -c 32-bit` -ne 0 ]];then
                    VGL_DRIVER=/usr/lib32/nvidia-current
                break
            fi
        fi
    fi
                                 
done

BTW. Just because MrMEEE had to take a sabbatical from development doesn't mean we should all switch over to Bumblebee and not try and work things out ourselves.

Ian

icb410 avatar Mar 01 '12 15:03 icb410

Neither program is perfect, you have the freedom to do whatever you want with it.These checks can be skipped by passing both library paths, the linker will take care of binding the right libraries:

VGL_DRIVER=/usr/lib/nvidia-current:/usr/lib32/nvidia-current

Lekensteyn avatar Mar 01 '12 20:03 Lekensteyn