Implement reset for Fedora

[GitHub #117 #111]
This commit is contained in:
Aoran Zeng 2024-11-04 18:57:08 +08:00
parent 5a225c4e12
commit 0373e8149e
No known key found for this signature in database
GPG Key ID: 8F8BA8488E10ED98
2 changed files with 27 additions and 13 deletions

View File

@ -6,7 +6,7 @@
* Contributors : Shengwei Chen <414685209@qq.com> * Contributors : Shengwei Chen <414685209@qq.com>
* | * |
* Created On : <2023-08-29> * Created On : <2023-08-29>
* Last Modified : <2024-10-09> * Last Modified : <2024-11-04>
* *
* *
* ------------------------------------------------------------*/ * ------------------------------------------------------------*/
@ -192,8 +192,10 @@ typedef struct TargetInfo_t {
#define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL #define def_target_inner_s(t) NULL, t##_setsrc, NULL, NULL
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL #define def_target_inner_sr(t) NULL, t##_setsrc, t##_resetsrc, NULL
#define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat #define def_target_inner_sf(t) NULL, t##_setsrc, NULL, t##_feat
#define def_target_inner_srf(t) NULL, t##_setsrc, t##_resetsrc, t##_feat
#define def_target_inner_gs(t) t##_getsrc, t##_setsrc, NULL, NULL
#define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL #define def_target_inner_gsr(t) t##_getsrc, t##_setsrc, t##_resetsrc, NULL
#define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat #define def_target_inner_gsf(t) t##_getsrc, t##_setsrc, NULL, t##_feat
#define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat #define def_target_inner_gsrf(t) t##_getsrc, t##_setsrc, t##_resetsrc, t##_feat
@ -202,9 +204,11 @@ typedef struct TargetInfo_t {
// 大部分target还不支持reset所以暂时先默认设置为NULL来过渡 // 大部分target还不支持reset所以暂时先默认设置为NULL来过渡
#define def_target(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)} #define def_target(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)} #define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}
#define def_target_sr(t) TargetInfo t##_target = {def_target_inner_sr(t),def_target_sourcesn(t)}
#define def_target_sf(t) TargetInfo t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)} #define def_target_sf(t) TargetInfo t##_target = {def_target_inner_sf(t),def_target_sourcesn(t)}
#define def_target_srf(t) TargetInfo t##_target = {def_target_inner_srf(t),def_target_sourcesn(t)}
#define def_target_gs(t) TargetInfo t##_target = {def_target_inner_gs(t),def_target_sourcesn(t)}
#define def_target_gsr(t) TargetInfo t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)} #define def_target_gsr(t) TargetInfo t##_target = {def_target_inner_gsr(t),def_target_sourcesn(t)}
#define def_target_gsf(t) TargetInfo t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)} #define def_target_gsf(t) TargetInfo t##_target = {def_target_inner_gsf(t),def_target_sourcesn(t)}
#define def_target_gsrf(t) TargetInfo t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)} #define def_target_gsrf(t) TargetInfo t##_target = {def_target_inner_gsrf(t),def_target_sourcesn(t)}
#define def_target_s(t) TargetInfo t##_target = {def_target_inner_s(t),def_target_sourcesn(t)}

View File

@ -2,8 +2,9 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* ------------------------------------------------------------- * -------------------------------------------------------------
* File Authors : Heng Guo <2085471348@qq.com> * File Authors : Heng Guo <2085471348@qq.com>
* Contributors : Aoran Zeng <ccmywish@qq.com>
* | happy game <happygame1024@gmail.com> * | happy game <happygame1024@gmail.com>
* Contributors : Aoran Zeng <ccmywish@qq.com>
* |
* Created On : <2023-09-26> * Created On : <2023-09-26>
* Last Modified : <2024-11-04> * Last Modified : <2024-11-04>
* *
@ -36,6 +37,8 @@ def_sources_n(os_fedora);
void void
os_fedora_setsrc (char *option) os_fedora_setsrc (char *option)
{ {
char *setsrc_type = xy_streql (option, SetsrcType_Reset) ? SetsrcType_Reset : SetsrcType_Auto;
chsrc_ensure_root (); chsrc_ensure_root ();
chsrc_yield_source_and_confirm (os_fedora); chsrc_yield_source_and_confirm (os_fedora);
@ -45,7 +48,7 @@ os_fedora_setsrc (char *option)
chsrc_backup ("/etc/yum.repos.d/fedora.repo"); chsrc_backup ("/etc/yum.repos.d/fedora.repo");
chsrc_backup ("/etc/yum.repos.d/fedora-updates.repo"); chsrc_backup ("/etc/yum.repos.d/fedora-updates.repo");
// 取消注释 baseurl // 取消对 baseurl 的注释
char* cmd = xy_strjoin (5, "sed ", char* cmd = xy_strjoin (5, "sed ",
"-i 's|^#baseurl=|baseurl=", "-i 's|^#baseurl=|baseurl=",
"|g' ", "|g' ",
@ -53,8 +56,9 @@ os_fedora_setsrc (char *option)
"/etc/yum.repos.d/fedora-updates.repo"); "/etc/yum.repos.d/fedora-updates.repo");
chsrc_run (cmd, RunOpt_Default); chsrc_run (cmd, RunOpt_Default);
// fedora的换源涉及 /etc/yum.repos.d/fedora.repo和 /etc/yum.repos.d/fedora-updates.repo // 替换
// 需要替换 baseurl=source.url/releases/... 和 baseurl=source.url/releases/... // (1) baseurl=<<URL>>/releases/...
// (2) baseurl=<<URL>>/updates/...
cmd = xy_strjoin (7, "sed ", cmd = xy_strjoin (7, "sed ",
"-i -E 's!^baseurl=.*?/(releases|updates)/!baseurl=", "-i -E 's!^baseurl=.*?/(releases|updates)/!baseurl=",
source.url, source.url,
@ -69,10 +73,17 @@ os_fedora_setsrc (char *option)
chsrc_log2 ("(2) /etc/yum.repos.d/fedora-updates.repo"); chsrc_log2 ("(2) /etc/yum.repos.d/fedora-updates.repo");
chsrc_run ("dnf makecache", RunOpt_No_Last_New_Line); chsrc_run ("dnf makecache", RunOpt_No_Last_New_Line);
chsrc_conclude (&source, SetsrcType_Auto);
chsrc_conclude (&source, setsrc_type);
} }
void
os_fedora_resetsrc (char *option)
{
os_fedora_setsrc (SetsrcType_Reset);
}
FeatInfo FeatInfo
os_fedora_feat (char *option) os_fedora_feat (char *option)
@ -80,14 +91,13 @@ os_fedora_feat (char *option)
FeatInfo f = {0}; FeatInfo f = {0};
f.can_get = false; f.can_get = false;
f.can_reset = false; f.can_reset = true;
f.cap_locally = CanNot; f.cap_locally = CanNot;
f.can_english = true; f.can_english = false;
f.can_user_define = true; f.can_user_define = true;
return f; return f;
} }
def_target_sf(os_fedora); def_target_sf(os_fedora);