Skip to content

Commit 06e02e4

Browse files
authored
Enable vscode 1.85 for older linux distros (#19391)
* Enable vscode for older linux distros * 💄 * Update code to 1.86 * Update code to 1.86
1 parent 49269b9 commit 06e02e4

File tree

3 files changed

+79
-68
lines changed

3 files changed

+79
-68
lines changed

components/ide-service/pkg/server/server.go

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ import (
3838
type ResolverProvider func() remotes.Resolver
3939

4040
type IDEServiceServer struct {
41-
config *config.ServiceConfiguration
42-
originIDEConfig []byte
43-
parsedIDEConfigContent string
44-
parsedIDENonExperimental string
45-
ideConfig *config.IDEConfig
46-
nonExperimentalIDEConfig *config.IDEConfig
47-
ideConfigFileName string
48-
experimentsClient experiments.Client
49-
resolver ResolverProvider
41+
config *config.ServiceConfiguration
42+
originIDEConfig []byte
43+
parsedIDEConfigContent string
44+
parsedCode1_85IDEConfigContent string
45+
ideConfig *config.IDEConfig
46+
code1_85IdeConfig *config.IDEConfig
47+
ideConfigFileName string
48+
experimentsClient experiments.Client
49+
resolver ResolverProvider
5050

5151
api.UnimplementedIDEServiceServer
5252
}
@@ -176,70 +176,71 @@ func (s *IDEServiceServer) GetConfig(ctx context.Context, req *api.GetConfigRequ
176176
UserEmail: req.User.GetEmail(),
177177
}
178178

179-
experimentalIdesEnabled := s.experimentsClient.GetBoolValue(ctx, "experimentalIdes", false, attributes)
179+
// Check flag to enable vscode for older linux distros (distros that don't support glibc 2.28)
180+
enableVscodeForOlderLinuxDistros := s.experimentsClient.GetBoolValue(ctx, "enableVscodeForOlderLinuxDistros", false, attributes)
180181

181-
if experimentalIdesEnabled {
182+
if enableVscodeForOlderLinuxDistros {
182183
return &api.GetConfigResponse{
183-
Content: s.parsedIDEConfigContent,
184+
Content: s.parsedCode1_85IDEConfigContent,
184185
}, nil
185186
} else {
186187
return &api.GetConfigResponse{
187-
Content: s.parsedIDENonExperimental,
188+
Content: s.parsedIDEConfigContent,
188189
}, nil
189190
}
190191
}
191192

192193
func (s *IDEServiceServer) readIDEConfig(ctx context.Context, isInit bool) {
193-
b, err := os.ReadFile(s.ideConfigFileName)
194+
ideConfigbuffer, err := os.ReadFile(s.ideConfigFileName)
194195
if err != nil {
195-
log.WithError(err).Warn("cannot read ide config file")
196+
log.WithError(err).Warn("cannot read original ide config file")
196197
return
197198
}
198-
if ideConfig, err := ParseConfig(ctx, s.resolver(), b); err != nil {
199+
if originalIdeConfig, err := ParseConfig(ctx, s.resolver(), ideConfigbuffer); err != nil {
199200
if !isInit {
200-
log.WithError(err).Fatal("cannot parse ide config")
201+
log.WithError(err).Fatal("cannot parse original ide config")
201202
}
202-
log.WithError(err).Error("cannot parse ide config")
203+
log.WithError(err).Error("cannot parse original ide config")
203204
return
204205
} else {
205-
parsedConfig, err := json.Marshal(ideConfig)
206+
parsedConfig, err := json.Marshal(originalIdeConfig)
206207
if err != nil {
207-
log.WithError(err).Error("cannot marshal ide config")
208+
log.WithError(err).Error("cannot marshal original ide config")
208209
return
209210
}
210211

211-
// Precompute the config without experimental IDEs
212-
ideOptions := ideConfig.IdeOptions.Options
213-
nonExperimentalIdeOptions := make(map[string]config.IDEOption)
214-
for key, ide := range ideOptions {
215-
if !ide.Experimental {
216-
nonExperimentalIdeOptions[key] = ide
212+
// Precompute the config without code 1.85
213+
code1_85IdeOptions := originalIdeConfig.IdeOptions.Options
214+
ideOptions := make(map[string]config.IDEOption)
215+
for key, ide := range code1_85IdeOptions {
216+
if key != "code1_85" {
217+
ideOptions[key] = ide
217218
}
218219
}
219220

220-
nonExperimentalConfig := &config.IDEConfig{
221-
SupervisorImage: ideConfig.SupervisorImage,
221+
ideConfig := &config.IDEConfig{
222+
SupervisorImage: originalIdeConfig.SupervisorImage,
222223
IdeOptions: config.IDEOptions{
223-
Options: nonExperimentalIdeOptions,
224-
DefaultIde: ideConfig.IdeOptions.DefaultIde,
225-
DefaultDesktopIde: ideConfig.IdeOptions.DefaultDesktopIde,
226-
Clients: ideConfig.IdeOptions.Clients,
224+
Options: ideOptions,
225+
DefaultIde: originalIdeConfig.IdeOptions.DefaultIde,
226+
DefaultDesktopIde: originalIdeConfig.IdeOptions.DefaultDesktopIde,
227+
Clients: originalIdeConfig.IdeOptions.Clients,
227228
},
228229
}
229230

230-
parsedNonExperimentalConfig, err := json.Marshal(nonExperimentalConfig)
231+
parsedIdeConfig, err := json.Marshal(ideConfig)
231232
if err != nil {
232-
log.WithError(err).Error("cannot marshal non-experimental ide config")
233+
log.WithError(err).Error("cannot marshal ide config")
233234
return
234235
}
235236

236-
s.parsedIDEConfigContent = string(parsedConfig)
237-
s.ideConfig = ideConfig
237+
s.parsedCode1_85IDEConfigContent = string(parsedConfig)
238+
s.code1_85IdeConfig = originalIdeConfig
238239

239-
s.nonExperimentalIDEConfig = nonExperimentalConfig
240-
s.parsedIDENonExperimental = string(parsedNonExperimentalConfig)
240+
s.ideConfig = ideConfig
241+
s.parsedIDEConfigContent = string(parsedIdeConfig)
241242

242-
s.originIDEConfig = b
243+
s.originIDEConfig = ideConfigbuffer
243244

244245
log.Info("ide config updated")
245246
}
@@ -353,7 +354,7 @@ func (s *IDEServiceServer) ResolveWorkspaceConfig(ctx context.Context, req *api.
353354
log.WithField("req", req).Debug("receive ResolveWorkspaceConfig request")
354355

355356
// make a copy for ref ideConfig, it's safe because we replace ref in update config
356-
ideConfig := s.ideConfig
357+
ideConfig := s.code1_85IdeConfig
357358

358359
var defaultIde *config.IDEOption
359360

install/installer/pkg/components/ide-service/ide_config_configmap.go

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
101101
},
102102
Options: map[string]ide_config.IDEOption{
103103
"code": {
104-
OrderKey: "00",
104+
OrderKey: "010",
105105
Title: "VS Code",
106106
Type: ide_config.IDETypeBrowser,
107107
Label: "Browser",
@@ -111,8 +111,17 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
111111
LatestImage: resolveLatestImage(ide.CodeIDEImage, "nightly", ctx.VersionManifest.Components.Workspace.CodeImage),
112112
LatestImageLayers: []string{codeWebExtensionImage, codeHelperImage},
113113
},
114+
"code1_85": {
115+
OrderKey: "011",
116+
Title: "VS Code",
117+
Type: ide_config.IDETypeBrowser,
118+
Label: "Browser",
119+
Logo: getIdeLogoPath("vscode"),
120+
Image: ctx.ImageName(ctx.Config.Repository, ide.CodeIDEImage, ide.Code1_85IDEImageStableVersion),
121+
ImageLayers: []string{codeWebExtensionImage, codeHelperImage},
122+
},
114123
codeDesktop: {
115-
OrderKey: "02",
124+
OrderKey: "020",
116125
Title: "VS Code",
117126
Type: ide_config.IDETypeDesktop,
118127
Logo: getIdeLogoPath("vscode"),
@@ -142,7 +151,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
142151
ImageLayers: []string{jbPluginPrevious, jbLauncherImage},
143152
},
144153
goland: {
145-
OrderKey: "05",
154+
OrderKey: "050",
146155
Title: "GoLand",
147156
Type: ide_config.IDETypeDesktop,
148157
Logo: getIdeLogoPath("golandLogo"),
@@ -154,7 +163,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
154163
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
155164
},
156165
pycharm: {
157-
OrderKey: "06",
166+
OrderKey: "060",
158167
Title: "PyCharm",
159168
Label: "Professional",
160169
Type: ide_config.IDETypeDesktop,
@@ -167,7 +176,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
167176
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
168177
},
169178
phpstorm: {
170-
OrderKey: "07",
179+
OrderKey: "070",
171180
Title: "PhpStorm",
172181
Type: ide_config.IDETypeDesktop,
173182
Logo: getIdeLogoPath("phpstormLogo"),
@@ -179,7 +188,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
179188
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
180189
},
181190
rubymine: {
182-
OrderKey: "08",
191+
OrderKey: "080",
183192
Title: "RubyMine",
184193
Type: ide_config.IDETypeDesktop,
185194
Logo: getIdeLogoPath("rubymineLogo"),
@@ -191,7 +200,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
191200
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
192201
},
193202
webstorm: {
194-
OrderKey: "09",
203+
OrderKey: "090",
195204
Title: "WebStorm",
196205
Type: ide_config.IDETypeDesktop,
197206
Logo: getIdeLogoPath("webstormLogo"),
@@ -203,7 +212,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
203212
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
204213
},
205214
rider: {
206-
OrderKey: "10",
215+
OrderKey: "100",
207216
Title: "Rider",
208217
Type: ide_config.IDETypeDesktop,
209218
Logo: getIdeLogoPath("riderLogo"),
@@ -215,7 +224,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
215224
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
216225
},
217226
clion: {
218-
OrderKey: "11",
227+
OrderKey: "110",
219228
Title: "CLion",
220229
Type: ide_config.IDETypeDesktop,
221230
Logo: getIdeLogoPath("clionLogo"),
@@ -227,7 +236,7 @@ func ideConfigConfigmap(ctx *common.RenderContext) ([]runtime.Object, error) {
227236
LatestImageLayers: []string{jbPluginLatestImage, jbLauncherImage},
228237
},
229238
xterm: {
230-
OrderKey: "12",
239+
OrderKey: "120",
231240
Title: "Terminal",
232241
Type: ide_config.IDETypeBrowser,
233242
Logo: getIdeLogoPath("terminal"),

install/installer/pkg/components/workspace/ide/constants.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@
55
package ide
66

77
const (
8-
CodeIDEImage = "ide/code"
9-
CodeIDEImageStableVersion = "commit-cb1173f2a457633550a7fdc89af86d8d4da51876" // stable version that will be updated manually on demand
10-
CodeHelperIDEImage = "ide/code-codehelper"
11-
CodeWebExtensionImage = "ide/gitpod-code-web"
12-
CodeWebExtensionVersion = "commit-127d8686824d65c06a75e16d23052ebfbd8bc6a7" // gitpod-web extension version comes from https://github.com/gitpod-io/gitpod-code
13-
CodeDesktopIDEImage = "ide/code-desktop"
14-
CodeDesktopInsidersIDEImage = "ide/code-desktop-insiders"
15-
XtermIDEImage = "ide/xterm-web"
16-
IntelliJDesktopIDEImage = "ide/intellij"
17-
GoLandDesktopIdeImage = "ide/goland"
18-
PyCharmDesktopIdeImage = "ide/pycharm"
19-
PhpStormDesktopIdeImage = "ide/phpstorm"
20-
RubyMineDesktopIdeImage = "ide/rubymine"
21-
WebStormDesktopIdeImage = "ide/webstorm"
22-
RiderDesktopIdeImage = "ide/rider"
23-
CLionDesktopIdeImage = "ide/clion"
24-
JetBrainsBackendPluginImage = "ide/jb-backend-plugin"
25-
JetBrainsLauncherImage = "ide/jb-launcher"
8+
CodeIDEImage = "ide/code"
9+
CodeIDEImageStableVersion = "commit-fc97f55eae648b06f4cbd03e67c52f229de17023" // stable version that will be updated manually on demand
10+
Code1_85IDEImageStableVersion = "commit-cb1173f2a457633550a7fdc89af86d8d4da51876"
11+
CodeHelperIDEImage = "ide/code-codehelper"
12+
CodeWebExtensionImage = "ide/gitpod-code-web"
13+
CodeWebExtensionVersion = "commit-127d8686824d65c06a75e16d23052ebfbd8bc6a7" // gitpod-web extension version comes from https://github.com/gitpod-io/gitpod-code
14+
CodeDesktopIDEImage = "ide/code-desktop"
15+
CodeDesktopInsidersIDEImage = "ide/code-desktop-insiders"
16+
XtermIDEImage = "ide/xterm-web"
17+
IntelliJDesktopIDEImage = "ide/intellij"
18+
GoLandDesktopIdeImage = "ide/goland"
19+
PyCharmDesktopIdeImage = "ide/pycharm"
20+
PhpStormDesktopIdeImage = "ide/phpstorm"
21+
RubyMineDesktopIdeImage = "ide/rubymine"
22+
WebStormDesktopIdeImage = "ide/webstorm"
23+
RiderDesktopIdeImage = "ide/rider"
24+
CLionDesktopIdeImage = "ide/clion"
25+
JetBrainsBackendPluginImage = "ide/jb-backend-plugin"
26+
JetBrainsLauncherImage = "ide/jb-launcher"
2627
)

0 commit comments

Comments
 (0)