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