diff --git a/dev/dev-notes/asandikci.md b/dev/dev-notes/asandikci.md index a26c04f..a2c0ef9 100644 --- a/dev/dev-notes/asandikci.md +++ b/dev/dev-notes/asandikci.md @@ -80,10 +80,6 @@ Yazılım geliştirme konusunda uzman olmadığımdan, go dilini daha önce kull #### Son Hafta (28 Ağustos - 3 Eylül 2023) - Go'da crosscompile program yapmayı öğrendim ve projeye uyguladım -- Go Dinamik Plugin yapısını kodladım (goloader) -- Resource Usage pluginini bitirdim - - Hardware cihazlarını algılamak için hardware paketini kodladım -- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim - - program servis olarak çalışmamakta! -- Dökümantasyonları güncelledim -- .deb dosyasını güncelledim, windows ve linux için paketleri yayımladım \ No newline at end of file +- Go Dinamik Plugin yapısını kodladım (goloader) -eksik- +- Resource Usage pluginini ve ahenk-go programını Windows ile uyumlu hâle getirdim -eksik- + - program servis olarak çalışmamakta! \ No newline at end of file diff --git a/dev/environment.md b/dev/environment.md index ed9429d..44d2cd4 100644 --- a/dev/environment.md +++ b/dev/environment.md @@ -32,7 +32,9 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti - Sorunlar - Her seferinde manuel olarak ayarın değiştirilmesi lazım - herhangi bir sistem için çalışırken diğer sistemin kodu içinde diagnotics çalışmamakta. Örneğin `tags=windows` etkinken eğer package_linux.go dosyasına gidersek go eklentisinin çoğu yapılandırma özellikleri çalışmamakta ve uyarı vermekte - - Neden bilmiyorum ama bazen bu geçici çözüm işe yaramamakta ¿ + - Nedenini tam olarak bilmiyorum ama bazen bu geçici çözüm işe yaramamakta ¿ + - go build satırını yorum işaretine bitişik yaz!, `// go:build linux && !windows` değil, `//go:build linux && !windows` + - go build satırından sonra bir satır boşluk bırak ? ### Otomatik Eklenti Ayarları - Eklentileri Manuel olarak yüklemeniz gerekmektedir. Konfigrasyonlarını ise VSCode/Codium üzerinden kendiniz yapabilirsiniz veya `.vscode/settings.json` dosyasını direkt kullanabilirsiniz. @@ -44,7 +46,8 @@ Bu dosyada geliştirme sürecinin sürekliliği ve bütünlüğü için gelişti - 1 adet Liderahenk sunucusu (Fiziksel/Sanal) - veya herhangi bir yerel/diğer XMPP sunucusu - 1 adet GNU/Linux Dağıtımı (Fiziksel/WSL) - - Wine yüklenmiş + - Wine yüklü + - [bakınız](#wine-geliştirme-ortamının-oluşturulması) - Docker [godeb](#creating-docker-development-environment) - Paket buildlemek ve mini testler için - içinde Pardus sanal makine @@ -66,4 +69,37 @@ docker pull asandikci/godeb ```sh docker run -it -d --name build1 asandikci/godeb:latest "bin/bash" docker attach build1 --detach-keys "ctrl-k" -``` \ No newline at end of file +``` + +
+
+-- wine -- + +### Wine Geliştirme Ortamının oluşturulması +> Daha önce hiç Wine kullanmadıysanız **ve** bilgisayarınız sanal makinede windows çalıştırabilecek güçte ise bu başlığı atlamanız önerilir. +> adımlar wine8.15(staging) ve go1.21.0 sürümleri kullanılarak yapılmıştır +- paket yöneticinizden `wine` veya `wine-staging` paketini indiriniz ve `wineboot -u` komutunu çalıştırınız +- https://go.dev/dl/ adersinden en son yayınlanan .msi dosyasını indiriniz. +- terminal üzerinde `wine control` komutunu çalıştırınız ve kontrol panelini açınız + - Add/Remove Program + - bir önceki adımda indirdiğiniz .msi dosyasını yükleyiniz + - yükleme konumu olarak `C:\users\KullanıcıAdınız\go\` dizinini seçiniz +- terminal üzerinde `wine regedit` komutunu çalıştırınız ve kontrol panelini açınız + - **HKEY_CURRENT_USER** > **Environment** dosyasına geliniz. + - GOPATH'i `C:\users\KullanıcıAdınız\go` şeklinde düzenleyiniz (kurulumda kurduğunuz path) + - PATH'i `C:\users\KullanıcıAdınız\go\bin` şeklinde düzenleyiniz +- https://github.com/eh-steve/goloader#build adresinde yer alan ayarları yapınız, GOROOT değişkenini kullanmak yerine işlemi manuel olarak yapmanız önerilir. +- Artık `make local_wine` komutu ile go dosyasını buildleyip, `wine /usr/bin/ahenk-go` komutu ile çalıştırabilirsiniz. (sisteminiz sadece `ahenk-go` yazınca da wine ile çalıştıracağını anlayabilir) + +#### Wine ile ilgili ek bilgiler +- eğer halihazırda bir wine kurulumunuz varsa ve farklı bir dizin kullanmak istiyorsanız `winetricks` uygulamasını yükleyerek yeni bir prefix oluşturabilirsiniz. + - sonrasında çalıştıracağınız tüm komutları `env WINEPREFIX=~/.local/share/wineprefixes/PREFIX_ISMI wine KOMUT` öneki ile çalıştırınız. ([yukarı](#wine-geliştirme-ortamının-oluşturulması)daki komutların tümünü ve sonrasında çalıştıracağınız ahenk-go) + - bazı kabuklarda tilde ~ sembolü çalışmayabiliyor, full dizini yazının. + - eğer yeni bir prefix oluşturduysanız Makefile dosyasını gözden geçiriniz ve **özellikle** `WINE_C` değişkenini değiştiriniz ! +- Herhangi bir sorun olduğunda ve çözüm bulamadığınızda winetricks uygulamasından ilgili prefix'i seçip herşeyi sil seçeneğini seçip, tüm adımları baştan yapabilirsiniz. +- eğer wine konsolu üzerinde sürekli fixme hataları çıkıyorsa kodu `env WINEDEBUG=fixme-all wine KOMUT` ile çalıştırınız +- goloader, jit, kernel veya pluginlerin yüklenmesi ile ilgili sorun/panic oluşuyorsa `make local_wine_safeplugins` komutunu deneyiniz + - bu komut pluginleri paket olarak içeri import eder ve hangi pluginde sorun olduğunu daha anlaşılabilir bir şekilde gösterir. + - dolayısı ile unload vb. diğer plugin özellikleri çalışmaz, sadece debugging amaçlı kullanınız ! +- FIXME `panic: Failed to find GetStdHandle procedure in kernel32.dll: Path not found.` ve `panic: Failed to load kernel32.dll: Path not found.` hatalarının çözümü bulunamadı! Eğer siz de bu hatayı alırsanız wine yerine windows kullanmayı deneyiniz veya sorunu çözerseniz bu dökümantasyona ekleyiniz. +
\ No newline at end of file diff --git a/dev/newdev.md b/dev/newdev.md index 0aefe1e..2ec90fa 100644 --- a/dev/newdev.md +++ b/dev/newdev.md @@ -1,6 +1,8 @@ # Yeni Geliştiriciler için Açıklamalar Bu projede devam edecek olan geliştiriciler, stajyerler veya katkı sağlamak isteyen harici *contributor*lar için başlangıç kılavuzu, açıklamalar ve öneriler. Bu dosyayı, hâlihazırda olan dökümantasyonların sırasıyla daha iyi anlaşılması için oluşturulmuş bir roadmap gibi düşünebilirsiniz. +SON UPDATE: howto.md ve changelog.md dosyalarını güncellemeye ve dev-notes/asandikci.md dosyasındaki son hafta için yazdıklarımı (commit=316ef3713e9119b0869baea40406fcf5482faf10) yapmaya vaktim yetmedi, bu dosyadan ana mantığı anlamaya çalışın ama goloader kullandıktan beri güncellemediğim için plugin mantığı çok eksik kalacak... goloader-changes branchına ve son commit'e bakınız ve anlamaya çalışınız! + ## Gereklilikler ### Geliştirme Ortamının kurulması - Geliştirme ortamı için go dilini paket yöneticinizden veya resmi sitesinden kurunuz (>=1.21.0) @@ -99,6 +101,7 @@ Go dili ve ortamın kurulması haricinde bunlar hakkında bilgi sahibi olmanız - cli flag, argument management (cobra) (gerekli mi?) - daha iyi versiyon yönetimi, deb/exe ve version dosyası için senkronizasyon - otomatik versiyon güncellemesi +- go kodları için otomatik testler (package_test.go ve makefile içinde) - daha fazlası için [buraya](./changelog.md#next) bakınız