Nugroho's blog.

Thursday, December 15, 2011

Installing Python-2.7's Imaging Library Module on OS X Lion

PIL, as its name suggest, is an imaging library for python. I used PIL to get every pixel of an image as 2x2 array information. With that I could modify it with many possibilities; edge detection, black and white transformation, log transformation, creating watermark, etc.

{update: I install this PIL module on my OS X El Capitan too, :), and easier



Installing PIL is an easy task, if we have its prerequities installed. Just download it and extract it and then install using this command

Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib.macosx-10.6-intel-2.7
...
unable to execute gcc-4.2: No such file or directory
error: command 'gcc-4.2' failed with exit status 1
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$
Oops, it is failed to install, it tell me that there is no gcc-4.2 on my machine, and that's true. I've modified my /usr/bin/gcc to point /usr/local/bin/gcc.

I have gcc 4.2 from Xcode4.2, which actually llvm-gcc. My existing gcc is gcc-4.6.2 so I cheated… I created symlink named gcc-4.2 on /usr/bin pointing /usr/local/bin/gcc

Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ ln -s /usr/local/bin/gcc /usr/bin/gcc-4.2
ln: /usr/bin/gcc-4.2: Permission denied
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ sudo ln -s /usr/local/bin/gcc /usr/bin/gcc-4.2
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$

Still error, :(

gcc-4.2: error: x86_64: No such file or directory
gcc-4.2: error: unrecognized option ‘-arch’
gcc-4.2: error: unrecognized option ‘-arch’
error: command 'gcc-4.2' failed with exit status 1

Hm, maybe if I'm linking /usr/bin/gcc-4.2 to /usr/bin/llvm-gcc-4-2; it's gcc-4.2 after all, if we ignore llvm (don't know what is it stand for). It doesn't hurt if I'm trying, so..
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ sudo rm /usr/bin/gcc-4.2 
Password:
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ python setup.py install
running install
running build
running build_py
running build_ext
-
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform darwin 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
--------------------------------------------------------------------
--- TKINTER support available
*** JPEG support not available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
creating /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL.pth
Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$

Wow, success 

Well, no need gcc4.6.2 afterall, just create symbolic link of llvm-gcc-4.2 named gcc-4.2,:)

test

Nugrohos-MacBook-Pro:Imaging-1.1.7 nugroho$ python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import image
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named image
>>> import Image
>>>

OK

Install GCC 4.6.2 on OS X Lion (success)

Still failed, for not able to access gcc-4.6.2 automatically (have to access ~/gcc462/bin), I install binary GCC from HPC. So I'm extracted gcc-lion.tar.gz. For my surprise, it's extracted with some hierarchy like usr/local/bin, usr/local/include, … and I supposed to copy it to root folder. In that case, my Xcode4.2's gcc would still intact because it's in /usr/bin .

 I wonder if all gcc compilation result'll stored to /usr/local if we didn't pass any parameter, so I checked my /usr/local/bin directory



Nugrohos-MacBook-Pro:/ nugroho$ cd usr/local/bin/
Nugrohos-MacBook-Pro:bin nugroho$ ls
2to3gfortran python-config smtpd.py
2to3-2.7 idle python2.7 smtpd2.7.py
c++ idle2.7 python2.7-32 x86_64-apple-darwin11.2.0-c++
cpp jcf-dump python2.7-config x86_64-apple-darwin11.2.0-g++
g++ pydoc pythonw x86_64-apple-darwin11.2.0-gcc
gcc pydoc2.7 pythonw-32 x86_64-apple-darwin11.2.0-gcc-4.6.2
gcj python pythonw2.7 x86_64-apple-darwin11.2.0-gcj
gcov python-32 pythonw2.7-32 x86_64-apple-darwin11.2.0-gfortran

There is gcc in it. Is in gcc-4.2?
Nugrohos-MacBook-Pro:bin nugroho$ ./gcc --version
gcc (GCC) 4.6.2
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Yes, it is gcc-4.6.2? So, I replace gcc symlink previously  pointed to /usr/bin/llvm-gcc to /usr/local/bin/gcc

Nugrohos-MacBook-Pro:bin nugroho$ which gcc
/usr/bin/gcc
Nugrohos-MacBook-Pro:bin nugroho$ which llvm-gcc
/usr/bin/llvm-gcc
Nugrohos-MacBook-Pro:bin nugroho$ sudo ln -s gc
gcc gcj gcov
Nugrohos-MacBook-Pro:bin nugroho$ sudo ln -s gcc /usr/bin/gcc
Password:
ln: /usr/bin/gcc: File exists
Nugrohos-MacBook-Pro:bin nugroho$ sudo mv /usr/bin/gcc /usr/bin/gccOLD
Nugrohos-MacBook-Pro:bin nugroho$ sudo ln -s gcc /usr/bin/gcc
Nugrohos-MacBook-Pro:bin nugroho$ gcc
gcc: fatal error: no input files
compilation terminated.
Nugrohos-MacBook-Pro:bin nugroho$ gcc --version
gcc (GCC) 4.6.2
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Nugrohos-MacBook-Pro:bin nugroho$
Hooray, HPC binary is left untouched, :)

Ubuntu 11.10 Oneiric Ocelot on OS X Lion via Virtual Box

It's long time since my MacBook Pro had ubuntu installed. Curious about new release of ubuntu, I decided to download .iso file via torrent network and installed it on my Mac via VirtualBox as I don't want to dual booting my Mac again (the way I did several years ago).



 I downloaded 64-bit version of Oneiric Ocelot and it's installed without problem.

 From screenshot below, we know ubuntu team has improved their installation method. While the system is busy copying file, we're prompted to fill our detail of instalation; keyboard, time zone, username. Such an efficient method.
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos

Wednesday, December 14, 2011

Installing GCC 4.6.2 on OSX Lion

After searching how to's, compiling from source, installing Snow Leopard version of Xcode (on its DVD) and installing light alternate gcc 4.2 version without success (or success but not satisfied), I  installed Xcode 4.2 on my OS X Lion. Alas, Apple ship its own GCC compiler, llvm-gcc, instead GCC. So I download tar.gz version of GCC-4.6.2 from GNU and try to install it
From Blogsy Photos
From Blogsy Photos
check to know what dependencies I don't have by typing

./configure



the result is
 

configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.


So, I download it mpc (http://www.multiprecision.org/index.php?prog=mpc&page=download), mpfr(http://www.mpfr.org/mpfr-current/#download) and gmp(http://gmplib.org/). I don't know why gmp's download always ended by error, duh. Trying to 'torrenting' it via burnbit but still get error. I was forced to use ftp connection via Finder (Command-K) and done. Installing these dependencies is easy task, just unzip/untar these archive, cd to its directory and type three magical UNIX installation words.

$./configure
$make
$sudo make install

OK, now it's GCC time. Extract GCC zipped file, cd to its directory

./configure
make
sudo make install

You can add make command to make -j 4 if you have multicore processor and want to make process processed in parallel. "Make" process is very long time process.
Look at gnumake, cc1 , sh , and llvm-gcc-4.2 processes. They're processed in parallel.
From Blogsy Photos
From Blogsy Photos
From Blogsy Photos

 OMG, after long awaiting time, I got an error, something about libgfortran. (update: it's succeed indeed despite of error, it actually compiled gcc but not in Lion path, so Lion's still use llvm-gcc version , I post the update here) After a minute of thinking, I decide to compile just C for now, and build on separate directory and output-ed it on my home directory

Nugrohos-MacBook-Pro:gcc-4.6.2 nugroho$ mkdir build
Nugrohos-MacBook-Pro:gcc-4.6.2 nugroho$ cd build
Nugrohos-MacBook-Pro:build nugroho$ ../configure --prefix=$HOME/gcc462 --enable-languages=c

These command will build GCC on 'build' directory and store the compilation result on gcc462 directory on my home folder. If you are interested in building only a limited set of languages, just like me, you could also specify this option in the configure line. For example if you need only C, C++ and Fortran just append this to the above line: --enable-languages=c,c++,fortran

First Impression of Portable Python

I'm curious about Portable Python I found several days ago even I don't have windows machine. So I borrowed my mom's Pentium III Dynabook Satellite with XP installed, and installed Portable Python in my 8GB Transcend JetFlash USB pendrive. Pathetic though; why do I installed it to pen drive if I already have Windows machine? Yeah, because it can't be installed via my MacBook Pro with Lion of course. Anyway here's some screenshot




From Blogsy Photos
Portable Python can be acessed interactively via command prompt like this
From Blogsy Photos
or throught PyScripter, but we'll face "coud not connect to the python engine server. The remote interpreter and debugger is not available" error because windows's blocking pythonw like this
From Blogsy Photos
From Blogsy Photos
Clicking unblock will allow PyScripter run
From Blogsy Photos

Monday, December 12, 2011

Lorenz Attractor using Python 2.7 and Vpython Module on Mac OS X Lion

From Blogsy Photos
Lorenz attractor's generated by three nonlinear simultaneous equation.

x1=x0+h*a*(y0-x0)
y1=y0+h*(x0*(b-z0)-y0)
z1=z0+h*(x0*y0-c*z0)

 
where

a=10
b=28
c=8./4.

We can play with a,b and c to see the effect.

Here the code to visualize Lorenz attractor on Python. We need VPython module to visualize it.


from visual import *
from operator import mod
jl=1.
h=0.01
a=10
b=28
c=8./4.
x0=0.1
y0=0
z0=0
n=10000.
r=1.
while jl < n:
rate(1000)
rd=mod(n,jl)/1000
sphere(pos=(x0,y0,z0),radius=r, color=(rd,1,rd))
x1=x0+h*a*(y0-x0)
y1=y0+h*(x0*(b-z0)-y0)
z1=z0+h*(x0*y0-c*z0)
jl=jl+1
x0=x1
y0=y1
z0=z1


Since Vpython's not support 64bit platform, we must execute the code using 32-bit python like this

Nugrohos-MacBook-Pro:cellular nugroho$ python2.7-32 lorenz.py

Here the result
From Blogsy Photos

The Journey of Installing Matplotlib Python on Mac OS X Lion (continued)

To install Matplotlib, I have to install numpy first. To install numpy, I need GCC. Lion installer package didn't come with XCode, it has to be downloaded separately from MacAppStore for free. I don't dare to even trying it with my sluggish itnternet connection, so I tried others possibility without success untill I found my SnowLeopard DVD.

Finally, I am able to install GCC. I used XCode 3.2 on Snow Leopard DVD in Lion, :). So, the journey is continue…

Check (just for show off, :))



Nugrohos-MacBook-Pro:mysite nugroho$ gcc
gcc         gcc-4.0     gcc-4.2     gccmakedep  
Nugrohos-MacBook-Pro:mysite nugroho$ gcc

Now install numpy, oh no… look at this.

Last login: Sun Dec 11 19:11:11 from 192.168.2.2
Nugrohos-MacBook-Pro:mysite nugroho$ pip install numpy
Downloading/unpacking numpy
  Downloading numpy-1.6.1.tar.gz (2.6Mb): 2.6Mb downloaded
  Running setup.py egg_info for package numpy
    Running from numpy source directory.non-existing path in 'numpy/distutils': 'site.cfg'
    F2PY Version 2
    blas_opt_info:
      FOUND:
        extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
        define_macros = [('NO_ATLAS_INFO', 3)]
        extra_compile_args = ['-faltivec', '-I/System/Library/Frameworks/vecLib.framework/Headers']


    building extension "numpy.core._sort" sources
      adding 'build/src.macosx-10.6-intel-2.7/numpy/core/include/numpy/config.h' to sources.
      adding 'build/src.macosx-10.6-intel-2.7/numpy/core/
py/core/include/numpy/__multiarray_api.h']
    building extension "numpy.core.multiarray" sources
      adding 'build/src.macosx-10.6-intel-2.7/numpy/core/include/numpy/config.h' to sources.


error: could not delete '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/__config__.py': Permission denied


It's look like my gcc think it's on Snow Leopard platform, :(. But, there is small hope; the error warning just mentions permission, hm, how about sudo?

ok, let's try again

Nugrohos-MacBook-Pro:mysite nugroho$ sudo pip install numpy
Password:
Downloading/unpacking numpy
  Running setup.py egg_info for package numpy
    Running from numpy source directory.non-existing path in 'numpy/distutils': 'site.cfg'


      adding 'build/scripts.macosx-10.6-intel-2.7/f2py' to scripts
    changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/f2py to 755
Successfully installed numpy
Cleaning up...
Nugrohos-MacBook-Pro:mysite nugroho$ 


hm, still in doubt

Nugrohos-MacBook-Pro:mysite nugroho$ python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> 

yeahh…
(don't know if it works as it compiled using GCC designed for Snow Leopard. At least no news is good news, :) )

So here it is

Nugrohos-MacBook-Pro:mysite nugroho$ pip install matplotlib
Downloading/unpacking matplotlib
  Downloading matplotlib-1.0.1.tar.gz (13.3Mb): 13.3Mb downloaded

BUILDING MATPLOTLIB
            matplotlib: 1.0.1
                python: 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
                        [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
              platform: darwin
REQUIRED DEPENDENCIES
                 numpy: 1.6.1
             freetype2: found, but unknown version (no pkg-config)
                        * WARNING: Could not find 'freetype2' headers in any
                        * of '.', './freetype2'.
OPTIONAL BACKEND DEPENDENCIES
                libpng: found, but unknown version (no pkg-config)
                        * Could not find 'libpng' headers in any of '.'
----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/nugroho/.pip/pip.log
Nugrohos-MacBook-Pro:mysite nugroho$ 

Hm, still long way to go, have to install freetype2 and lbpng. Ugh…






323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)