Skip to content

Commit 2fe4d3d

Browse files
author
aperkovic
committed
Added support for custom glibc location (RHEL/CENTOS)
1 parent 6dc7ec6 commit 2fe4d3d

File tree

3 files changed

+50
-10
lines changed

3 files changed

+50
-10
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,20 @@ Usage of ./factorio-server-manager:
5959
Maximum filesize for uploaded files (default 20MB). (default 20971520)
6060
-port string
6161
Specify a port for the server. (default "8080")
62-
62+
-glibc-custom string
63+
Specify if custom glibc is used (default false) [true/false]
64+
-glibc-loc string
65+
Path to the glibc ld.so file (default "/opt/glibc-2.18/lib/ld-2.18.so")
66+
-glibc-lib-loc
67+
Path to the glibc lib folder (default "/opt/glibc-2.18/lib")
6368
Example:
6469
6570
./factorio-server-manager --dir /home/user/.factorio --host 10.0.0.1
6671
72+
Custom glibc example:
73+
74+
./factorio-server-manager --dir /home/user/.factorio --host 10.0.0.1 --glibc-custom true --glibc-loc /opt/glibc-2.18/lib/ld-2.18.so --glibc-lib-loc /opt/glibc-2.18/lib
75+
6776
```
6877

6978
## Manage Factorio Server

src/factorio_server.go

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func initFactorio() (f *FactorioServer, err error) {
9797
log.Printf("Loaded Factorio settings from %s\n", settingsPath)
9898

9999
//Load factorio version
100-
out, err := exec.Command(config.FactorioBinary, "--version").Output()
100+
out, err := exec.Command(config.glibcLocation, "--library-path", config.glibcLibLoc, config.FactorioBinary, "--version").Output()
101101
if err != nil {
102102
log.Printf("error on loading factorio version: %s", err)
103103
return
@@ -140,12 +140,27 @@ func (f *FactorioServer) Run() error {
140140
ioutil.WriteFile(filepath.Join(config.FactorioConfigDir, config.SettingsFile), data, 0644)
141141
}
142142

143-
args := []string{
144-
"--bind", (f.BindIP),
145-
"--port", strconv.Itoa(f.Port),
146-
"--server-settings", filepath.Join(config.FactorioConfigDir, "server-settings.json"),
147-
"--rcon-port", strconv.Itoa(config.FactorioRconPort),
148-
"--rcon-password", config.FactorioRconPass,
143+
args := []string{}
144+
if config.glibcCustom == "true" {
145+
log.Println("Custom glibc selected, glibc.so location:", config.glibcLocation, " lib location:", config.glibcLibLoc)
146+
args = []string{
147+
"--library-path", config.glibcLibLoc,
148+
config.FactorioBinary,
149+
"--bind", (f.BindIP),
150+
"--port", strconv.Itoa(f.Port),
151+
"--server-settings", filepath.Join(config.FactorioConfigDir, "server-settings.json"),
152+
"--rcon-port", strconv.Itoa(config.FactorioRconPort),
153+
"--rcon-password", config.FactorioRconPass,
154+
"--executable-path", config.FactorioBinary,
155+
}
156+
} else {
157+
args = []string{
158+
"--bind", (f.BindIP),
159+
"--port", strconv.Itoa(f.Port),
160+
"--server-settings", filepath.Join(config.FactorioConfigDir, "server-settings.json"),
161+
"--rcon-port", strconv.Itoa(config.FactorioRconPort),
162+
"--rcon-password", config.FactorioRconPass,
163+
}
149164
}
150165

151166
if f.Savefile == "Load Latest" {
@@ -156,7 +171,15 @@ func (f *FactorioServer) Run() error {
156171

157172
log.Println("Starting server with command: ", config.FactorioBinary, args)
158173

159-
f.Cmd = exec.Command(config.FactorioBinary, args...)
174+
if config.glibcCustom == "true" {
175+
log.Println("Starting server with command: ", config.glibcLocation, args)
176+
f.Cmd = exec.Command(config.glibcLocation, args...)
177+
} else {
178+
log.Println("Starting server with command: ", config.FactorioBinary, args)
179+
f.Cmd = exec.Command(config.FactorioBinary, args...)
180+
}
181+
182+
//f.Cmd = exec.Command(config.glibcLocation, "--library-path", config.glibcLibLoc, config.FactorioBinary, args...)
160183

161184
f.StdOut, err = f.Cmd.StdoutPipe()
162185
if err != nil {

src/main.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ type Config struct {
3434
SettingsFile string `json:"settings_file"`
3535
LogFile string `json:"log_file"`
3636
ConfFile string
37+
glibcCustom string
38+
glibcLocation string
39+
glibcLibLoc string
3740
}
3841

3942
var (
@@ -72,9 +75,14 @@ func parseFlags() {
7275
factorioConfigFile := flag.String("config", "config/config.ini", "Specify location of Factorio config.ini file")
7376
factorioMaxUpload := flag.Int64("max-upload", 1024*1024*20, "Maximum filesize for uploaded files (default 20MB).")
7477
factorioBinary := flag.String("bin", "bin/x64/factorio", "Location of Factorio Server binary file")
78+
glibcCustom := flag.String("glibc-custom", "false", "By default false, if custom glibc is required set this to true and add glibc-loc and glibc-lib-loc parameters")
79+
glibcLocation := flag.String("glibc-loc", "/opt/glibc-2.18/lib/ld-2.18.so", "Location glibc ld.so file if needed (ex. /opt/glibc-2.18/lib/ld-2.18.so)")
80+
glibcLibLoc := flag.String("glibc-lib-loc", "/opt/glibc-2.18/lib", "Location of glibc lib folder (ex. /opt/glibc-2.18/lib)")
7581

7682
flag.Parse()
77-
83+
config.glibcCustom = *glibcCustom
84+
config.glibcLocation = *glibcLocation
85+
config.glibcLibLoc = *glibcLibLoc
7886
config.ConfFile = *confFile
7987
config.FactorioDir = *factorioDir
8088
config.ServerIP = *serverIP

0 commit comments

Comments
 (0)