This commit is contained in:
Şahan Yılmaz 2025-04-23 04:51:44 +03:00
commit 31810c0603
55 changed files with 7492 additions and 0 deletions

76
main/broadcom-wl/APKBUILD Normal file
View file

@ -0,0 +1,76 @@
# Contributor: NeYurii <neyuriizkh@proton.me>
# Maintainer: NeYurii <neyuriizkh@proton.me>
pkgname=broadcom-wl
_modname=wl
pkgver=6.30.223.271
pkgrel=0
pkgdesc="Broadcom 802.11 Linux STA wireless driver"
url="https://www.broadcom.com/site-search?filters[pages][content_type][values][]=Downloads&q=802.11%20linux%20sta%20wireless%20driver"
arch="x86 x86_64"
license="custom"
depends="akms"
source="
https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
patches/001-null-pointer-fix.patch
patches/002-rdtscl.patch
patches/003-linux47.patch
patches/004-linux48.patch
patches/005-debian-fix-kernel-warnings.patch
patches/006-linux411.patch
patches/007-linux412.patch
patches/008-linux415.patch
patches/009-fix_mac_profile_discrepancy.patch
patches/010-linux56.patch
patches/011-linux59.patch
patches/012-linux517.patch
patches/013-linux518.patch
patches/014-linux414.patch
patches/015-linux600.patch
patches/016-linux601.patch
patches/017-linux612.patch
patches/018-linux613.patch
patches/019-linux614.patch"
builddir="$srcdir"
options="!check"
prepare() {
default_prepare
sed -i -e '/BRCM_WLAN_IFNAME/s/eth/wlan/' src/wl/sys/wl_linux.c
sed -i -e "/EXTRA_LDFLAGS/s|\$(src)/lib|/usr/lib|;/GE_49 :=/s|:= .*|:= 1|" Makefile
cat >AKMBUILD <<-EOF
modname=wl
modver=6.30.223.271
built_modules=wl.ko
EOF
}
package() {
local destdir="$pkgdir/usr/src/$_modname-$pkgver"
install -D -m644 -t "$destdir" Makefile AKMBUILD
install -D -m644 "lib/wlc_hybrid.o_shipped" "$pkgdir/usr/lib/wlc_hybrid.o_shipped"
cp -a src "$destdir"
}
sha512sums="
6855781f7c69a9aecb9461932423688964879d5a4df571f01ae7adaa7bf21a410bef839605d555afb6c8f4eec92fe8510af6cb120930095617ff6cdcccedaf17 hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
4403cad0360b01f8e88faccb77e6239865e9cc2b68dac62896153ab37957f1e73e5e4c95d3e81dac334106a2cd4ef0784955a5fefd8abc6e793a68f182bbffe4 001-null-pointer-fix.patch
b483a4fd5fbb5a4697365b6ddcd8034b4d90ddee9bf2aecf003b0fd6838a708d3e84be33b08acdbe165d440480da25fdf0dfff0d2fe12fa2c5271c51d6ac74c0 002-rdtscl.patch
f61ecfb6b8c5a377c7a4da7549c9ec75677782fa2f97e64de0df1259e0ec3b993cfa3eaa4ff50331703ee18ef28f2af0d09839dd3b63ed994e6b29cbfe8ed73f 003-linux47.patch
e5959921b6f0cd5d61d7ed568f549b0920f394458c28257c05064b89d7067ce11c8e44ed0e5a48a65bd041c6193d9ae2d02fca2f5efbfb787d3f9001786a4578 004-linux48.patch
6209a0a5a46a3efcede3cb1e263467173153d779b6267ba4c20f46421a9abd8743a7068527ace350a3da3ef3046b0399e09b37aba917fabe020c8c2600b60fdf 005-debian-fix-kernel-warnings.patch
b7db17e30731a9cbc940b83f7b62f059529cff6c134e47e2176cd7c6fcd8d028334ed4fe1fdce7cf1aef87590f9664b463383ae3302a6e2aabe1baa79fbc5c95 006-linux411.patch
d4acd891023ff8d4b9308afdd55c4e971cdf7773570c8e3a545400ed9e414eeca5016ebc8a530002e7858fd44f1fd5b0ae70c0d0a3cdbbffd5bd9abb702b2cde 007-linux412.patch
2fb5c3eebd48b6099fb87a9fd92545c17b2abf318b040a434c1b0bdd75a7a682b6e7ec9f80245c198f1c306bbaef35a2488123c5ba8764d5a83eb18132c0857b 008-linux415.patch
97d34398d18ac9a7943233c12e01cf7006bf0648938303100932cabf5000c346f1a852978e3c8c48bb6e8652177e625ce1190047d580624319e680a13802ce92 009-fix_mac_profile_discrepancy.patch
8fb320c1272246c91fdd99cade2fb67a6ecd924a132c1b9432fa1ff0338444700451ffc6a1cb35e07188c58c5bd1ccaf59ebf014c49f44cb6ba33d1ec732859d 010-linux56.patch
b9a0193ab604da92c99051e2a4fd91e43c3b6aeea7dbda15635b43eabd35b414e197bf5f25ac0d4ec905a1cb75abc15f165428470bc788dbefd73f178d165099 011-linux59.patch
ec34a2800d7a70a7a1ff8a96ba87c2327f68066addf5adc9f60ba303cfda9cee39159f110013f075e357988f92efe802010e9c1d7884a5dfb1908df1489bd608 012-linux517.patch
b815a4ff9289d81ddbe7f76553b092df19ee137438c9e33811c3a8b15e8a3896763715975b42391b4edfb60cfb0db46b71f4fee0f33a7b07f8d45cc4608d3faa 013-linux518.patch
30207d8872ee8925a7c7412184e3b4fd6935f8017fb46e1173aca77333c99fb4316ef1511a83e345593c369210d4cbf976eea53995e229b4d856d97662c98961 014-linux414.patch
21cf9b0b01ad4b30fa8541638e9a8428c8c68c89992b7e15c19f8526e8df6f8c5ff20de5ae2759b36fead07deacd1805749a9ed82611d15fb75dc94812e4941e 015-linux600.patch
22a5071dddfe14b7add661f670047948b20110e7b3adf8474d1a2cc5a344b587352c2b70338b26500ec242ef117a2a7836e7d0ef352fa4dfaebfcfb3c129b0fa 016-linux601.patch
3b57d064323e5602ac5e94538d3a810a72dd4185a09cf6be772e787ba968052d2bd43e5946689312cf8df934d72c9e7f495476d5851e106f3dcb2b525be8f3a1 017-linux612.patch
3caf2049555f39f71270d768d0b25d0cc8177f50a649a915284467f87de1d74926ecff158e211f3c05ea7e3107ab4047ec005786cf3bb88e856431e537974ab5 018-linux613.patch
db8f677138ed9b25d2c8cc8f66dff340a63fdef5e6d8a325bc684bda80053b68441b84b2e8b148aff06de51dc357c9d2dcf6ac11d40814d0914c393a24e93d62 019-linux614.patch
"

View file

@ -0,0 +1,27 @@
Description: Fixing null pointer crash
Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773713
Bug-Ubuntu: https://launchpad.net/bugs/1415880
Last-Update: 2015-08-18
---
src/wl/sys/wl_linux.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 860b935..295156f 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -2157,8 +2157,8 @@ wl_start(struct sk_buff *skb, struct net_device *dev)
wlif = WL_DEV_IF(dev);
wl = WL_INFO(dev);
+ skb->prev = NULL;
if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) {
- skb->prev = NULL;
TXQ_LOCK(wl);
--
1.9.1

View file

@ -0,0 +1,22 @@
Since Linux 4.3, rdtscl() is no longer available and native_read_tsc()
is renamed to rdtsc(). Move the macro contents in-line and call the
new function. References:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=fe47ae6e1a5005b2e82f7eab57b5c3820453293a
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=4ea1636b04dbd66536fa387bae2eea463efc705b
diff -ru a/src/shared/linux_osl.c b/src/shared/linux_osl.c
--- a/src/shared/linux_osl.c 2015-09-19 01:47:15.000000000 +0300
+++ b/src/shared/linux_osl.c 2015-11-21 15:20:30.585902518 +0200
@@ -932,7 +932,11 @@
uint cycles;
#if defined(__i386__)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ cycles = (u32)rdtsc();
+#else
rdtscl(cycles);
+#endif
#else
cycles = 0;
#endif

View file

@ -0,0 +1,109 @@
Since Linux 4.7, the enum ieee80211_band is no longer used
This shall cause no problem's since both enums ieee80211_band
and nl80211_band were added in the same commit:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=13ae75b103e07304a34ab40c9136e9f53e06475c
This patch refactors the references of IEEE80211_BAND_* to NL80211_BAND_*
Reference:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcce37be7c1d2622b56587c10ade00e96afa3
--- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:57:36.159340297 -0500
+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:58:18.442323435 -0500
@@ -236,7 +236,7 @@
#endif
#define CHAN2G(_channel, _freq, _flags) { \
- .band = IEEE80211_BAND_2GHZ, \
+ .band = NL80211_BAND_2GHZ, \
.center_freq = (_freq), \
.hw_value = (_channel), \
.flags = (_flags), \
@@ -245,7 +245,7 @@
}
#define CHAN5G(_channel, _flags) { \
- .band = IEEE80211_BAND_5GHZ, \
+ .band = NL80211_BAND_5GHZ, \
.center_freq = 5000 + (5 * (_channel)), \
.hw_value = (_channel), \
.flags = (_flags), \
@@ -379,7 +379,7 @@
};
static struct ieee80211_supported_band __wl_band_2ghz = {
- .band = IEEE80211_BAND_2GHZ,
+ .band = NL80211_BAND_2GHZ,
.channels = __wl_2ghz_channels,
.n_channels = ARRAY_SIZE(__wl_2ghz_channels),
.bitrates = wl_g_rates,
@@ -387,7 +387,7 @@
};
static struct ieee80211_supported_band __wl_band_5ghz_a = {
- .band = IEEE80211_BAND_5GHZ,
+ .band = NL80211_BAND_5GHZ,
.channels = __wl_5ghz_a_channels,
.n_channels = ARRAY_SIZE(__wl_5ghz_a_channels),
.bitrates = wl_a_rates,
@@ -395,7 +395,7 @@
};
static struct ieee80211_supported_band __wl_band_5ghz_n = {
- .band = IEEE80211_BAND_5GHZ,
+ .band = NL80211_BAND_5GHZ,
.channels = __wl_5ghz_n_channels,
.n_channels = ARRAY_SIZE(__wl_5ghz_n_channels),
.bitrates = wl_a_rates,
@@ -1876,8 +1876,8 @@
wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX;
#endif
wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC);
- wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz;
- wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_a;
+ wdev->wiphy->bands[NL80211_BAND_2GHZ] = &__wl_band_2ghz;
+ wdev->wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_a;
wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
wdev->wiphy->cipher_suites = __wl_cipher_suites;
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
@@ -2000,7 +2000,7 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
freq = ieee80211_channel_to_frequency(notif_bss_info->channel,
(notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ?
- IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ);
+ NL80211_BAND_2GHZ : NL80211_BAND_5GHZ);
#else
freq = ieee80211_channel_to_frequency(notif_bss_info->channel);
#endif
@@ -2116,7 +2116,7 @@
return err;
}
chan = wf_chspec_ctlchan(chanspec);
- band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ;
+ band = (chan <= CH_MAX_2G_CHANNEL) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ;
freq = ieee80211_channel_to_frequency(chan, band);
channel = ieee80211_get_channel(wiphy, freq);
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
@@ -2250,10 +2250,10 @@
join_params->params.chanspec_list[0] =
ieee80211_frequency_to_channel(chan->center_freq);
- if (chan->band == IEEE80211_BAND_2GHZ) {
+ if (chan->band == NL80211_BAND_2GHZ) {
chanspec |= WL_CHANSPEC_BAND_2G;
}
- else if (chan->band == IEEE80211_BAND_5GHZ) {
+ else if (chan->band == NL80211_BAND_5GHZ) {
chanspec |= WL_CHANSPEC_BAND_5G;
}
else {
@@ -2885,7 +2885,7 @@
if (phy == 'n' || phy == 'a' || phy == 'v') {
wiphy = wl_to_wiphy(wl);
- wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_n;
+ wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_n;
}
return err;

View file

@ -0,0 +1,64 @@
From d3f93542326a06d920c6eb89b703384290d37b8b Mon Sep 17 00:00:00 2001
From: Alberto Milone <alberto.milone@canonical.com>
Date: Fri, 2 Sep 2016 17:35:34 +0200
Subject: [PATCH 1/1] Add support for Linux 4.8
Orginal author: Krzysztof Kolasa
---
src/wl/sys/wl_cfg80211_hybrid.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index 2fc71fe..ec5e472 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -2388,8 +2388,16 @@ wl_bss_connect_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
s32 err = 0;
if (wl->scan_request) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+ struct cfg80211_scan_info info = {
+ .aborted = true,
+ };
+ WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
+ cfg80211_scan_done(wl->scan_request, &info);
+#else
WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
cfg80211_scan_done(wl->scan_request, true);
+#endif
wl->scan_request = NULL;
}
@@ -2490,7 +2498,14 @@ wl_notify_scan_status(struct wl_cfg80211_priv *wl, struct net_device *ndev,
scan_done_out:
if (wl->scan_request) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+ struct cfg80211_scan_info info = {
+ .aborted = false,
+ };
+ cfg80211_scan_done(wl->scan_request, &info);
+#else
cfg80211_scan_done(wl->scan_request, false);
+#endif
wl->scan_request = NULL;
}
rtnl_unlock();
@@ -2909,7 +2924,14 @@ s32 wl_cfg80211_down(struct net_device *ndev)
s32 err = 0;
if (wl->scan_request) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+ struct cfg80211_scan_info info = {
+ .aborted = true,
+ };
+ cfg80211_scan_done(wl->scan_request, &info);
+#else
cfg80211_scan_done(wl->scan_request, true);
+#endif
wl->scan_request = NULL;
}
--
2.7.4

View file

@ -0,0 +1,161 @@
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -1968,7 +1968,7 @@
if (dtoh32(bi->length) > WL_BSS_INFO_MAX) {
WL_DBG(("Beacon is larger than buffer. Discarding\n"));
- return err;
+ return -E2BIG;
}
notif_bss_info = kzalloc(sizeof(*notif_bss_info) + sizeof(*mgmt) - sizeof(u8) +
WL_BSS_INFO_MAX, GFP_KERNEL);
@@ -1992,9 +1992,15 @@
beacon_proberesp->capab_info = cpu_to_le16(bi->capability);
wl_rst_ie(wl);
- wl_mrg_ie(wl, ((u8 *) bi) + bi->ie_offset, bi->ie_length);
- wl_cp_ie(wl, beacon_proberesp->variable, WL_BSS_INFO_MAX -
+ err = wl_mrg_ie(wl, ((u8 *) bi) + bi->ie_offset, bi->ie_length);
+ if (err)
+ goto inform_single_bss_out;
+
+ err = wl_cp_ie(wl, beacon_proberesp->variable, WL_BSS_INFO_MAX -
offsetof(struct wl_cfg80211_bss_info, frame_buf));
+ if (err)
+ goto inform_single_bss_out;
+
notif_bss_info->frame_len = offsetof(struct ieee80211_mgmt, u.beacon.variable) +
wl_get_ielen(wl);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
@@ -2006,14 +2012,14 @@
#endif
if (freq == 0) {
WL_ERR(("Invalid channel, fail to chcnage channel to freq\n"));
- kfree(notif_bss_info);
- return -EINVAL;
+ err = -EINVAL;
+ goto inform_single_bss_out;
}
channel = ieee80211_get_channel(wiphy, freq);
if (unlikely(!channel)) {
WL_ERR(("ieee80211_get_channel error\n"));
- kfree(notif_bss_info);
- return -EINVAL;
+ err = -EINVAL;
+ goto inform_single_bss_out;
}
WL_DBG(("SSID : \"%s\", rssi %d, channel %d, capability : 0x04%x, bssid %pM\n",
@@ -2021,28 +2027,37 @@
mgmt->u.beacon.capab_info, &bi->BSSID));
signal = notif_bss_info->rssi * 100;
- cbss = cfg80211_inform_bss_frame(wiphy, channel, mgmt,
- le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL);
- if (unlikely(!cbss)) {
- WL_ERR(("cfg80211_inform_bss_frame error\n"));
- kfree(notif_bss_info);
- return -EINVAL;
- }
- notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
- notify_ielen = le32_to_cpu(bi->ie_length);
+ if (!wl->scan_request) {
+ cbss = cfg80211_inform_bss_frame(wiphy, channel, mgmt,
+ le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL);
+ if (unlikely(!cbss)) {
+ WL_ERR(("cfg80211_inform_bss_frame error\n"));
+ err = -ENOMEM;
+ goto inform_single_bss_out;
+ }
+ } else {
+ notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
+ notify_ielen = le32_to_cpu(bi->ie_length);
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
- cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
- 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
- (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+ cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
#else
- cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet),
- 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
- (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+ cbss = cfg80211_inform_bss(wiphy, channel,
+ wl->active_scan ?
+ CFG80211_BSS_FTYPE_PRESP : CFG80211_BSS_FTYPE_BEACON,
+ (const u8 *)(bi->BSSID.octet), 0,
+ beacon_proberesp->capab_info,
+ beacon_proberesp->beacon_int,
+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
#endif
-
- if (unlikely(!cbss))
- return -ENOMEM;
+ if (unlikely(!cbss)) {
+ WL_ERR(("cfg80211_inform_bss error\n"));
+ err = -ENOMEM;
+ goto inform_single_bss_out;
+ }
+ }
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
cfg80211_put_bss(wiphy, cbss);
@@ -2050,6 +2065,7 @@
cfg80211_put_bss(cbss);
#endif
+inform_single_bss_out:
kfree(notif_bss_info);
return err;
@@ -2316,6 +2332,9 @@
if (err)
goto update_bss_info_out;
+ bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid,
+ ssid->SSID, ssid->SSID_len, WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
+
ie = ((u8 *)bi) + bi->ie_offset;
ie_len = bi->ie_length;
} else {
@@ -2328,11 +2347,18 @@
ie_len = bss->len_information_elements;
#endif
wl->conf->channel = *bss->channel;
+ }
+
+ if (bss) {
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
cfg80211_put_bss(wiphy, bss);
#else
cfg80211_put_bss(bss);
#endif
+ } else {
+ WL_DBG(("Could not update BSS\n"));
+ err = -EINVAL;
+ goto update_bss_info_out;
}
tim = bcm_parse_tlvs(ie, ie_len, WLAN_EID_TIM);
@@ -2360,10 +2386,17 @@
struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
s32 err = 0;
- wl_get_assoc_ies(wl);
+ err = wl_get_assoc_ies(wl);
+ if (err)
+ return err;
+
memcpy(wl->profile->bssid, &e->addr, ETHER_ADDR_LEN);
memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
- wl_update_bss_info(wl);
+
+ err = wl_update_bss_info(wl);
+ if (err)
+ return err;
+
cfg80211_roamed(ndev,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
&wl->conf->channel,

View file

@ -0,0 +1,27 @@
diff -u sys0/wl_cfg80211_hybrid.c sys/wl_cfg80211_hybrid.c
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -39,6 +39,10 @@
#include <proto/802.11.h>
#include <wl_cfg80211_hybrid.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
+
#define EVENT_TYPE(e) dtoh32((e)->event_type)
#define EVENT_FLAGS(e) dtoh16((e)->flags)
#define EVENT_STATUS(e) dtoh32((e)->status)
diff -u sys0/wl_linux.c sys/wl_linux.c
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -2915,7 +2915,9 @@
if (skb == NULL) return;
skb->dev = wl->monitor_dev;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
skb->dev->last_rx = jiffies;
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
skb_reset_mac_header(skb);
#else

View file

@ -0,0 +1,78 @@
From 0b888bf115612074df99654140a1980111c29748 Mon Sep 17 00:00:00 2001
From: Antoine Cotten <tonio.cotten@gmail.com>
Date: Fri, 7 Jul 2017 15:17:47 +0200
Subject: [PATCH] Apply patch from Debian bug #867258
Compile fix with kernel 4.12
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867258
---
src/wl/sys/wl_cfg80211_hybrid.c | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index c46944a..1a9840a 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -53,7 +53,11 @@ u32 wl_dbg_level = WL_DBG_ERR;
#endif
static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
- enum nl80211_iftype type, u32 *flags, struct vif_params *params);
+ enum nl80211_iftype type,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ u32 *flags,
+#endif
+ struct vif_params *params);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
static s32
wl_cfg80211_scan(struct wiphy *wiphy,
@@ -466,8 +470,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
static s32
wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
- enum nl80211_iftype type, u32 *flags,
- struct vif_params *params)
+ enum nl80211_iftype type,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ u32 *flags,
+#endif
+ struct vif_params *params)
{
struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
struct wireless_dev *wdev;
@@ -2387,6 +2394,15 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
const wl_event_msg_t *e, void *data)
{
struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ struct cfg80211_roam_info roam_info = {
+ .bssid = wl->profile->bssid,
+ .req_ie = conn_info->req_ie,
+ .req_ie_len = conn_info->req_ie_len,
+ .resp_ie = conn_info->resp_ie,
+ .resp_ie_len = conn_info->resp_ie_len,
+ };
+#endif
s32 err = 0;
err = wl_get_assoc_ies(wl);
@@ -2401,12 +2417,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
return err;
cfg80211_roamed(ndev,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ &roam_info,
+#else
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
&wl->conf->channel,
#endif
(u8 *)&wl->bssid,
conn_info->req_ie, conn_info->req_ie_len,
- conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
+ conn_info->resp_ie, conn_info->resp_ie_len,
+#endif
+ GFP_KERNEL);
WL_DBG(("Report roaming result\n"));
set_bit(WL_STATUS_CONNECTED, &wl->status);

View file

@ -0,0 +1,46 @@
--- a/src/wl/sys/wl_linux.c 2017-07-17 00:11:24.000000000 +0100
+++ b/src/wl/sys/wl_linux.c 2018-01-27 09:49:47.057799596 +0000
@@ -93,7 +93,11 @@
#include <wlc_wowl.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+static void wl_timer(struct timer_list *tl);
+#else
static void wl_timer(ulong data);
+#endif
static void _wl_timer(wl_timer_t *t);
static struct net_device *wl_alloc_linux_if(wl_if_t *wlif);
@@ -2297,10 +2301,17 @@
atomic_dec(&t->wl->callbacks);
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+static void
+wl_timer(struct timer_list *tl)
+{
+ wl_timer_t *t = (wl_timer_t *)tl;
+#else
static void
wl_timer(ulong data)
{
wl_timer_t *t = (wl_timer_t *)data;
+#endif
if (!WL_ALL_PASSIVE_ENAB(t->wl))
_wl_timer(t);
@@ -2352,9 +2363,13 @@
bzero(t, sizeof(wl_timer_t));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
+ timer_setup(&t->timer, wl_timer, 0);
+#else
init_timer(&t->timer);
t->timer.data = (ulong) t;
t->timer.function = wl_timer;
+#endif
t->wl = wl;
t->fn = fn;
t->arg = arg;

View file

@ -0,0 +1,14 @@
--- a/src/wl/sys/wl_cfg80211_hybrid.c 2015-09-19 00:47:30.000000000 +0200
+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2018-11-14 14:06:03.313487995 +0100
@@ -1444,11 +1444,10 @@
s32 rate;
s32 err = 0;
if (memcmp(mac, wl->profile->bssid, ETHER_ADDR_LEN)) {
WL_ERR(("Wrong Mac address, mac = %pM profile =%pM\n", mac, wl->profile->bssid));
- return -ENOENT;
}
err = wl_dev_ioctl(dev, WLC_GET_RATE, &rate, sizeof(rate));
if (err) {
WL_DBG(("Could not get rate (%d)\n", err));

View file

@ -0,0 +1,55 @@
diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c
index 6157d18..8237ec7 100644
--- a/src/shared/linux_osl.c
+++ b/src/shared/linux_osl.c
@@ -942,7 +942,7 @@ osl_getcycles(void)
void *
osl_reg_map(uint32 pa, uint size)
{
- return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
+ return (ioremap((unsigned long)pa, (unsigned long)size));
}
void
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 0d05100..2ed1f0d 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -582,7 +582,7 @@ wl_attach(uint16 vendor, uint16 device, ulong regs,
}
wl->bcm_bustype = bustype;
- if ((wl->regsva = ioremap_nocache(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
+ if ((wl->regsva = ioremap(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
WL_ERROR(("wl%d: ioremap() failed\n", unit));
goto fail;
}
@@ -772,7 +772,7 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if ((val & 0x0000ff00) != 0)
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
bar1_size = pci_resource_len(pdev, 2);
- bar1_addr = (uchar *)ioremap_nocache(pci_resource_start(pdev, 2),
+ bar1_addr = (uchar *)ioremap(pci_resource_start(pdev, 2),
bar1_size);
wl = wl_attach(pdev->vendor, pdev->device, pci_resource_start(pdev, 0), PCI_BUS, pdev,
pdev->irq, bar1_addr, bar1_size);
@@ -3335,12 +3335,19 @@ wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
+static struct proc_ops wl_fops = {
+ .proc_read = wl_proc_read,
+ .proc_write = wl_proc_write,
+};
+#else
static const struct file_operations wl_fops = {
.owner = THIS_MODULE,
.read = wl_proc_read,
.write = wl_proc_write,
};
#endif
+#endif
static int
wl_reg_proc_entry(wl_info_t *wl)

View file

@ -0,0 +1,211 @@
From f3d652840f8dd959395065a1cf67ca40b04ec69b Mon Sep 17 00:00:00 2001
From: Joan Bruguera <joanbrugueram@gmail.com>
Date: Tue, 13 Oct 2020 19:35:55 +0200
Subject: [PATCH] Get rid of get_fs/set_fs calls in Broadcom WL driver.
Tentative patch for broadcom-wl 6.30.223.271 driver for Linux 5.10 (tested -rc1 up to 5.10.1)
Applies on top of all the patches applied to broadcom-wl-dkms 6.30.223.271-23 on Arch Linux.
NB: Some checks in wlc_ioctl_internal are likely superfluous,
but I'm not familiar enough with the driver to remove them with confidence.
See also: https://lwn.net/Articles/722267/
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=47058bb54b57962b3958a936ddbc59355e4c5504
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e6e9852d6f76e01b2e6803c74258afa5b432bc5
Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
---
src/wl/sys/wl_cfg80211_hybrid.c | 25 ++-------------------
src/wl/sys/wl_iw.c | 25 ++-------------------
src/wl/sys/wl_linux.c | 40 ++++++++++++++++++++++++++++-----
src/wl/sys/wl_linux.h | 2 ++
src/wl/sys/wlc_pub.h | 1 +
5 files changed, 42 insertions(+), 51 deletions(-)
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index 7b606e0..1e0adb7 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -38,6 +38,7 @@
#include <wlioctl.h>
#include <proto/802.11.h>
#include <wl_cfg80211_hybrid.h>
+#include <wl_linux.h>
#define EVENT_TYPE(e) dtoh32((e)->event_type)
#define EVENT_FLAGS(e) dtoh16((e)->flags)
@@ -435,30 +436,7 @@ static void key_endian_to_host(struct wl_wsec_key *key)
static s32
wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
{
- struct ifreq ifr;
- struct wl_ioctl ioc;
- mm_segment_t fs;
- s32 err = 0;
-
- BUG_ON(len < sizeof(int));
-
- memset(&ioc, 0, sizeof(ioc));
- ioc.cmd = cmd;
- ioc.buf = arg;
- ioc.len = len;
- strcpy(ifr.ifr_name, dev->name);
- ifr.ifr_data = (caddr_t)&ioc;
-
- fs = get_fs();
- set_fs(get_ds());
-#if defined(WL_USE_NETDEV_OPS)
- err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
-#else
- err = dev->do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
-#endif
- set_fs(fs);
-
- return err;
+ return wlc_ioctl_internal(dev, cmd, arg, len);
}
static s32
diff --git a/src/wl/sys/wl_iw.c b/src/wl/sys/wl_iw.c
index c4c610b..e346b15 100644
--- a/src/wl/sys/wl_iw.c
+++ b/src/wl/sys/wl_iw.c
@@ -37,6 +37,7 @@ typedef const struct si_pub si_t;
#include <wl_dbg.h>
#include <wl_iw.h>
+#include <wl_linux.h>
extern bool wl_iw_conn_status_str(uint32 event_type, uint32 status,
uint32 reason, char* stringBuf, uint buflen);
@@ -103,29 +104,7 @@ dev_wlc_ioctl(
int len
)
{
- struct ifreq ifr;
- wl_ioctl_t ioc;
- mm_segment_t fs;
- int ret;
-
- memset(&ioc, 0, sizeof(ioc));
- ioc.cmd = cmd;
- ioc.buf = arg;
- ioc.len = len;
-
- strcpy(ifr.ifr_name, dev->name);
- ifr.ifr_data = (caddr_t) &ioc;
-
- fs = get_fs();
- set_fs(get_ds());
-#if defined(WL_USE_NETDEV_OPS)
- ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
-#else
- ret = dev->do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
-#endif
- set_fs(fs);
-
- return ret;
+ return wlc_ioctl_internal(dev, cmd, arg, len);
}
static int
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 947cef3..f04c148 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -1643,10 +1643,7 @@ wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
goto done2;
}
- if (segment_eq(get_fs(), KERNEL_DS))
- buf = ioc.buf;
-
- else if (ioc.buf) {
+ if (ioc.buf) {
if (!(buf = (void *) MALLOC(wl->osh, MAX(ioc.len, WLC_IOCTL_MAXLEN)))) {
bcmerror = BCME_NORESOURCE;
goto done2;
@@ -1667,7 +1664,7 @@ wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
WL_UNLOCK(wl);
done1:
- if (ioc.buf && (ioc.buf != buf)) {
+ if (ioc.buf) {
if (copy_to_user(ioc.buf, buf, ioc.len))
bcmerror = BCME_BADADDR;
MFREE(wl->osh, buf, MAX(ioc.len, WLC_IOCTL_MAXLEN));
@@ -1680,6 +1677,39 @@ done2:
return (OSL_ERROR(bcmerror));
}
+int
+wlc_ioctl_internal(struct net_device *dev, int cmd, void *buf, int len)
+{
+ wl_info_t *wl;
+ wl_if_t *wlif;
+ int bcmerror;
+
+ if (!dev)
+ return -ENETDOWN;
+
+ wl = WL_INFO(dev);
+ wlif = WL_DEV_IF(dev);
+ if (wlif == NULL || wl == NULL || wl->dev == NULL)
+ return -ENETDOWN;
+
+ bcmerror = 0;
+
+ WL_TRACE(("wl%d: wlc_ioctl_internal: cmd 0x%x\n", wl->pub->unit, cmd));
+
+ WL_LOCK(wl);
+ if (!capable(CAP_NET_ADMIN)) {
+ bcmerror = BCME_EPERM;
+ } else {
+ bcmerror = wlc_ioctl(wl->wlc, cmd, buf, len, wlif->wlcif);
+ }
+ WL_UNLOCK(wl);
+
+ ASSERT(VALID_BCMERROR(bcmerror));
+ if (bcmerror != 0)
+ wl->pub->bcmerror = bcmerror;
+ return (OSL_ERROR(bcmerror));
+}
+
static struct net_device_stats*
wl_get_stats(struct net_device *dev)
{
diff --git a/src/wl/sys/wl_linux.h b/src/wl/sys/wl_linux.h
index 5b1048e..c8c1f41 100644
--- a/src/wl/sys/wl_linux.h
+++ b/src/wl/sys/wl_linux.h
@@ -22,6 +22,7 @@
#define _wl_linux_h_
#include <wlc_types.h>
+#include <wlc_pub.h>
typedef struct wl_timer {
struct timer_list timer;
@@ -187,6 +188,7 @@ extern irqreturn_t wl_isr(int irq, void *dev_id, struct pt_regs *ptregs);
extern int __devinit wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
extern void wl_free(wl_info_t *wl);
extern int wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
+extern int wlc_ioctl_internal(struct net_device *dev, int cmd, void *buf, int len);
extern struct net_device * wl_netdev_get(wl_info_t *wl);
#endif
diff --git a/src/wl/sys/wlc_pub.h b/src/wl/sys/wlc_pub.h
index 53a98b8..2b5a029 100644
--- a/src/wl/sys/wlc_pub.h
+++ b/src/wl/sys/wlc_pub.h
@@ -24,6 +24,7 @@
#include <wlc_types.h>
#include <wlc_utils.h>
+#include <siutils.h>
#include "proto/802.11.h"
#include "proto/bcmevent.h"
--
2.28.0

View file

@ -0,0 +1,80 @@
From 31b7849092c43805c7fbaf7518b99874aa1b310c Mon Sep 17 00:00:00 2001
From: Joan Bruguera <joanbrugueram@gmail.com>
Date: Wed, 12 Jan 2022 20:49:20 +0100
Subject: [PATCH] Tentative fix for broadcom-wl 6.30.223.271 driver for Linux 5.17-rc1
Set netdev->dev_addr through dev_addr_mod + PDE_DATA fix
Since Linux 5.17 netdev->dev_addr is const and must be changed through
dev_addr_mod, otherwise a warning is logged in dmesg and bad things may happen.
NB: The #if is not wrong, dev_addr_mod is defined since Linux 5.15-rc1
Plus a trivial fix for PDE_DATA.
Applies on top of all the patches applied to broadcom-wl-dkms 6.30.223.271-28 on Arch Linux.
See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=adeef3e32146a8d2a73c399dc6f5d76a449131b1
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=359745d78351c6f5442435f81549f0207ece28aa
---
src/wl/sys/wl_linux.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index e491df7..e4614fb 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -93,6 +93,10 @@ struct iw_statistics *wl_get_wireless_stats(struct net_device *dev);
#include <wlc_wowl.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0))
+#define PDE_DATA pde_data
+#endif
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
static void wl_timer(struct timer_list *tl);
#else
@@ -490,6 +494,12 @@ wl_if_setup(struct net_device *dev)
#endif
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
+static inline void eth_hw_addr_set(struct net_device *dev, const void *addr) {
+ memcpy(dev->dev_addr, addr, ETHER_ADDR_LEN);
+}
+#endif
+
static wl_info_t *
wl_attach(uint16 vendor, uint16 device, ulong regs,
uint bustype, void *btparam, uint irq, uchar* bar1_addr, uint32 bar1_size)
@@ -634,7 +644,7 @@ wl_attach(uint16 vendor, uint16 device, ulong regs,
WL_ERROR(("wl%d: Error setting MAC ADDRESS\n", unit));
}
#endif
- bcopy(&wl->pub->cur_etheraddr, dev->dev_addr, ETHER_ADDR_LEN);
+ eth_hw_addr_set(dev, wl->pub->cur_etheraddr.octet);
online_cpus = 1;
@@ -1835,7 +1845,7 @@ wl_set_mac_address(struct net_device *dev, void *addr)
WL_LOCK(wl);
- bcopy(sa->sa_data, dev->dev_addr, ETHER_ADDR_LEN);
+ eth_hw_addr_set(dev, sa->sa_data);
err = wlc_iovar_op(wl->wlc, "cur_etheraddr", NULL, 0, sa->sa_data, ETHER_ADDR_LEN,
IOV_SET, (WL_DEV_IF(dev))->wlcif);
WL_UNLOCK(wl);
@@ -3010,7 +3020,7 @@ _wl_add_monitor_if(wl_task_t *task)
else
dev->type = ARPHRD_IEEE80211_RADIOTAP;
- bcopy(wl->dev->dev_addr, dev->dev_addr, ETHER_ADDR_LEN);
+ eth_hw_addr_set(dev, wl->dev->dev_addr);
#if defined(WL_USE_NETDEV_OPS)
dev->netdev_ops = &wl_netdev_monitor_ops;
--
2.35.1

View file

@ -0,0 +1,71 @@
diff -u -r a/src/shared/linux_osl.c b/src/shared/linux_osl.c
--- a/src/shared/linux_osl.c 2022-05-24 20:51:15.662604980 +0000
+++ b/src/shared/linux_osl.c 2022-05-24 21:13:38.264472425 +0000
@@ -599,6 +599,8 @@
va = kmalloc(size, GFP_ATOMIC | __GFP_ZERO);
if (va)
*pap = (ulong)__virt_to_phys(va);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ va = dma_alloc_coherent(&((struct pci_dev *)osh->pdev)->dev, size, (dma_addr_t*)pap, GFP_ATOMIC);
#else
va = pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap);
#endif
@@ -612,6 +614,8 @@
#ifdef __ARM_ARCH_7A__
kfree(va);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ dma_free_coherent(&((struct pci_dev *)osh->pdev)->dev, size, va, (dma_addr_t)pa);
#else
pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa);
#endif
@@ -623,7 +627,11 @@
int dir;
ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE;
+#else
dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
+#endif
#if defined(__ARM_ARCH_7A__) && defined(BCMDMASGLISTOSL)
if (dmah != NULL) {
@@ -641,7 +649,11 @@
ASSERT(totsegs + nsegs <= MAX_DMA_SEGS);
sg->page_link = 0;
sg_set_buf(sg, PKTDATA(osh, skb), PKTLEN(osh, skb));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ dma_map_single(&((struct pci_dev *)osh->pdev)->dev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir);
+#else
pci_map_single(osh->pdev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir);
+#endif
}
totsegs += nsegs;
totlen += PKTLEN(osh, skb);
@@ -656,7 +668,11 @@
}
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ return (dma_map_single(&((struct pci_dev *)osh->pdev)->dev, va, size, dir));
+#else
return (pci_map_single(osh->pdev, va, size, dir));
+#endif
}
void BCMFASTPATH
@@ -665,8 +681,13 @@
int dir;
ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE;
+ dma_unmap_single(&((struct pci_dev *)osh->pdev)->dev, (uint32)pa, size, dir);
+#else
dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
pci_unmap_single(osh->pdev, (uint32)pa, size, dir);
+#endif
}
#if defined(BCMDBG_ASSERT)

View file

@ -0,0 +1,37 @@
From: Gerardo Esteban Malazdrewicz <gerardo@malazdrewicz.com.ar>
Date: Fri, 29 Dec 2017 23:44:24 -0400
Subject: linux414
Origin: https://bugs.debian.org/885885
linux 4.14 changed the kernel_read function prototype.
---
src/shared/linux_osl.c | 12 +++++++++++-
1 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c
index 9adc392..b24a973 100644
--- a/src/shared/linux_osl.c
+++ b/src/shared/linux_osl.c
@@ -1076,11 +1076,21 @@ osl_os_get_image_block(char *buf, int len, void *image)
{
struct file *fp = (struct file *)image;
int rdlen;
+ loff_t pos;
if (!image)
return 0;
- rdlen = kernel_read(fp, fp->f_pos, buf, len);
+ pos = fp->f_pos;
+ rdlen = kernel_read(fp,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ pos,
+#endif
+ buf, len
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+ ,&pos
+#endif
+ );
if (rdlen > 0)
fp->f_pos += rdlen;

View file

@ -0,0 +1,31 @@
From 933540c63f33e6ac2825d65c4b681ef3387d9146 Mon Sep 17 00:00:00 2001
From: Antoine Cotten <hello@acotten.com>
Date: Mon, 15 Aug 2022 17:53:51 +0200
Subject: [PATCH] cfg80211_roam_info compat for MLO APIs in Linux >= 6.0
The 'bssid' struct field is now under 'links.bssid'.
See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=efbabc11650040c64884ff3019b88c7bcc0ceb1d
Original patch by Joan Bruguera:
https://gist.github.com/joanbm/207210d74637870c01ef5a3c262a597d
---
src/wl/sys/wl_cfg80211_hybrid.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index 5e9e6d3..5ec35c5 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -2412,7 +2412,11 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
struct cfg80211_roam_info roam_info = {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0)
.bssid = wl->profile->bssid,
+#else
+ .links[0].bssid = wl->profile->bssid,
+#endif
.req_ie = conn_info->req_ie,
.req_ie_len = conn_info->req_ie_len,
.resp_ie = conn_info->resp_ie,

View file

@ -0,0 +1,90 @@
diff -Nurp a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
--- a/src/wl/sys/wl_cfg80211_hybrid.c 2022-12-12 00:23:30.821615599 +0000
+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2022-12-12 00:35:47.854975024 +0000
@@ -105,14 +105,28 @@ static s32 wl_cfg80211_get_tx_power(stru
static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm);
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32 wl_cfg80211_config_default_key(struct wiphy *wiphy,
+ struct net_device *dev, int link_id, u8 key_idx, bool unicast,
+ bool multicast);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
static s32 wl_cfg80211_config_default_key(struct wiphy *wiphy,
struct net_device *dev, u8 key_idx, bool unicast, bool multicast);
#else
static s32 wl_cfg80211_config_default_key(struct wiphy *wiphy,
struct net_device *dev, u8 key_idx);
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32 wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr,
+ struct key_params *params);
+static s32 wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr);
+static s32 wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr,
+ void *cookie,
+ void (*callback) (void *cookie, struct key_params *params));
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
static s32 wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
u8 key_idx, bool pairwise, const u8 *mac_addr, struct key_params *params);
static s32 wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev,
@@ -1161,7 +1175,12 @@ static s32 wl_cfg80211_get_tx_power(stru
return err;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32
+wl_cfg80211_config_default_key(struct wiphy *wiphy,
+ struct net_device *dev, int link_id, u8 key_idx, bool unicast,
+ bool multicast)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
static s32
wl_cfg80211_config_default_key(struct wiphy *wiphy,
struct net_device *dev, u8 key_idx, bool unicast, bool multicast)
@@ -1186,7 +1205,12 @@ wl_cfg80211_config_default_key(struct wi
return 0;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32
+wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr,
+ struct key_params *params)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
static s32
wl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *dev,
u8 key_idx, bool pairwise, const u8 *mac_addr, struct key_params *params)
@@ -1307,7 +1331,11 @@ wl_cfg80211_add_key(struct wiphy *wiphy,
return err;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32
+wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
static s32
wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev,
u8 key_idx, bool pairwise, const u8 *mac_addr)
@@ -1350,7 +1378,13 @@ wl_cfg80211_del_key(struct wiphy *wiphy,
return err;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
+static s32
+wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev,
+ int link_id, u8 key_idx, bool pairwise, const u8 *mac_addr,
+ void *cookie,
+ void (*callback) (void *cookie, struct key_params * params))
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
static s32
wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev,
u8 key_idx, bool pairwise, const u8 *mac_addr, void *cookie,

View file

@ -0,0 +1,15 @@
diff -Nurp a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
--- a/src/wl/sys/wl_linux.c 2024-11-19 03:05:21.160736778 +0000
+++ b/src/wl/sys/wl_linux.c 2024-11-19 03:09:59.010905106 +0000
@@ -56,7 +56,11 @@
#include <asm/irq.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)
+#include <linux/unaligned.h>
+#else
#include <asm/unaligned.h>
+#endif
#include <proto/802.1d.h>

View file

@ -0,0 +1,32 @@
From 5788a19e88aac78e6b2ec8bef7cb094fc14cfbf0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
Date: Sat, 12 Oct 2024 11:54:40 +0000
Subject: [PATCH] Tentative patch for broadcom-wl 6.30.223.271 driver for Linux
6.13-rc1
The net/lib80211.h header has been removed by commit
"wifi: ipw2x00/lib80211: move remaining lib80211 into libipw"
(Johannes Berg, 7 Oct 2024).
The header does not appear to be actually used anywhere, so remove it.
#include <asm/irq.h>
#include <asm/pgtable.h>
---
src/include/linuxver.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/include/linuxver.h b/src/include/linuxver.h
index b05bc32..06e32eb 100644
--- a/src/include/linuxver.h
+++ b/src/include/linuxver.h
@@ -147,7 +147,7 @@ typedef irqreturn_t(*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs);
#include <linux/sched.h>
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
#include <net/lib80211.h>
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
--
2.47.0

View file

@ -0,0 +1,34 @@
From: Eduard Bloch <blade@debian.org>
Date: Sun, 16 Mar 2025 16:13:08 +0100
Subject: Prepare for 6.14.0-rc6
---
src/wl/sys/wl_cfg80211_hybrid.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index 2c865c1..e23ef83 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -98,7 +98,9 @@ static s32 wl_cfg80211_set_tx_power(struct wiphy *wiphy,
enum tx_power_setting type, s32 mbm);
#endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 14, 0)
+static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, u32 /*link_id*/, s32 *dbm);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, s32 *dbm);
#else
static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm);
@@ -1159,7 +1161,9 @@ wl_cfg80211_set_tx_power(struct wiphy *wiphy, enum tx_power_setting type, s32 mb
return err;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 14, 0)
+static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, u32 /*link_id*/, s32 *dbm)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, s32 *dbm)
#else
static s32 wl_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm)

View file

@ -0,0 +1,31 @@
# Broadcom wl driver for alpine linux
Uses [akms](https://github.com/jirutka/akms)
Since alpine got rid of non-free repository, the only way is to build driver from third-party APKBUILD.
**Installation:**
1. follow this instructions: <https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package#Setup_your_system_and_account>
2. Copy ~/.abuild/key.rsa.pub into /etc/apk/keys
3. Enter PACKAGER_PRIVKEY="$HOME/.abuild/key.rsa" into ~/.abuild/abuild.conf
4. Clone this repo and cd into it
5. Build package with `abuild -r`
6. Go into ~/packages/broadcom-wl-akms/x86_64 and install package with `apk add broadcom-wl-6.30.223.271-r0.apk`
It`s done!
If you followed instructions in wiki about keygen you can skip steps 2 and 3.
---
Tested with Broadcom BCM43142, iwd, alpine edge
With iwd and busybox's dhcp you will need to add that to iwd config
```
[General]
EnableNetworkConfiguration=True
```
With dhcpcd it may work without it

View file

@ -0,0 +1,85 @@
# Maintainer: Şahan Yılmaz <sahan@chronalinux.org.tr>
pkgname=cdesktop-jwm
pkgver=1.4
pkgrel=0
pkgdesc="Minimal JWM Masaüstü Ortamı"
url="https://chronalinux.net.tr"
arch="all"
license="MIT"
depends="
jwm
spacefm
xorg-server
xf86-input-libinput
xinit
eudev
menumaker
volumeicon
alsa-utils
alsaconf
mesa-dri-gallium
chrona-networkmanager-gtk
netsurf
st
font-dejavu
adwaita-icon-theme
dbus
dbus-x11
tint2
xterm
mesa-gles
"
# Ek yapılandırma dosyaları eklendi
source="
jwmrc
mainmenu.svg
tint2.conf
JWMMenu
chrona-startup.sh
cdesktop-wallpaper
chrona25-04.png
"
build() {
return 0
}
package() {
mkdir -p "$pkgdir"/etc/skel
mkdir -p "$pkgdir"/etc/skel/.config/tint2
mkdir -p "$pkgdir"/etc/skel/.config/cdesktop
mkdir -p "$pkgdir"/usr/share/cdesktop/
mkdir -p "$pkgdir"/usr/share/icons/chrona/
mkdir -p "$pkgdir"/usr/share/applications/
mkdir -p "$pkgdir"/usr/share/cdesktop/wallpapers
install -Dm644 chrona25-04.png "$pkgdir"/usr/share/cdesktop/wallpapers/chrona25-04.png
install -Dm644 mainmenu.svg "$pkgdir"/usr/share/icons/chrona/mainmenu.svg
install -Dm644 jwmrc "$pkgdir"/etc/skel/.jwmrc
install -Dm644 tint2.conf "$pkgdir"/etc/skel/.config/tint2/tint2rc
install -Dm755 JWMMenu "$pkgdir"/usr/share/cdesktop/JWMMenu
install -Dm755 chrona-startup.sh "$pkgdir"/etc/skel/.config/cdesktop/cdesktop-startup.sh
install -Dm755 cdesktop-wallpaper "$pkgdir"/etc/skel/.config/cdesktop/cdesktop-wallpaper
cat >"$pkgdir"/usr/share/applications/cdesktop.desktop<<EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=JWMMenu
Comment=Main Menu Desktop Application
Exec=
Icon=/usr/share/icons/chrona/mainmenu.svg
Terminal=false
Categories=Utility;
EOF
}
sha512sums="
6f4e4f96d2aac9f7b43e8f0318caa0d0628529c4ba94f1e53045c808703c7296c8426f2d7b4632a9e67d05ea43c3dca4c5aa447a22fd0d87ee32f4be5c5f1001 JWMMenu
134158c66afa66eafc1e085bd2a5ee9fc2a587a6d1fd6b09b106081309968245cecbe9360cf3c33a6a9c3b97f4e42ed028024ee45349f217e27168c6cc9431a2 chrona-startup.sh
e614d2913c5a06cb14445977872630bfca34377b96fda0382a159d547df04cff0ad7c5e55b20cfc04185ca627ad3a093bf5126775c1c4ac64e17921a4eca8153 jwmrc
a4cf9ec771d6b45f44f5281ebe4c16d10c72dc3ebd08edc3c0bb1932762ea56028285bb2e5130df7fbdeba1d4085b9486600f102359c803925908e2ea98306c1 mainmenu.svg
1d08e62d251fdd563de308c5e7e3992a267cea5caffcb674ec1b1ad9d91353223655745c278cc6359683914d3c65909dcde9b461efcacadff7ed4a9f600d3ddb tint2.conf
8bbf2565d4e6c2f743a23e14331db0e7e3ec22e51281baf7d056eac53425719850d17c5ac4f32d785bd685e7b9f93b60bb79b592a2c0714af5aaa74af2b0a942 chrona25-04.png
6e18cfe8179dfae345f2e11988728701610a61205dd086f483b9dba1264f141d5f0e4f8933bce576fadf667cef17ce38d8b29b296b9a4c3f95aa2886d13d7e7f cdesktop-wallpaper
"

34
main/cdesktop-jwm/JWMMenu Normal file
View file

@ -0,0 +1,34 @@
[Menu]
Title = ChronaLinux
Icon = /usr/share/icons/chrona/mainmenu.svg
[Submenu]
Title = Programs
Icon = /usr/share/icons/hicolor/22x22/apps/system-tools.png
[Item]
Name = Terminal
Icon = /usr/share/icons/hicolor/22x22/apps/terminal.png
Action = Exec st
[Item]
Name = Browser
Icon = /usr/share/icons/hicolor/22x22/apps/www.png
Action = Exec netsurf
[Item]
Name = Text Editor
Icon = /usr/share/icons/hicolor/22x22/apps/text-editor.png
Action = Exec mousepad
[Separator]
[Item]
Name = Restart JWM
Icon = /usr/share/icons/hicolor/22x22/actions/reload.png
Action = Exec jwmrestart
[Item]
Name = Exit
Icon = /usr/share/icons/hicolor/22x22/actions/exit.png
Action = Exec jwmexit

View file

@ -0,0 +1,9 @@
#!/bin/sh
FLAGFILE="$HOME/.cache/spacefm_wallpaper_set"
if [ ! -f "$FLAGFILE" ]; then
spacefm --set-wallpaper /usr/share/cdesktop/wallpapers/chrona25-04.png
touch "$FLAGFILE"
fi
exit 0

View file

@ -0,0 +1,7 @@
#!/bin/sh
sh ~/.config/cdesktop/cdesktop-wallpaper &
spacefm --desktop &
mmaker -f jwm > ~/.jwm/menu &
nm-applet &
volumeicon &
tint2

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

45
main/cdesktop-jwm/jwmrc Normal file
View file

@ -0,0 +1,45 @@
<?xml version="1.0"?>
<JWM>
<IconPath>/usr/share/icons/hicolor/256x256/apps</IconPath>
<IconPath>/usr/share/icons/hicolor/256x256/mimetypes</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/actions</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/apps</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/categories</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/devices</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/emblems</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/mimetypes</IconPath>
<IconPath>/usr/share/icons/hicolor/32x32/status</IconPath>
<IconPath>/usr/share/icons/hicolor/512x512/apps</IconPath>
<IconPath>/usr/share/icons/hicolor/512x512/mimetypes</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/actions</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/apps</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/categories</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/devices</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/emblems</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/mimetypes</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/places</IconPath>
<IconPath>/usr/share/icons/hicolor/scalable/status</IconPath>
<IconPath>/usr/share/icons</IconPath>
<RootMenu label="Menu">
<Include>~/.jwm/menu</Include>
<Restart label="Restart JWM" icon="reload"/>
<Exit label="Çıkış" icon="exit"/>
</RootMenu>
<Desktops width="0"/>
<Group>
<Option>nolist</Option>
</Group>
<StartupCommand>sh ~/.config/cdesktop/cdesktop-startup.sh</StartupCommand>
<WindowStyle>
<Font>sans-12</Font>
<Width>4</Width>
<Height>24</Height>
</WindowStyle>
<Key mask="A" key="F3">root:1</Key>
</JWM>

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 124 KiB

View file

@ -0,0 +1,181 @@
#---- Generated by tint2conf 2641 ----
# See https://gitlab.com/o9000/tint2/wikis/Configure for
# full documentation of the configuration options.
#-------------------------------------
# Backgrounds
# Background 1: Panel
rounded = 0
border_width = 0
background_color = #000000 60
border_color = #000000 30
background_color_hover = #000000 60
border_color_hover = #000000 30
background_color_pressed = #000000 60
border_color_pressed = #000000 30
# Background 2: Default task, Iconified task
rounded = 4
border_width = 1
background_color = #777777 20
border_color = #777777 30
background_color_hover = #aaaaaa 22
border_color_hover = #eaeaea 44
background_color_pressed = #555555 4
border_color_pressed = #eaeaea 44
# Background 3: Active task
rounded = 4
border_width = 1
background_color = #777777 20
border_color = #ffffff 40
background_color_hover = #aaaaaa 22
border_color_hover = #eaeaea 44
background_color_pressed = #555555 4
border_color_pressed = #eaeaea 44
# Background 4: Urgent task
rounded = 4
border_width = 1
background_color = #aa4400 100
border_color = #aa7733 100
background_color_hover = #cc7700 100
border_color_hover = #aa7733 100
background_color_pressed = #555555 4
border_color_pressed = #aa7733 100
# Background 5: Tooltip
rounded = 1
border_width = 1
background_color = #ffffaa 100
border_color = #000000 100
background_color_hover = #ffffaa 100
border_color_hover = #000000 100
background_color_pressed = #ffffaa 100
border_color_pressed = #000000 100
#-------------------------------------
# Panel
panel_items = LTSC
panel_size = 100% 30
panel_margin = 0 0
panel_padding = 2 0 2
panel_background_id = 1
wm_menu = 1
panel_dock = 0
panel_position = bottom center horizontal
panel_layer = top
panel_monitor = all
primary_monitor_first = 0
autohide = 0
autohide_show_timeout = 0
autohide_hide_timeout = 0.5
autohide_height = 2
strut_policy = follow_size
panel_window_name = tint2
disable_transparency = 1
mouse_effects = 1
font_shadow = 0
mouse_hover_icon_asb = 100 0 10
mouse_pressed_icon_asb = 100 0 0
#-------------------------------------
# Taskbar
taskbar_mode = single_desktop
taskbar_padding = 0 0 2
taskbar_background_id = 0
taskbar_active_background_id = 0
taskbar_name = 1
taskbar_hide_inactive_tasks = 0
taskbar_hide_different_monitor = 0
taskbar_always_show_all_desktop_tasks = 0
taskbar_name_padding = 4 2
taskbar_name_background_id = 0
taskbar_name_active_background_id = 0
taskbar_name_font_color = #e3e3e3 100
taskbar_name_active_font_color = #ffffff 100
taskbar_distribute_size = 0
taskbar_sort_order = none
task_align = left
#-------------------------------------
# Task
task_text = 1
task_icon = 1
task_centered = 1
urgent_nb_of_blink = 100000
task_maximum_size = 150 35
task_padding = 2 2 4
task_tooltip = 1
task_font_color = #ffffff 100
task_background_id = 2
task_active_background_id = 3
task_urgent_background_id = 4
task_iconified_background_id = 2
mouse_left = toggle_iconify
mouse_middle = none
mouse_right = close
mouse_scroll_up = toggle
mouse_scroll_down = iconify
#-------------------------------------
# System tray (notification area)
systray_padding = 0 4 2
systray_background_id = 0
systray_sort = ascending
systray_icon_size = 24
systray_icon_asb = 100 0 0
systray_monitor = 1
#-------------------------------------
# Launcher
launcher_padding = 2 4 2
launcher_background_id = 0
launcher_icon_background_id = 0
launcher_icon_size = 24
launcher_icon_asb = 100 0 0
launcher_icon_theme_override = 0
startup_notifications = 1
launcher_tooltip = 1
launcher_item_app = /usr/share/applications/cdesktop.desktop
#-------------------------------------
# Clock
time1_format = %H:%M
time2_format = %A %d %B
time1_timezone =
time2_timezone =
clock_font_color = #ffffff 100
clock_padding = 2 0
clock_background_id = 0
clock_tooltip =
clock_tooltip_timezone =
clock_lclick_command =
clock_rclick_command = orage
clock_mclick_command =
clock_uwheel_command =
clock_dwheel_command =
#-------------------------------------
# Battery
battery_tooltip = 1
battery_low_status = 10
battery_low_cmd = notify-send "battery low"
battery_font_color = #ffffff 100
battery_padding = 1 0
battery_background_id = 0
battery_hide = 101
battery_lclick_command =
battery_rclick_command =
battery_mclick_command =
battery_uwheel_command =
battery_dwheel_command =
ac_connected_cmd =
ac_disconnected_cmd =
#-------------------------------------
# Tooltip
tooltip_show_timeout = 0.5
tooltip_hide_timeout = 0.1
tooltip_padding = 2 2
tooltip_background_id = 5
tooltip_font_color = #222222 100

86
main/chrona-base/APKBUILD Normal file
View file

@ -0,0 +1,86 @@
# Maintainer: Şahan Yılmaz <sahan@chrona.org.tr>
pkgname=chrona-base
pkgver=25.04
pkgrel=0
pkgdesc="Meta package for minimal chrona base"
url="https://chronalinux.org.tr"
arch="noarch"
license="MIT"
depends="
alpine-baselayout
alpine-conf
chrona-release
apk-tools
busybox
busybox-mdev-openrc
busybox-openrc
busybox-suid
musl-utils
openrc
chrona-base-openrc
"
subpackages="chrona-release:release $pkgname-openrc:openrc"
replaces="alpine-baselayout"
options="!check"
package() {
mkdir -p "$pkgdir"
}
release() {
depends="alpine-keys"
pkgdesc="Chrona release data"
mkdir -p "$subpkgdir"/etc
# create /etc/alpine-release
echo $pkgver > "$subpkgdir"/etc/alpine-release
local _ver="$(echo "$pkgver" | grep -E -o '^[0-9]+\.[0-9]+')"
local _rel="v$_ver"
case "$pkgver" in
*_alpha*|*_beta*|*_pre*)
_ver="$pkgver (edge)"
_rel="edge"
;;
esac
# create /etc/issue
cat >"$subpkgdir"/etc/issue<<EOF
Welcome to Chrona Linux $_ver
Kernel \\r on an \\m (\\l)
EOF
cat >"$subpkgdir"/etc/motd<<EOF
Welcome Chrona Linux !!
Web Site: https://chronalinux.org.tr/
Mastodon: https://floss.social/@chronalinux
Me: https://sahanyilmaz.net.tr/
EOF
# create os-release
mkdir -p "$subpkgdir"/usr/lib
cat >"$subpkgdir"/usr/lib/os-release<<EOF
NAME="Chrona Linux"
ID=alpine
VERSION_ID=$pkgver
PRETTY_NAME="Chrona Linux $_rel"
HOME_URL="https://chronalinux.org.tr/"
BUG_REPORT_URL="https://github.com/chronaos/chronaos/issues"
EOF
ln -s ../usr/lib/os-release "$subpkgdir"/etc/os-release
# create secfixes.d repository list
mkdir -p "$subpkgdir"/etc/secfixes.d
cat >"$subpkgdir"/etc/secfixes.d/alpine<<EOF
https://secdb.alpinelinux.org/$_rel/main.json
https://secdb.alpinelinux.org/$_rel/community.json
EOF
}
openrc() {
pkgdesc="Chrona Base OpenRC"
depends="openrc"
source="modloop.initd"
replaces="openrc"
mkdir -p "$subpkgdir"
install -Dm755 modloop.initd "$subpkgdir"/etc/init.d/modloop
sha512sums="59f9116ba64cb8350c91981ae31caca01fbf4c731b2446997f74aeaefa8acfb3a86bc5f811007ddf952ae53767884c8e74f786bb3927e148d809f7f72250ffa3 modloop.initd"
}

View file

@ -0,0 +1,32 @@
#!/sbin/openrc-run
depend() {
after dev-mount
before checkfs fsck hwdrivers modules hwclock dev sysfs
keyword -vserver -lxc
}
start() {
ebegin "Checking required directories"
KERNEL_VERSION=$(uname -r)
MODULES_DIR="/lib/modules/$KERNEL_VERSION"
FIRMWARE_DIR="/lib/firmware"
if [ ! -d "$MODULES_DIR" ]; then
eerror "$MODULES_DIR not found! Kernel modules may be missing."
return 1
fi
if [ ! -d "$FIRMWARE_DIR" ]; then
eerror "$FIRMWARE_DIR not found! Firmware files may be missing."
return 1
fi
eend 0
}
stop() {
ebegin "Stopping service"
eend 0
}

View file

@ -0,0 +1,16 @@
# Maintainer: Şahan Yılmaz <sahan@chronalinux.org.tr>
pkgname=chrona-installer
pkgver=25.04
pkgrel=3
pkgdesc="Chrona Linux Installer"
url="https://chronalinux.org.tr"
arch="all"
license="MIT"
depends="rsync squashfs-tools sfdisk"
replaces="alpine-conf"
source="ci-disk"
package() {
mkdir -p "$pkgdir"
install -Dm755 ci-disk "$pkgdir"/usr/sbin/ci-disk
}
sha512sums="dcf3a9eaede3eec9ee31ac2c6e9d3d8dfbb8ae76e3979edb4127efc29c5e29cca8eb24fca13c19f568a4000c1b378f3f2c94e33d3f3c1b6734d562f954444767 ci-disk"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,23 @@
# Maintainer: Şahan Yılmaz <sahan@chrona.org.tr>
pkgname=chrona-live-boot
pkgver=1.1
pkgrel=6
pkgdesc="Live Packages for Chrona Linux"
url="https://chronalinux.org.tr"
arch="all"
license="MIT"
install="$pkgname.post-install"
subpackages="chrona-live-boot-openrc:openrc"
depends="chrona-live-boot-openrc"
package() {
mkdir -p "$pkgdir"
}
openrc() {
replaces="openrc"
mkdir -p "$subpkgdir"
source="clive.initd"
install -Dm755 clive.initd "$subpkgdir"/etc/init.d/clive
sha512sums="f83455ea6a0ca6de196199fc449a2a22e182e0c8e1a3726ed3da2c7153cff8d1919f95980fd3df0f82996b32384e0a779dd196fdca7d0bdc7c3f9f402496d39c clive.initd
"
}

View file

@ -0,0 +1,42 @@
#!/bin/sh
# Create the 'chrona-live' group (continue even if the command fails)
addgroup -S chrona-live || true
# Create the 'chrona-live' user with basic settings
adduser -S -D -h /home/chrona-live -s /bin/sh -G chrona-live -g "Chrona Live User" chrona-live
echo "chrona-live:chrona-live" | chpasswd
# Add the user to additional groups; attempt to create each group first
# tty group
addgroup tty || true
addgroup chrona-live tty
# plugdev group
addgroup plugdev || true
addgroup chrona-live plugdev
# audio group
addgroup audio || true
addgroup chrona-live audio
# video group
addgroup video || true
addgroup chrona-live video
# input group
addgroup input || true
addgroup chrona-live input
# Configure udev rules for tty subsystem
mkdir -p /etc/udev/rules.d/
echo "SUBSYSTEM==\"tty\", KERNEL==\"tty[0-9]*\", GROUP=\"tty\", MODE=\"0660\"" > /etc/udev/rules.d/99-tty.rules
# Create messagebus group and user for D-Bus
addgroup -S messagebus 2>/dev/null
adduser -S -D -H -h /dev/null -s /sbin/nologin -G messagebus -g messagebus messagebus 2>/dev/null
# Confirm user setup
echo "chrona-live user created and added to plugdev, tty, audio, video, and input groups."
exit 0

View file

@ -0,0 +1,148 @@
#!/sbin/openrc-run
depend() {
before networkmanager
}
# Check if a specific package is installed
check_pkg() {
# -e option lists only installed packages
apk info -e "$1" >/dev/null 2>&1
return $?
}
# Configure .xinitrc for cdesktop (icewm-session)
configure_xinitrc_for_cdesktop_icewm() {
XINITRC_PATH="/home/chrona-live/.xinitrc"
# Skip if .xinitrc exists and already configured for icewm-session
if [ -f "$XINITRC_PATH" ] && grep -q "exec icewm-session" "$XINITRC_PATH"; then
return 0
fi
# Create .xinitrc with icewm-session configuration
cat > "$XINITRC_PATH" <<EOF
#!/bin/sh
exec icewm-session
EOF
# Set ownership and permissions
chown chrona-live:chrona-live "$XINITRC_PATH"
chmod 755 "$XINITRC_PATH"
}
configure_xinitrc_for_cdesktop_jwm() {
XINITRC_PATH="/home/chrona-live/.xinitrc"
# Skip if .xinitrc exists and already configured for icewm-session
if [ -f "$XINITRC_PATH" ] && grep -q "exec icewm-session" "$XINITRC_PATH"; then
return 0
fi
# Create .xinitrc with icewm-session configuration
cat > "$XINITRC_PATH" <<EOF
#!/bin/sh
exec jwm
EOF
# Set ownership and permissions
chown chrona-live:chrona-live "$XINITRC_PATH"
chmod 755 "$XINITRC_PATH"
}
# Configure .xinitrc for xfce4
configure_xinitrc_for_xfce() {
XINITRC_PATH="/home/chrona-live/.xinitrc"
# Skip if .xinitrc exists and already configured for xfce4
if [ -f "$XINITRC_PATH" ] && grep -q "exec startxfce4" "$XINITRC_PATH"; then
return 0
fi
# Create .xinitrc with xfce4 configuration
cat > "$XINITRC_PATH" <<EOF
#!/bin/sh
exec startxfce4
EOF
# Set ownership and permissions
chown chrona-live:chrona-live "$XINITRC_PATH"
chmod 755 "$XINITRC_PATH"
}
# Configure .xinitrc for mate
configure_xinitrc_for_mate() {
XINITRC_PATH="/home/chrona-live/.xinitrc"
# Skip if .xinitrc exists and already configured for mate
if [ -f "$XINITRC_PATH" ] && grep -q "dbus-launch --exit-with-session mate-session" "$XINITRC_PATH"; then
return 0
fi
# Create .xinitrc with mate configuration
cat > "$XINITRC_PATH" <<EOF
#!/bin/sh
# Launch D-Bus session for mate
dbus-launch --exit-with-session mate-session
EOF
# Set ownership and permissions
chown chrona-live:chrona-live "$XINITRC_PATH"
chmod 755 "$XINITRC_PATH"
}
start() {
ebegin "Starting session as chrona-live user"
# Set up udev if eudev package is installed
if check_pkg eudev; then
setup-devd udev
ret=$?
fi
# Configure Xwrapper to allow anybody to start X
if [ ! -f /etc/X11/Xwrapper.config ]; then
echo "allowed_users=anybody" > /etc/X11/Xwrapper.config
fi
# Start appropriate session based on installed packages
if check_pkg clxqt; then
# Start clxqt service if clxqt package is installed
rc-service clxqt start
ret=$?
elif check_pkg mate-desktop-environment; then
# Configure and start mate session
configure_xinitrc_for_mate
su - chrona-live -c "startx"
ret=$?
elif check_pkg xfce4; then
# Configure and start xfce4 session
configure_xinitrc_for_xfce
su - chrona-live -c "startx"
ret=$?
elif check_pkg cdesktop-jwm; then
# Configure and start cdesktop (jwm) session
configure_xinitrc_for_cdesktop_jwm
su - chrona-live -c "startx"
ret=$?
elif check_pkg cdesktop-icewm; then
# Configure and start cdesktop (icewm) session
configure_xinitrc_for_cdesktop_icewm
su - chrona-live -c "startx"
ret=$?
else
# No action if no relevant packages are installed
ret=0
fi
eend $ret
}
stop() {
ebegin "Stopping chrona-live session service"
# Perform session termination tasks
eend $?
}

View file

@ -0,0 +1,33 @@
# Maintainer: Şahan Yılmaz <sahan@chrona.org.tr>
pkgname=chrona-networkmanager-gtk
pkgver=1.0
pkgrel=2
pkgdesc="NetworkMamager GTK for Chrona Linux"
url="https://chrona.org.tr"
arch="all"
license="MIT"
depends="networkmanager networkmanager-wifi network-manager-applet wpa_supplicant"
replaces="networkmanager"
package() {
mkdir -p "$pkgdir"
mkdir -p "$pkgdir"/etc/NetworkManager
mkdir -p "$pkgdir"/etc/NetworkManager/conf.d
cat <<EOF > "$pkgdir"/etc/NetworkManager/NetworkManager.conf
[main]
dhcp=internal
plugins=ifupdown,keyfile
[ifupdown]
managed=true
[device]
wifi.scan-rand-mac-address=yes
wifi.backend=wpa_supplicant
EOF
cat <<EOF > "$pkgdir"/etc/NetworkManager/conf.d/any-user.conf
[main]
auth-polkit=false
EOF
}

33
main/menumaker/APKBUILD Normal file
View file

@ -0,0 +1,33 @@
# Maintainer: Avis Orsetti <avisorsetti@riseup.net>
# Contributor: Dominika Liberda <ja@sdomi.pl>
pkgname=menumaker
pkgver=0.99.14
pkgrel=1
pkgdesc="Heuristics-driven menu generator for Deskmenu, FluxBox, IceWM, OpenBox, WindowMaker and XFCE"
url="https://menumaker.sourceforge.net/"
arch="all"
license="BSD-2-Clause"
depends="python3"
options="!check" # No tests provided
source="https://downloads.sourceforge.net/menumaker/menumaker-$pkgver.tar.gz"
prepare() {
default_prepare
./configure --prefix=/usr --infodir=/usr/share/info
}
build() {
make
}
package() {
mkdir -p "$pkgdir"/usr/bin
make DESTDIR="$pkgdir" pkgdatadir=/usr/lib/menumaker install
make DESTDIR="$pkgdir" PYTHON_BIN="python3" pkgdatadir=/usr/lib/menumaker install-exec-local
rm -rf "$pkgdir"/usr/share/info
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/license
}
sha512sums="
81d44c1917d0fd4cd1c8b7cdd4ce12795fee7cc286959a7fc9dc6f84a096ea850a4348d98b6a7dce153c5d07fdb8b3aaf13f3476a9f34dd56646af3097d406d0 menumaker-0.99.14.tar.gz
"

95
main/netsurf/APKBUILD Normal file
View file

@ -0,0 +1,95 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: ScrumpyJack <scrumpyjack@st.ilet.to>
# Contributor: Miles Alan <m@milesalan.com>
# Maintainer: ScrumpyJack <scrumpyjack@st.ilet.to>
pkgname=netsurf
pkgver=3.11
pkgrel=0
pkgdesc="free, open source web browser"
url="http://www.netsurf-browser.org"
arch="all"
license="GPL-2.0-or-later"
makedepends="curl-dev openssl-dev doxygen flex bison libwebp-dev lcms2-dev
libmng-dev gperf gtk+3.0-dev libcurl libpng-dev libidn-dev
check-dev libharu-dev librsvg-dev libjpeg-turbo-dev vim
perl perl-html-parser sdl12-compat-dev expat-dev"
subpackages="
$pkgname-doc
$pkgname-framebuffer
$pkgname-framebuffer-doc
"
source="http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$pkgver.tar.gz
netsurf
non-coreutils-install-compatibility.patch"
builddir="$srcdir"/$pkgname-all-$pkgver
export CFLAGS="$CFLAGS -fcommon"
prepare() {
default_prepare
sed 's:-Werror::' -i "$builddir"/libsvgtiny/Makefile
}
build() {
make \
TARGET=gtk3 \
LIBDIR=lib \
INCLUDEDIR=include \
PREFIX=/usr
make \
TARGET=framebuffer \
LIBDIR=lib \
INCLUDEDIR=include \
PREFIX=/usr
}
package() {
make \
TARGET=gtk3 \
LIBDIR=lib \
INCLUDEDIR=include \
DESTDIR="$pkgdir" \
PREFIX=/usr \
install
install -Dm755 "$srcdir/netsurf" "$pkgdir/usr/bin/$pkgname"
install -Dm644 netsurf/docs/netsurf-gtk.1 -t "$pkgdir"/usr/share/man/man1
# Icon
install -Dm644 netsurf/frontends/gtk/res/netsurf.xpm \
"$pkgdir"/usr/share/pixmaps/netsurf.xpm
# Desktop file
install -Dm644 netsurf/frontends/gtk/res/netsurf-gtk.desktop \
"$pkgdir"/usr/share/applications/netsurf.desktop
# Run netsurf, not netsurf-gtk
sed \
-e 's:netsurf-gtk:netsurf:g' \
-e 's:netsurf.png:netsurf:g' \
-i "$pkgdir"/usr/share/applications/netsurf.desktop
}
framebuffer() {
pkgdesc="$pkgdesc (framebuffer)"
cd "$builddir"
make \
TARGET=framebuffer \
LIBDIR=lib \
INCLUDEDIR=include \
PREFIX=/usr \
DESTDIR="$subpkgdir" \
install
install -Dm755 netsurf/nsfb "$subpkgdir/usr/bin/netsurf-framebuffer"
install -Dm644 netsurf/docs/netsurf-fb.1 -t "$pkgdir"/usr/share/man/man1
}
sha512sums="
f931687e08976ca336762587cc1ac75e45518be62b19d1d31aac3063b92b9666f8a022ff3a183e80c89404ba8ff33458b26521130e96943043085a42291ee283 netsurf-all-3.11.tar.gz
4f6868f377abb1fbade92088bee9a319952c4cee82821ca5b3f892484e0d111f33045c8583f3d069e48af6f3f2fcad43c364daa0f5457b3b013542793ac10fcf netsurf
528a0d085afcf089789fc2e2aafa27e48c71f9eba1eeed65ba293ccb9c60187193d8e36337ff56b9de8221821d6cb2a4146e175edb383f7a6ef660771c8a1e28 non-coreutils-install-compatibility.patch
"

7
main/netsurf/netsurf Normal file
View file

@ -0,0 +1,7 @@
#!/bin/sh
shortname=$(echo $LANG | cut -b1-2)
if [ -d /usr/share/netsurf/$shortname ]; then
/usr/bin/netsurf-gtk3 "$@"
else
LANG=en /usr/bin/netsurf-gtk3 "$@"
fi

View file

@ -0,0 +1,27 @@
Alpine / busybox's install doesn't have coreutils' -T option.
--- a/netsurf/frontends/framebuffer/Makefile
+++ b/netsurf/frontends/framebuffer/Makefile
@@ -200,10 +200,10 @@ NETSURF_FRAMEBUFFER_RESOURCE_LIST := adblock.css credits.html \
install-framebuffer:
$(VQ)echo " INSTALL: $(DESTDIR)/$(PREFIX)"
$(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)
- $(Q)$(INSTALL) -T $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb
+ $(Q)$(INSTALL) $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb
$(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)
$(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done
- $(Q)$(INSTALL) -m 644 -T $(MESSAGES_TARGET)/en/Messages $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages
+ $(Q)$(INSTALL) -m 644 $(MESSAGES_TARGET)/en/Messages $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages
# ----------------------------------------------------------------------------
# Package target
--- a/buildsystem/makefiles/Makefile.tools
+++ b/buildsystem/makefiles/Makefile.tools
@@ -285,7 +285,7 @@ GENHTML ?= genhtml
BUILD_CXX ?= c++
-INSTALL ?= install -C
+INSTALL ?= install
LCOV ?= lcov

39
main/qastools/APKBUILD Normal file
View file

@ -0,0 +1,39 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qastools
pkgver=0.23.0
pkgrel=0
pkgdesc="ALSA mixer and utilities for Qt"
url="https://gitlab.com/sebholt/qastools"
arch="all"
license="MIT"
depends="bash"
makedepends="alsa-lib-dev cmake eudev-dev qt5-qtbase-dev qt5-qtsvg-dev
qt5-qttools-dev"
subpackages="$pkgname-doc $pkgname-lang"
langdir="/usr/share/qastools/l10n"
source="https://gitlab.com/sebholt/qastools/-/archive/v$pkgver/qastools-v$pkgver.tar.bz2"
builddir="$srcdir/$pkgname-v$pkgver"
build() {
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
${CMAKE_CROSSOPTS} .
make
}
check() {
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
make DESTDIR="$pkgdir" install
}
sha512sums="543e2f6407ba36f7cb0ce811ee1ceac14652960c58636671fabeaca25d154db263b654d07795ec2a81232b1e177469cbb45617099d40af47d6ab1148443582fb qastools-v0.23.0.tar.bz2"

34
main/volumeicon/APKBUILD Normal file
View file

@ -0,0 +1,34 @@
# Contributor: ScrumpyJack <scrumpyjack@st.ilet.to>
# Maintainer: ScrumpyJack <scrumpyjack@st.ilet.to>
pkgname=volumeicon
pkgver=0.5.1
pkgrel=1
pkgdesc="Volume Icon is a lightweight volume control that sits in your systray"
url="http://softwarebakery.com/maato/volumeicon.html"
arch="all"
license="GPL-3.0-only"
makedepends="gtk+3.0-dev intltool alsa-lib-dev libnotify-dev
automake autoconf libtool"
subpackages="$pkgname-lang"
source="$pkgname-$pkgver.tar.gz::https://github.com/Maato/volumeicon/archive/$pkgver.tar.gz"
prepare() {
default_prepare
./autogen.sh
}
build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--enable-notify
make
}
package() {
make DESTDIR="$pkgdir" install
}
sha512sums="c158a1a1bdf84e91fa039defc4c2a7fefa53f9a3ffc48b92388144fee6f7400f2e20618d3527d5c26f694d2280b1035fa4f91080ffe3b4baa5d229130d0c13b7 volumeicon-0.5.1.tar.gz"

View file

@ -0,0 +1,77 @@
# Maintainer: Şahan Yılmaz <sahan@chronalinux.org.tr>
pkgname=cdesktop
pkgver=1.4
pkgrel=0
pkgdesc="Minimal Icewm Masaüstü Ortamı"
url="https://chronalinux.net.tr"
arch="all"
license="MIT"
depends="
icewm
spacefm
xorg-server
xf86-input-libinput
xinit
eudev
volumeicon
alsa-utils
alsaconf
mesa-dri-gallium
chrona-networkmanager-gtk
netsurf
st
font-dejavu
adwaita-icon-theme
dbus
dbus-x11
xterm
mesa-gles
"
# Ek yapılandırma dosyaları eklendi
source="
mainmenu.svg
preferences
startup
cdesktop-wallpaper
chrona25-04.png
"
build() {
return 0
}
package() {
mkdir -p "$pkgdir"/etc/skel/
mkdir -p "$pkgdir"/etc/skel/.config/cdesktop/
mkdir -p "$pkgdir"/etc/skel/.config/icewm/
mkdir -p "$pkgdir"/usr/share/cdesktop/
mkdir -p "$pkgdir"/usr/share/icons/chrona/
mkdir -p "$pkgdir"/usr/share/applications/
mkdir -p "$pkgdir"/usr/share/cdesktop/wallpapers
install -Dm755 startup "$pkgdir"/etc/skel/.config/icewm/startup
install -Dm755 preferences "$pkgdir"/etc/skel/.config/icewm/preferences
install -Dm644 chrona25-04.png "$pkgdir"/usr/share/cdesktop/wallpapers/chrona25-04.png
install -Dm644 mainmenu.svg "$pkgdir"/usr/share/icons/chrona/mainmenu.svg
install -Dm755 cdesktop-wallpaper "$pkgdir"/etc/skel/.config/cdesktop/cdesktop-wallpaper
cat >"$pkgdir"/usr/share/applications/cdesktop.desktop<<EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=cdesktop-menu
Comment=Main Menu Desktop Application
Exec=
Icon=/usr/share/icons/chrona/mainmenu.svg
Terminal=false
Categories=Utility;
EOF
}
sha512sums="
f3e95114f516671775d3f6a314ab5730b7068c44aecf3818dbf80c081ead26b12de06cdff41f74332a49c9961e575a57cb9f8c6c4e0b4fcdc32fb3b01f97f443 startup
a4cf9ec771d6b45f44f5281ebe4c16d10c72dc3ebd08edc3c0bb1932762ea56028285bb2e5130df7fbdeba1d4085b9486600f102359c803925908e2ea98306c1 mainmenu.svg
8bbf2565d4e6c2f743a23e14331db0e7e3ec22e51281baf7d056eac53425719850d17c5ac4f32d785bd685e7b9f93b60bb79b592a2c0714af5aaa74af2b0a942 chrona25-04.png
6e18cfe8179dfae345f2e11988728701610a61205dd086f483b9dba1264f141d5f0e4f8933bce576fadf667cef17ce38d8b29b296b9a4c3f95aa2886d13d7e7f cdesktop-wallpaper
79d80481e0c5029d0a305a61a48e59449f74929cf77e2ac29a1263970652d2cb8ad7a6e9b6a1c375f5fe13666d31779d16500cd927543157b8f7039da2532689 preferences
"

View file

@ -0,0 +1,9 @@
#!/bin/sh
FLAGFILE="$HOME/.cache/spacefm_wallpaper_set"
if [ ! -f "$FLAGFILE" ]; then
spacefm --set-wallpaper /usr/share/cdesktop/wallpapers/chrona25-04.png
touch "$FLAGFILE"
fi
exit 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 124 KiB

View file

@ -0,0 +1,52 @@
# ~/.icewm/preferences - TAM YAPILANDIRMA
# ==================================================
# ÇEKİRDEK AYARLAR
#
WorkspaceNames=" 1 " # Tek çalışma alanı
QuickSwitch=0 # Pencere geçiş efektleri kapalı
FocusMode=2 # Sıkı odak yönetimi (CLICKTOFOCUS)
HonorOrigin=1 # Pencere pozisyonunu koru
EdgeResistance=200 # Ekran kenarı direnci
# ==================================================
# PERFORMANS OPTİMİZASYONU
#
UseComposite=0 # Compositing kapalı
ShowBlend=0 # Animasyon yok
ShowSplash=0 # Açılış ekranı kapalı
TaskBarClockLeds=0 # Saat LED efekti yok
TaskBarShowAPM=0 # Pil göstergesi kapalı
TaskBarShowCPUStatus=0 # CPU göstergesi kapalı
TaskBarShowMailboxStatus=0 # Posta bildirimi kapalı
TaskBarShowWindowListMenu=0 # Pencere listesi menüsü kapalı
# ==================================================
# MODERN GÖRÜNÜM
#
DesktopBackgroundImage="/usr/share/cdesktop/wallpapers/chrona25-04.png" # Arka plan resmi
DesktopBackgroundScaled=1 # Resmi ekrana sığdır
# ==================================================
# GÖREV ÇUBUĞU ve SİSTEM ÇEKMECESİ
#
TaskBarShowTray=1 # Sistem çekmecesi aktif
TaskBarShowShowDesktopButton=1 # Masaüstünü göster butonu
TaskBarButtonless=0 # Görev çubuğunda uygulama butonları
TaskBarShowWorkspaces=0 # Çalışma alanı düğmeleri kapalı
NotificationArea=1 # Bildirim alanı aktif
TrayNotifyd=1 # Sistem bildirimleri açık
# ==================================================
# PENCERE YÖNETİMİ
#
OperateOnScreen=1 # Pencereleri ekran içinde tut
SnapMove=1 # Pencere kenetleme aktif
SnapResize=1 # Boyutlandırma kenetleme
ShowAllWindows=1 # Tüm pencereleri göster
# ==================================================
# KLASÖR ve UYGULAMA YOLLARI
#
PathApplications="/usr/share/applications:/usr/local/share/applications"
PathIcons="/usr/share/icons:/usr/share/pixmaps"

View file

@ -0,0 +1,6 @@
#!/bin/sh
~/.config/cdesktop/cdesktop-wallpaper &
spacefm --desktop &
volumeicon &
nm-applet

View file

@ -0,0 +1,33 @@
# Maintainer: Şahan Yılmaz <sahan@chrona.org.tr>
pkgname=chrona-networkmanager-qt
pkgver=1.0
pkgrel=2
pkgdesc="NetworkMamager Qt for Chrona Linux"
url="https://chrona.org.tr"
arch="all"
license="MIT"
depends="networkmanager networkmanager-wifi nm-tray wpa_supplicant"
replaces="networkmanager"
package() {
mkdir -p "$pkgdir"
mkdir -p "$pkgdir"/etc/NetworkManager
mkdir -p "$pkgdir"/etc/NetworkManager/conf.d
cat <<EOF > "$pkgdir"/etc/NetworkManager/NetworkManager.conf
[main]
dhcp=internal
plugins=ifupdown,keyfile
[ifupdown]
managed=true
[device]
wifi.scan-rand-mac-address=yes
wifi.backend=wpa_supplicant
EOF
cat <<EOF > "$pkgdir"/etc/NetworkManager/conf.d/any-user.conf
[main]
auth-polkit=false
EOF
}

59
test/clxqt/APKBUILD Normal file
View file

@ -0,0 +1,59 @@
# Maintainer: Şahan Yılmaz <sahan@chrona.org.tr>
pkgname=clxqt
pkgver=1.4
pkgrel=0
pkgdesc="Lxqt Desktop for Chrona Linux"
url="https://chrona.org.tr"
arch="noarch !armhf !s390x"
license="MIT"
subpackages="clxqt-openrc:openrc clxqt-full:full clxqt-themes:theme"
depends="
xorg-server xf86-input-libinput clxqt-themes clxqt-openrc xinit eudev udev-init-scripts
udev-init-scripts-openrc mesa-dri-gallium
libqtxdg libsysstat liblxqt libfm-qt lxqt-themes
libdbusmenu-lxqt lxqt-about lxqt-admin lxqt-config
lxqt-globalkeys lxqt-powermanagement chrona-lxqt-session
lxqt-panel lxqt-runner chrona-pcmanfm-qt xscreensaver
lxqt-qtplugin lxqt-notificationd lxqt-archiver
lxqt-policykit lxqt-openssh-askpass lxqt-sudo
pm-utils qtermwidget qterminal openbox xdg-utils
lximage-qt pavucontrol-qt arandr obconf-qt screengrab lxdm
elogind polkit-elogind gvfs udisks2 breeze oxygen
font-dejavu dbus dbus-x11 acpid upower pulseaudio pulseaudio-alsa
chrona-nm-gtk
"
package() {
mkdir -p "$pkgdir"
}
theme() {
replaces="lxqt-themes pcmanfm-qt"
source="chrona.tar.gz chrona-25-03.png"
mkdir -p "$subpkgdir"
mkdir -p "$subpkgdir"/usr/share/lxqt/themes
mkdir -p "$subpkgdir"/usr/share/lxqt/wallpapers
tar -xzf chrona.tar.gz -C "$subpkgdir"/usr/share/lxqt/themes/
install -Dm644 chrona-25-03.png "$subpkgdir"/usr/share/lxqt/wallpapers/chrona-25-03.png
sha512sums="
b4a06a22786c49822d105880755b8599a16dc1abb2ed332ff9dcfeb00e6125dddecc200a84d99009784889df380207d52e11d5380e78881835101c6b66325542 chrona.tar.gz
8bbf2565d4e6c2f743a23e14331db0e7e3ec22e51281baf7d056eac53425719850d17c5ac4f32d785bd685e7b9f93b60bb79b592a2c0714af5aaa74af2b0a942 chrona-25-03.png
"
}
openrc() {
replaces="openrc"
mkdir -p "$subpkgdir"
source="clxqt.initd"
install -Dm755 clxqt.initd "$subpkgdir"/etc/init.d/clxqt
sha512sums="623a732334015c248b508fedf17100cc50d037276c016c104d29d67329fc846ccff84a892c2059ff000a6c3a562173c1cfabd1d66cb902b026c5f86a3253439d clxqt.initd
"
}
full() {
depends="clxqt mpv xpdf falkon libreoffice claws-mail xpdf"
mkdir -p "$subpkgdir"
}

BIN
test/clxqt/chrona-25-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
test/clxqt/chrona.tar.gz Normal file

Binary file not shown.

94
test/clxqt/clxqt.initd Normal file
View file

@ -0,0 +1,94 @@
#!/sbin/openrc-run
description="Chrona Masaüstü Oturumu"
# Paketin kurulu olup olmadığını kontrol eder
check_pkg() {
apk info "$1" >/dev/null 2>&1
}
# NetworkManager'ı yapılandırır (opsiyonel)
configure_networkmanager() {
if check_pkg chrona-nm-gtk; then
# NetworkManager zaten eklendiğinden emin olmak için kontrol
if ! rc-status | grep -q networkmanager; then
rc-update add networkmanager default
rc-service networkmanager start
fi
fi
}
start_pre() {
# Gerekli hizmetlerin başlatılması
setup-devd udev
configure_networkmanager
ebegin "X11 ortamı hazırlanıyor"
# X11 dizinini oluştur
if ! mkdir -p /etc/X11; then
eend 1 "X11 dizini oluşturulamadı"
return 1
fi
# Xwrapper yapılandırmasını ayarla
XWRAPPER_CONFIG="/etc/X11/Xwrapper.config"
if ! echo "allowed_users=anybody" > "$XWRAPPER_CONFIG"; then
eend 1 "Xwrapper yapılandırması başarısız"
return 1
fi
# Kullanıcı .xinitrc dosyalarını oluştur
for user_dir in /etc/skel /home/chrona /root; do
xinitrc="$user_dir/.xinitrc"
if [ -f "$xinitrc" ]; then
continue
fi
# Dosyayı yaz
if ! echo "exec startlxqt" > "$xinitrc"; then
ewarn "$xinitrc oluşturulamadı"
continue
fi
# Dosya izinlerini ayarla
chmod 755 "$xinitrc"
einfo "$xinitrc oluşturuldu"
done
eend 0
}
start() {
ebegin "Grafik oturumu başlatılıyor"
# Gerekli kullanıcı kontrolü
if ! id -u chrona >/dev/null 2>&1; then
eend 1 "Kullanıcı 'chrona' bulunamadı"
return 1
fi
# Başlangıç senaryoları
if check_pkg chrona-live-boot; then
# X sunucusunu başlat
su - chrona -c "startx" 2>/var/log/chrona-startx.log &
eend 0
elif check_pkg lxdm; then
# LXDM'yi başlat
if ! rc-service lxdm start; then
eend 1 "LXDM başlatılamadı"
return 1
fi
eend 0
else
eend 1 "Gerekli paketler eksik (chrona-live-boot veya lxdm)"
return 1
fi
}
stop() {
ebegin "Servisler durduruluyor"
eend 0
}

39
test/nm-tray/APKBUILD Normal file
View file

@ -0,0 +1,39 @@
# Contributor: cristian_ci <cristian_ci@protonmail.com>
# Maintainer: cristian_ci <cristian_ci@protonmail.com>
pkgname=nm-tray
pkgver=0.5.0
pkgrel=0
pkgdesc="Simple NetworkManager front end based on Qt"
url="https://github.com/palinek/nm-tray"
arch="all"
license="GPL-2.0-or-later"
makedepends="
cmake
networkmanager-qt5-dev
qt5-qtbase-dev
qt5-qttools-dev
samurai
"
subpackages="$pkgname-lang"
source="$pkgname-$pkgver.tar.gz::https://github.com/palinek/nm-tray/archive/refs/tags/$pkgver.tar.gz"
options="!check" # no test suite
build() {
cmake -B build -G Ninja \
-DCMAKE_INSTALL_PREFIX=/usr \
-DNM_TRAY_XDG_AUTOSTART_DIR=/etc/xdg/autostart
cmake --build build
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
lang() {
install_if="lang $pkgname=$pkgver-r$pkgrel"
amove usr/share/$pkgname/*.qm
}
sha512sums="
ba118f7fd07a60af5ed6b7b53cf771f339c89f9bef02aeb2f59bfbddd3e896bdc31aa506437e33cb8fe2ef921c595b76527d61cefd202e9e1f5197762b69ab51 nm-tray-0.5.0.tar.gz
"