Skip to content

Commit 0373e81

Browse files
committed
Implement reset for Fedora
[GitHub #117 #111]
1 parent 5a225c4 commit 0373e81

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

include/source.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Contributors : Shengwei Chen <[email protected]>
77
* |
88
* Created On : <2023-08-29>
9-
* Last Modified : <2024-10-09>
9+
* Last Modified : <2024-11-04>
1010
*
1111
* 通用镜像站与换源信息
1212
* ------------------------------------------------------------*/
@@ -192,8 +192,10 @@ typedef struct TargetInfo_t {
192192

193193

194194
#define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL
195-
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
195+
#define def_target_inner_sr(t) NULL, t##_setsrc, t##_resetsrc, NULL
196196
#define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat
197+
#define def_target_inner_srf(t) NULL, t##_setsrc, t##_resetsrc, t##_feat
198+
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
197199
#define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL
198200
#define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat
199201
#define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat
@@ -202,9 +204,11 @@ typedef struct TargetInfo_t {
202204

203205
// 大部分target还不支持reset,所以暂时先默认设置为NULL来过渡
204206
#define def_target(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
205-
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
207+
#define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}
208+
#define def_target_sr(t) TargetInfo t##_target = {def_target_inner_sr(t),def_target_sourcesn(t)}
206209
#define def_target_sf(t) TargetInfo t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)}
210+
#define def_target_srf(t) TargetInfo t##_target = {def_target_inner_srf(t),def_target_sourcesn(t)}
211+
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
207212
#define def_target_gsr(t) TargetInfo t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)}
208213
#define def_target_gsf(t) TargetInfo t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)}
209214
#define def_target_gsrf(t) TargetInfo t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)}
210-
#define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}

src/recipe/os/YUM/Fedora-Linux.c

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
* SPDX-License-Identifier: GPL-3.0-or-later
33
* -------------------------------------------------------------
44
* File Authors : Heng Guo <[email protected]>
5-
* Contributors : Aoran Zeng <[email protected]>
65
* | happy game <[email protected]>
6+
* Contributors : Aoran Zeng <[email protected]>
7+
* |
78
* Created On : <2023-09-26>
89
* Last Modified : <2024-11-04>
910
*
@@ -15,7 +16,7 @@
1516
*/
1617
static SourceInfo
1718
os_fedora_sources[] = {
18-
{&Upstream, "http://download.example/pub/fedora/linux"},
19+
{&Upstream, "http://download.example/pub/fedora/linux"},
1920
{&Ali, "https://mirrors.aliyun.com/fedora"},
2021
{&Bfsu, "https://mirrors.bfsu.edu.cn/fedora"},
2122
{&Ustc, "https://mirrors.ustc.edu.cn/fedora"},
@@ -36,6 +37,8 @@ def_sources_n(os_fedora);
3637
void
3738
os_fedora_setsrc (char *option)
3839
{
40+
char *setsrc_type = xy_streql (option, SetsrcType_Reset) ? SetsrcType_Reset : SetsrcType_Auto;
41+
3942
chsrc_ensure_root ();
4043

4144
chsrc_yield_source_and_confirm (os_fedora);
@@ -45,16 +48,17 @@ os_fedora_setsrc (char *option)
4548
chsrc_backup ("/etc/yum.repos.d/fedora.repo");
4649
chsrc_backup ("/etc/yum.repos.d/fedora-updates.repo");
4750

48-
// 取消注释 baseurl
51+
// 取消对 baseurl 的注释
4952
char* cmd = xy_strjoin (5, "sed ",
5053
"-i 's|^#baseurl=|baseurl=",
5154
"|g' ",
5255
"/etc/yum.repos.d/fedora.repo ",
5356
"/etc/yum.repos.d/fedora-updates.repo");
5457
chsrc_run (cmd, RunOpt_Default);
5558

56-
// fedora的换源涉及 /etc/yum.repos.d/fedora.repo和 /etc/yum.repos.d/fedora-updates.repo
57-
// 需要替换 baseurl=source.url/releases/... 和 baseurl=source.url/releases/...
59+
// 替换
60+
// (1) baseurl=<<URL>>/releases/...
61+
// (2) baseurl=<<URL>>/updates/...
5862
cmd = xy_strjoin (7, "sed ",
5963
"-i -E 's!^baseurl=.*?/(releases|updates)/!baseurl=",
6064
source.url,
@@ -69,25 +73,31 @@ os_fedora_setsrc (char *option)
6973
chsrc_log2 ("(2) /etc/yum.repos.d/fedora-updates.repo");
7074

7175
chsrc_run ("dnf makecache", RunOpt_No_Last_New_Line);
72-
chsrc_conclude (&source, SetsrcType_Auto);
76+
77+
chsrc_conclude (&source, setsrc_type);
7378
}
7479

7580

81+
void
82+
os_fedora_resetsrc (char *option)
83+
{
84+
os_fedora_setsrc (SetsrcType_Reset);
85+
}
86+
7687

7788
FeatInfo
7889
os_fedora_feat (char *option)
7990
{
8091
FeatInfo f = {0};
8192

8293
f.can_get = false;
83-
f.can_reset = false;
94+
f.can_reset = true;
8495

8596
f.cap_locally = CanNot;
86-
f.can_english = true;
97+
f.can_english = false;
8798
f.can_user_define = true;
8899

89100
return f;
90101
}
91102

92103
def_target_sf(os_fedora);
93-

0 commit comments

Comments
 (0)