diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2022-03-12 22:44:37 +0100 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2022-03-12 22:46:07 +0100 |
commit | 403cb96f3a314d0e46e9c4d338e0a3b98e250ddd (patch) | |
tree | 01391196d33d3f1010bf24e3cf535b663a512c0c | |
parent | ce70e34476a4a7eb23b4b7585a1a3277e6fcb38a (diff) | |
download | rockbox-403cb96f3a314d0e46e9c4d338e0a3b98e250ddd.tar.gz rockbox-403cb96f3a314d0e46e9c4d338e0a3b98e250ddd.zip |
rbutil: Fix installing fonts / manual for development builds.
For development builds we provide a download URL, but use the daily
build files. Those require the version of the daily build to be set when
expanding the URL string.
Change-Id: Ie6dcf38f7e86527217edc01ee11a20758a178622
-rw-r--r-- | utils/rbutilqt/base/playerbuildinfo.cpp | 38 | ||||
-rw-r--r-- | utils/rbutilqt/gui/selectiveinstallwidget.cpp | 6 | ||||
-rw-r--r-- | utils/rbutilqt/test/test-playerbuildinfo.cpp | 23 |
3 files changed, 48 insertions, 19 deletions
diff --git a/utils/rbutilqt/base/playerbuildinfo.cpp b/utils/rbutilqt/base/playerbuildinfo.cpp index f118a9fd7a..aba377eafc 100644 --- a/utils/rbutilqt/base/playerbuildinfo.cpp +++ b/utils/rbutilqt/base/playerbuildinfo.cpp | |||
@@ -113,40 +113,46 @@ QVariant PlayerBuildInfo::value(BuildInfo item, BuildType type) | |||
113 | // For build info we don't use that. | 113 | // For build info we don't use that. |
114 | QString target = RbSettings::value(RbSettings::CurrentPlatform).toString().split('.').at(0); | 114 | QString target = RbSettings::value(RbSettings::CurrentPlatform).toString().split('.').at(0); |
115 | 115 | ||
116 | QString s = ServerInfoList[i].name; | 116 | QString serverinfo = ServerInfoList[i].name; |
117 | s.replace(":target:", target); | 117 | serverinfo.replace(":target:", target); |
118 | QString v; | 118 | QString buildtypename; |
119 | switch(type) { | 119 | switch(type) { |
120 | case TypeRelease: | 120 | case TypeRelease: |
121 | v = "release"; | 121 | buildtypename = "release"; |
122 | break; | 122 | break; |
123 | case TypeCandidate: | 123 | case TypeCandidate: |
124 | v = "release-candidate"; | 124 | buildtypename = "release-candidate"; |
125 | break; | 125 | break; |
126 | case TypeDaily: | 126 | case TypeDaily: |
127 | v = "daily"; | 127 | buildtypename = "daily"; |
128 | break; | 128 | break; |
129 | case TypeDevel: | 129 | case TypeDevel: |
130 | v = "development"; | 130 | buildtypename = "development"; |
131 | // manual and fonts don't exist for development builds. We do have an | ||
132 | // URL configured, but need to get the daily version instead. | ||
133 | if(item == BuildManualUrl || item == BuildFontUrl) { | ||
134 | LOG_INFO() << "falling back to daily build for this info value"; | ||
135 | buildtypename = "daily"; | ||
136 | } | ||
131 | break; | 137 | break; |
132 | } | 138 | } |
133 | 139 | ||
134 | QVariant result = QString(); | 140 | QVariant result = QString(); |
135 | if (!serverInfo) | 141 | if (!serverInfo) |
136 | return result; | 142 | return result; |
137 | QStringList version = serverInfo->value(v + "/" + target, "").toStringList(); | 143 | QStringList version = serverInfo->value(buildtypename + "/" + target, "").toStringList(); |
138 | s.replace(":build:", v); | 144 | serverinfo.replace(":build:", buildtypename); |
139 | s.replace(":version:", version.at(0)); | 145 | serverinfo.replace(":version:", version.at(0)); |
140 | 146 | ||
141 | // get value from server build-info | 147 | // get value from server build-info |
142 | // we need to get a version string, otherwise the data is invalid. | 148 | // we need to get a version string, otherwise the data is invalid. |
143 | // For invalid data return an empty string. | 149 | // For invalid data return an empty string. |
144 | if(version.at(0).isEmpty()) { | 150 | if(version.at(0).isEmpty()) { |
145 | LOG_INFO() << s << "(version invalid)"; | 151 | LOG_INFO() << serverinfo << "(version invalid)"; |
146 | return result; | 152 | return result; |
147 | } | 153 | } |
148 | if(!s.isEmpty()) | 154 | if(!serverinfo.isEmpty()) |
149 | result = serverInfo->value(s); | 155 | result = serverInfo->value(serverinfo); |
150 | 156 | ||
151 | // depending on the actual value we need more replacements. | 157 | // depending on the actual value we need more replacements. |
152 | switch(item) { | 158 | switch(item) { |
@@ -163,8 +169,8 @@ QVariant PlayerBuildInfo::value(BuildInfo item, BuildType type) | |||
163 | 169 | ||
164 | case BuildVoiceLangs: | 170 | case BuildVoiceLangs: |
165 | if (type == TypeDaily) | 171 | if (type == TypeDaily) |
166 | s = "voices/daily"; | 172 | serverinfo = "voices/daily"; |
167 | result = serverInfo->value(s); | 173 | result = serverInfo->value(serverinfo); |
168 | break; | 174 | break; |
169 | 175 | ||
170 | case BuildManualUrl: | 176 | case BuildManualUrl: |
@@ -188,7 +194,7 @@ QVariant PlayerBuildInfo::value(BuildInfo item, BuildType type) | |||
188 | .replace("%TARGET%", target) | 194 | .replace("%TARGET%", target) |
189 | .replace("%VERSION%", version.at(0)); | 195 | .replace("%VERSION%", version.at(0)); |
190 | 196 | ||
191 | LOG_INFO() << "B:" << s << result; | 197 | LOG_INFO() << "B:" << serverinfo << result; |
192 | return result; | 198 | return result; |
193 | } | 199 | } |
194 | 200 | ||
diff --git a/utils/rbutilqt/gui/selectiveinstallwidget.cpp b/utils/rbutilqt/gui/selectiveinstallwidget.cpp index b65f180521..4417a52a29 100644 --- a/utils/rbutilqt/gui/selectiveinstallwidget.cpp +++ b/utils/rbutilqt/gui/selectiveinstallwidget.cpp | |||
@@ -97,6 +97,12 @@ void SelectiveInstallWidget::selectedVersionChanged(int index) | |||
97 | ui.voiceCombobox->setEnabled(voice); | 97 | ui.voiceCombobox->setEnabled(voice); |
98 | ui.voiceLabel->setEnabled(voice); | 98 | ui.voiceLabel->setEnabled(voice); |
99 | ui.voiceCheckbox->setToolTip(voice ? "" : tr("Not available for the selected version")); | 99 | ui.voiceCheckbox->setToolTip(voice ? "" : tr("Not available for the selected version")); |
100 | QString fontsurl = PlayerBuildInfo::instance()->value( | ||
101 | PlayerBuildInfo::BuildFontUrl, m_buildtype).toString(); | ||
102 | ui.fontsCheckbox->setEnabled(!fontsurl.isEmpty()); | ||
103 | QString manualurl = PlayerBuildInfo::instance()->value( | ||
104 | PlayerBuildInfo::BuildManualUrl, m_buildtype).toString(); | ||
105 | ui.manualCheckbox->setEnabled(!manualurl.isEmpty()); | ||
100 | 106 | ||
101 | updateVoiceLangs(); | 107 | updateVoiceLangs(); |
102 | } | 108 | } |
diff --git a/utils/rbutilqt/test/test-playerbuildinfo.cpp b/utils/rbutilqt/test/test-playerbuildinfo.cpp index 4dd5773576..de81b36a30 100644 --- a/utils/rbutilqt/test/test-playerbuildinfo.cpp +++ b/utils/rbutilqt/test/test-playerbuildinfo.cpp | |||
@@ -47,30 +47,42 @@ const char* testinfo = | |||
47 | "iriverh100 = 3.11.2, http://dl.rockbox.org/release/3.11.2/rockbox-iriverh100-3.11.2.zip\n" | 47 | "iriverh100 = 3.11.2, http://dl.rockbox.org/release/3.11.2/rockbox-iriverh100-3.11.2.zip\n" |
48 | "iriverh120 = 3.3\n" | 48 | "iriverh120 = 3.3\n" |
49 | "iriverh300 = \n" | 49 | "iriverh300 = \n" |
50 | "\n" | ||
50 | "[release-candidate]\n" | 51 | "[release-candidate]\n" |
51 | "build_url=https://buildurl/rc/%VERSION%/rockbox-%TARGET%-%VERSION%.zip\n" | 52 | "build_url=https://buildurl/rc/%VERSION%/rockbox-%TARGET%-%VERSION%.zip\n" |
52 | "gigabeatfx=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-gigabeatfx.zip\n" | 53 | "gigabeatfx=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-gigabeatfx.zip\n" |
53 | "archosfmrecorder=f9dce96\n" | 54 | "archosfmrecorder=f9dce96\n" |
54 | "archosrecorder = f9dce96\n" | 55 | "archosrecorder = f9dce96\n" |
55 | "iaudiox5=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-iaudiox5.zip\n" | 56 | "iaudiox5=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-iaudiox5.zip\n" |
57 | "\n" | ||
56 | "[development]\n" | 58 | "[development]\n" |
57 | "build_url=https://buildurl/dev/rockbox-%TARGET%.zip\n" | 59 | "build_url=https://buildurl/dev/rockbox-%TARGET%.zip\n" |
60 | "font_url=https://buildurl/daily/fonts/rockbox-fonts-%VERSION%.zip\n" | ||
61 | "manual_url=https://buildurl/daily/manual/rockbox-%TARGET%-%VERSION%%FORMAT%\n" | ||
58 | "iriverh100 = be1be79\n" | 62 | "iriverh100 = be1be79\n" |
59 | "iaudiox5 = be1be76\n" | 63 | "iaudiox5 = be1be76\n" |
64 | "\n" | ||
60 | "[dailies]\n" | 65 | "[dailies]\n" |
61 | "timestamp = 20201113\n" | 66 | "timestamp = 20201113\n" |
62 | "rev = 362f7a3\n" | 67 | "rev = 362f7a3\n" |
68 | "\n" | ||
63 | "[daily]\n" | 69 | "[daily]\n" |
64 | "build_url=https://buildurl/daily/rockbox-%TARGET%-%VERSION%.zip\n" | 70 | "build_url=https://buildurl/daily/rockbox-%TARGET%-%VERSION%.zip\n" |
65 | "iriverh100 = f9dce00\n" | 71 | "font_url=https://buildurl/daily/fonts/rockbox-fonts-%VERSION%.zip\n" |
72 | "manual_url=https://buildurl/daily/manual/rockbox-%TARGET%-%VERSION%%FORMAT%\n" | ||
73 | "iriverh100 = 20201114\n" | ||
74 | "iriverh120 = 20201115\n" | ||
75 | "\n" | ||
66 | "[bleeding]\n" | 76 | "[bleeding]\n" |
67 | "timestamp = 20201114T105723Z\n" | 77 | "timestamp = 20201114T105723Z\n" |
68 | "rev = be1be79\n" | 78 | "rev = be1be79\n" |
79 | "\n" | ||
69 | "[status]\n" | 80 | "[status]\n" |
70 | "archosfmrecorder=3\n" | 81 | "archosfmrecorder=3\n" |
71 | "iriverh100=2\n" | 82 | "iriverh100=2\n" |
72 | "iriverh300=1\n" | 83 | "iriverh300=1\n" |
73 | "iriverh10=0\n" | 84 | "iriverh10=0\n" |
85 | "\n" | ||
74 | "[voices]\n" | 86 | "[voices]\n" |
75 | "3.15=english,francais\n" | 87 | "3.15=english,francais\n" |
76 | "3.11.2=english\n" | 88 | "3.11.2=english\n" |
@@ -124,11 +136,16 @@ struct { | |||
124 | { "iriverh100", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/dev/rockbox-iriverh100.zip" }, | 136 | { "iriverh100", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/dev/rockbox-iriverh100.zip" }, |
125 | { "iaudiox5.v", PlayerBuildInfo::BuildVersion, PlayerBuildInfo::TypeDevel, "be1be76" }, | 137 | { "iaudiox5.v", PlayerBuildInfo::BuildVersion, PlayerBuildInfo::TypeDevel, "be1be76" }, |
126 | { "iaudiox5.v", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/dev/rockbox-iaudiox5.zip" }, | 138 | { "iaudiox5.v", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/dev/rockbox-iaudiox5.zip" }, |
139 | // devel builds use daily fonts. | ||
140 | { "iriverh100", PlayerBuildInfo::BuildFontUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/daily/fonts/rockbox-fonts-20201114.zip" }, | ||
141 | { "iriverh100", PlayerBuildInfo::BuildManualUrl, PlayerBuildInfo::TypeDevel, "https://buildurl/daily/manual/rockbox-iriverh100-20201114%FORMAT%" }, | ||
127 | 142 | ||
128 | // daily builds | 143 | // daily builds |
129 | { "iriverh100", PlayerBuildInfo::BuildVoiceLangs, PlayerBuildInfo::TypeDaily, "deutsch,english,francais" }, | 144 | { "iriverh100", PlayerBuildInfo::BuildVoiceLangs, PlayerBuildInfo::TypeDaily, "deutsch,english,francais" }, |
130 | { "iriverh100", PlayerBuildInfo::BuildVersion, PlayerBuildInfo::TypeDaily, "f9dce00" }, | 145 | { "iriverh100", PlayerBuildInfo::BuildVersion, PlayerBuildInfo::TypeDaily, "20201114" }, |
131 | { "iriverh100", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDaily, "https://buildurl/daily/rockbox-iriverh100-f9dce00.zip" }, | 146 | { "iriverh100", PlayerBuildInfo::BuildUrl, PlayerBuildInfo::TypeDaily, "https://buildurl/daily/rockbox-iriverh100-20201114.zip" }, |
147 | { "iriverh100", PlayerBuildInfo::BuildFontUrl, PlayerBuildInfo::TypeDaily, "https://buildurl/daily/fonts/rockbox-fonts-20201114.zip" }, | ||
148 | { "iriverh120", PlayerBuildInfo::BuildManualUrl, PlayerBuildInfo::TypeDaily, "https://buildurl/daily/manual/rockbox-iriverh100-20201115%FORMAT%" }, | ||
132 | }; | 149 | }; |
133 | 150 | ||
134 | struct { | 151 | struct { |