Archive for the ‘gentoo’ Category
Apparently the xf86-input-wacom driver is not enough: one has to manually build the kernel module (for kernel version <= 3.2)
1) get input-wacom driver here: http://sourceforge.net/projects/linuxwacom/files/xf86-input-wacom/input-wacom/
2) unpack and run ./configure. Pay attention to the installation instructions at the end of ./configure output
3) copy kernel modules to /lib/modules/ as instructed.
4) modprobe wacom and enjoy
I normally use ruby/gsl for everyday numerics because it’s fast to code and extend, and semantically clear, plus you can do cool things like previewing energy spectrum from within irb by interfacing with the gnuplot module—normally you’d write to a tmp file, switch to gnuplot console, and plot it there.
The problem with rb/gsl is speed. The other day, my boss walked in and compiled his fortran code on my machine. It beat my ruby code hands-down—one would think gsl, being a C library, should be on par with lapack, but apparently it’s not, and it’s not (entirely) ruby’s fault since I rewrote the same stuff in C, using gsl, and it’s still about 4 times slower than my boss’s fortran code using lapack. (I guess partly it’s b/c gsl is using its own blas implementation).
So I want something faster but still with natural semantics—e.g., matrix multiplication should be A*B, not dgremm(...A...B...)—so C++ seems a reasonable place to look at. So far I find armadillo suits my needs quite well. It is a c++ linear algebra library interfacing with lapack/blas.
On gentoo, this is what one needs:
- If you have intel cpu, emerge sci-libs/mkl. This is a blas/lapack drop-in replacement from Intel. You need to go to intel’s website and register (free) for a non-commercial usage license. AMD has a similar library. Otherwise, just setup your blas/lapack of choice.
- use eselect blas/cblas/lapack list/set to choose mkl as the blas/lapack implementation to use.
- now emerge sci-libs/armadillo. It is important to install it after 1) and 2) b/c it will decide what library it’s linking against during compilation time
Now, #include <armadillo> in your cpp code, and use
g++ -O3 -larmadillo your_code.cpp -o your_exe
to compile. You don’t have to use -lblas -llapack as these are already taken care of by -larmadillo (which was done in 3 above, that’s why emerge order is important).
On a Mac OS X (my office workstation), the appropriate way to compile is instead:
g++ -O3 -framework Accelerate your_code.cpp -o your_exe
as per armadillo’s readme file.
I transcribed my ruby/gsl code into c++/armadillo, and on the Mac, it actually is 2 times faster than my boss’s fortran code—since both are using the same underlying blas/lapack implementation, I suppose there’s some unnecessary computation in the fortran code. At any rate, it seems safe to say the c++ overhead is not significant so I’ll happily settle for armadillo for the moment.
After the discovery of gnuplot’s tikz term, I have been using it for most of the plots I send to my advisor. A very nagging problem though is that when the number of data points is big, pdflatex would complain about “TeX capacity exceeded, sorry [main memory size = xxxx]” and refuse to compile. Today it has just come to a point I can’t stand this any more, so I did some googling and found a solution. Now TeX is a very messy system with fmt, sty, cnf files all over the place, so be sure to backup anything you touch in case something goes wrong.
Here’s a web page from JadeTeX that pointed me in the right direction, http://jadetex.sourceforge.net/#index-div-d18e113. The following solution is based on this.
- make changes to texmf.cnf. You may want to use `locate texmf.cnf’ to find where it is. Then in it, change `main_memory’ from 3000000 to say 8000000
- now regenerate latex.fmt for plain latex, or pdflatex.fmt for pdflatex. E.g., to recompile pdflatex.fmt:
- find where “pdflatex.ini” is
- cd to that path, then invoke “pdflatex -ini -progname=pdflatex pdflatex.ini”
Notice that this is different from what’s in the JadeTeX webpage. You need to invoke “pdflatex” instead of “tex”
- now find where the original “pdflatex.fmt” is, back it up, and copy the generated “pdflatex.fmt” to there
- to regenerate “latex.fmt”, use “latex -ini -progname=latex latex.ini
In gentoo, the proper way of fixing this once and for all is:
- Change the value of the corresponding field in file /etc/texmf/texmf.d/20sizes.cnf. This should persist through all future texliveupgrades.
- run texmf-update to regenerate the system-wide texmf.cnf
- run fmtutil-sys --all to regenerate the .fmt files
alternatively one can compile with lualatex, which doesn’t seem to have a size limit
After some emerging, my firefox suddenly started segfaulting everytime. The worst part of a segfault is you don’t get anything useful out of it, no error message, etc. A backtrace in gdb shows the problem is from a recent upgrade of sys-libs/zlib, and google says it’s an old problem, and as usual, gentoo devs refuse to fix it (maybe for a good reason, but who cares).
Some more googling brought me to this gcc ML post. The solution is simply to add -mstackrealign into your /etc/make.conf. Re-emerge zlib then solves the problem.
quick note to myself, copy with caution..
mount /dev/sda2 /mnt/newgentoo
cp -xavv / /mnt/newgentoo/
# -x is used b/c I have some dirs as mount points of fs on other disks
# need /dev/console and /dev/null for a successful boot
# otherwise will get an error of "unable to open an initial console"
# cf. http://www.gentoo.org/doc/en/udev-guide.xml, 3. Known issues
mknod -m 660 console c 5 1
mknod -m 660 null c 1 3
and finally, don’t forget to change /boot/grub/menu.lst and /mnt/newgentoo/etc/fstab
1. emerge cups. leave all conf files as-is
2. emerge foomatic-db-ppds, equivalently just download the ppd file corresponding to your printer (the one in my office is lexmark c543dn)
3. add yourself to the groups lp (for printing) and lpadmin (for using web interface to configure cups)
4. start cupsd (e.g., add it to the default run-level), then visit https://localhost:631
5. add printer from within the web interface. For the lexmark mentioned above, locate the corresponding ppd file installed in step 2. The network address should be socket://ip-address-of-the-printer (I googled and saw on one lexmark official page that the printer should be accessed through the port 9100, which from the cups manual should have socket:// in its URI)
6. I also queried the printer’s default printing options from within cups web interface b/c the default option used by cups doesn’t utilize the duplex feature of the printer.
7. now just use lpr -P< printer name > to print (e.g., from the gtk printing dialogue box). < printer name > is the name you used in step 5 when adding the printer.
pidgin 2.6.2 is out today. Supposedly it fixed the problem when a video call is initiated but only a blank window appears. But you still need the following packages for video calling to actually work:
- to test gstreamer a/v devices, need gstreamer-properties in package gnome-extra/gnome-media
- for v4l(2) devices (that’s your camera) to work, also need media-plugins/gst-plugins-v4l(2)