Uzun zamandır, Ubuntu‘da kullandığım bittorrent istemcisi olan Transmission’ın gtk arabiriminde olmasını istediğim bir özellik vardı. Torrent’in takipçilerini /trackers) liste üzerinden silebilmek.
Transmission da bu özellik yerine “takipçileri düzenle” isimli bir tuş ve tüm trackerların listesinin olduğu bir metin kutusu üzerinden yazarak ekleme çıkarma özelliği vardı. Dün C yazmayı özlediğimi farkederek bu işe giriştim. GTK bilmediğim ve Transmission’ın kod tabanına biraz uzak olduğum için işlevi eklemem 2 günümü aldı. Ancak işin kolayına kaçtığım için apt-get source ile indirdiğim kaynak kodu üzerinde çalıştım.
apt-get source transmission
apt-get build-dep transmission
İşimi kolaylaştıran ve tüm derleme ağacını sağlayan bu komutların rahatlığı yüzünden svn HEAD i incelemeyi atladım. Ne de olsa, transmission gtk arabiriminde yıllardır bu özellik yoktu. Kimse eklemiş olamaz değil mi?
Yaklaşık 2 gün çalışarak bu özelliği çok az gtk bildiğim halde ve çok uzun zamandır kullanmadığım C’yi kullarak ekledim. çalıştırdım. Bundan sonra sıra yamayı hazırlayarak transmission’a göndermeye geldi. Bunun için svn head i alıp yazdığım kodları bu ağaç üzerinde çalışır hale getirmem gerekiyordu. Bu sayede kullanılabilir bir yama elde edecektim.
svn co svn://svn.transmissionbt.com/Transmission/trunk Transmission-svn
İndirdiğim kodlara elimdeki değişiklikleri elle eklemek ile işe başladım. Kodları kopyalayıp yapıştırdım. Debian build kurallarından aldığım configure satırı ile paketi ayarlamaya çalışınca libevent-2 kullanmaya geçtiklerini farkettim. Bunun için launchpad.net‘den gerekli olan libevent-2.0-5 paketlerini buldum sisteme yükledim. Sağlıklı bir derleme yapabilmek için yazdığım kodları, HEAD’de gerçekleşmiş olan değişikliklere uygun hale getirmeye başladım. Kullandığım yapılar (structures), sabitler ve enumlar değişmişti. Bu kadar değişiklik olduğunu doğrusu düşünmemiştim. Çalışacağını düşündüğüm hale getirip derlemeyi başardım. Programı çalıştırdım. Bir de ne göreyim! İstediğim özelliği sağ butona koymamışlar ama ayrı buton ekleyerek gerçekleştirmişler. Üstelik yaptığım yama da çalışmıyordu. Bu 2 olumsuzluk yüzünden yamayı çalışır ve yeni kod yapısında bulunan özellikleri kullanır hale getirmekten - şimdilik- vazgeçtim. Bunun yerine kurduğum ekstra paketleri kaldıdım ve,
apt-add-repository ppa:transmissionbt
aptitude update
aptitude install transmission
komutlarını vererek transmission’ın son sürümünü kullanmaya başladım.
Evet, bu yetenekli bir malın hikayesidir..