Suckless dwm, st ve dmenu için nasıl patch oluşturulur

dwm, sterm ve dmenu programlarının kaynak kodları /usr/ports/ dizininde bulunması gerek. /usr/ports/ ağacı sizde yüklü değil ise aşağıdaki komutla git kullanarak yükleyin.

git clone -b 2024Q1 --single-branch https://git.freebsd.org/ports.git /usr/ports/

dwm

dwm, /usr/ports/x11-wm/dwm/ dizininde bulunuyor. Aşağıdaki komut ile programın kaynak kodunu work dizinine çıkartalım.

make extract

Çıkartılan dizinin içine girelim.

cd work/dwm-6.4/

Patch oluşturacağımız dosyanın yedeğini alalım.

cp config.def.h config.def.h.orig

Dosyayı düzenleyelim.

$EDITOR config.def.h

Düzenledikten sonra patch dosyası oluşturalım ve /usr/ports/x11-wm/dwm/files klasörüne atalım. Patch dosyaları patch prefixi ile başlamalıdır.

diff -Naur config.def.h.orig config.def.h > ../../files/patch-ornekpatch

work dizininden çıktıktan sonra kaynak kodunu temizleyin.

cd ../../
make clean

Artık dwm programını derleyebilirsiniz.

make install clean

dwm için oluşturulan patchler nasıl uygulanır

cd /usr/ports/x11-wm/dwm/
make clean && make extract
cd work/dwm-6.4/

patches bağlantısından istediğiniz patchi indirin.

fetch https://dwm.suckless.org/patches/fullgaps/dwm-fullgaps-6.4.diff # örnek patch

İndirdiğiniz patch hangi dosyalarda düzenleme yapıyorsa o dosyaların orijinal yedeğini alın. Örnek patch, config.def.h ve dwm.c dosyalarında değişiklik yapıyor.

cp config.def.h config.def.h.orig
cp dwm.c dwm.c.orig
patch < dwm-fullgaps-6.4.diff

patch komutundan sonra failed çıktıları görürseniz patch başarısız olmuş demektir, succeeded yazıları başarılı demektir. Şimdi patchi oluşturun.

diff -Naur config.def.h.orig config.def.h > patch-1
diff -Naur dwm.c.orig dwm.c > patch-2
cat patch-1 patch-2 > ../../files/patch-fullgaps
cd ../../
make clean
make install clean # dwm hali hazırda kuruluysa install yerine reinstall kullanın.

dwm için uygulanan süreç diğer programlar (sterm, dmenu) için de geçerlidir.

Ports ağacında bir portun nerede olduğunu bulmak için aşağıdaki komutu kullanabilirsiniz.

% whereis neofetch
neofetch: /usr/ports/sysutils/neofetch

Son düzenleyen: @nxjoseph 2024-12-01T15:00:18Z

5 Likes