On 27 Eylül 2011 Salı 16:25:38 Gökcen Eraslan wrote:
>  Selam,

Selam

>  Daha önce teknik listede de konuştuğumuz gibi pisi ile clang kullanmak için
> öncelikle pisi kodundaki hard-coded gcc ve g++ değerlerini pisi.conf'a
> taşımak gerekiyor. Bunun için ekteki yamayı yaptım. Yama, pisi.conf'ta şu
> değerleri tanımlayabilmemizi sağlıyor:
> 
>  cc = clang
>  cxx = clang++
>  ld = ld.gold
> 
>  bu değerler pisi.conf'ta tanımlı olmadığında:
> 
>  cc = gcc
>  cxx = g++
>  ld = ld
> 
>  gibi davranılıyor. Daha sonra öntanımlı derleyici değiştirilise sadece
>  configfile.py'den bu değerlerin değiştirilmesi yetecek.

Süper.

>  * Yamayı yaparken çıkan ilk sorun, clang'ın host önekli binarylere (misal
>  x86_64-pc-linux-gnu-gcc) sahip **olmaması** oldu. Bunu kurtarmak için şöyle
> yaptım; eğer pisi.conf'ta tanımlanan cc/cxx/ld'nin host önekli olanları
> varsa öncelikli olarak onlar tercih edilecek eğer yoksa doğrudan
> pisi.conf'a yazılanlar kullanılacak/export edilecek.
> 
>  * icecream ve ccache ile çalışabilmesine de baktım. Bunun için de icecream
>  ve ccache'in açılabilmesi için kontrol edilen /usr/lib/ccache/bin/gcc ve
>  /opt/icecream/bin/gcc gibi path'ler yerine, yine pisi.conf'ta tanımlanan
>  derleyicinin, ccache ya da icecream bin dizinlerinde olup olmamasına
>  bakılmasını sağladım. Mesela cc = xcc ve buildhelper = ccache yazıldıysa,
>  /usr/lib/ccache/bin/xcc dosyası kontrol edilecek. (Bunun için ccache
> paketini de clang'ı eklemek suretiyle değiştirdim.)
> 
>  * Yama uygulandığında pisi.conf'ta sadece cc ve cxx tanımlamak clang
>  kullanmak için yeterli olacak. clang'ın ccache ile kullanılmasında da
>  herhangi bir probleme rastlamadım. Sadece buralarda[1][2] denildiği gibi
>  fazladan uyarı mesajları düşüyor.
> 
>  * Son olarak, clang ile derlenen bir çok uygulamanın çalıştırıldığında %100
> CPU harcayarak donduğunu göreceksiniz. Örneğin python bu yüzden derlenmiyor
> (içinden çıkan pgen inşa aşamasında kullanıldığı için takılı kalıyor), ya
> da ccache derlendikten sonra testlerde takılı kalıyor. Bunun sebebi de
> -DFORTIFY_SOURCE=2 flagi. Bunu şimdilik silmenizi tavsiye ederim clang ile
> derleme yapmak için. Aslında clang-trunk kullanıp denemek lazım fakat henüz
> fırsatım olmadı.
> 
>  * İtiraz gelmediği takdirde yamayı merge edeceğim.
> 
> 
>  PS: Tüm bunlarla uğraşmadan gcc kullanmaya devam ederek LLVM'le tanışmak
>  isteyenler depodan dragonegg'i kurup, pisi.conf'taki CFLAGS ve CXXFLAGS'a
>  -fplugin=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/plugin/dragonegg.so
>  ekleyebilirler.
> 
>  PS2: dragonegg gibi clang/llvm'i de system.devel içine almalı derim. Ne
>  dersiniz? İleride öntanımlı clang'a geçilmese bile dragonegg ufak bir hamle
> ile kullanılabilir.

Pisi değişikliklerine ve clang/llvm'in system.devel'e gitmesine +1. LLVM'in 
link ve install zamanı optimizasyonunu denemek için LLVM + dragonegg ile tüm 
depoyu derleyip test edelim, şahane olur.
_______________________________________________
Gelistirici mailing list
[email protected]
http://liste.pardus.org.tr/mailman/listinfo/gelistirici

Cevap