Skip to content

Commit 9552bb7

Browse files
committed
TUN-5853 Add "install" make target and build package manager info into executable
1 parent c54e8cd commit 9552bb7

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ cscope.*
1010
/cloudflared.exe
1111
/cloudflared.msi
1212
/cloudflared-x86-64*
13+
/cloudflared.1
1314
/packaging
1415
.DS_Store
1516
*-session.log

Makefile

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ endif
2323

2424
DATE := $(shell date -u '+%Y-%m-%d-%H%M UTC')
2525
VERSION_FLAGS := -X "main.Version=$(VERSION)" -X "main.BuildTime=$(DATE)"
26+
ifdef PACKAGE_MANAGER
27+
VERSION_FLAGS := $(VERSION_FLAGS) -X "github.com/cloudflare/cloudflared/cmd/cloudflared/updater.BuiltForPackageManager=$(PACKAGE_MANAGER)"
28+
endif
2629

2730
LINK_FLAGS :=
2831
ifeq ($(FIPS), true)
@@ -37,10 +40,11 @@ ifneq ($(GO_BUILD_TAGS),)
3740
GO_BUILD_TAGS := -tags "$(GO_BUILD_TAGS)"
3841
endif
3942

40-
IMPORT_PATH := github.com/cloudflare/cloudflared
41-
PACKAGE_DIR := $(CURDIR)/packaging
42-
INSTALL_BINDIR := /usr/bin/
43-
MAN_DIR := /usr/share/man/man1/
43+
IMPORT_PATH := github.com/cloudflare/cloudflared
44+
PACKAGE_DIR := $(CURDIR)/packaging
45+
PREFIX := /usr
46+
INSTALL_BINDIR := $(PREFIX)/bin/
47+
INSTALL_MANDIR := $(PREFIX)/share/man/man1/
4448

4549
LOCAL_ARCH ?= $(shell uname -m)
4650
ifneq ($(GOARCH),)
@@ -141,32 +145,40 @@ publish-deb: cloudflared-deb
141145
publish-rpm: cloudflared-rpm
142146
$(call publish_package,rpm,yum)
143147

148+
cloudflared.1: cloudflared_man_template
149+
cat cloudflared_man_template | sed -e 's/\$${VERSION}/$(VERSION)/; s/\$${DATE}/$(DATE)/' > cloudflared.1
150+
151+
install: cloudflared cloudflared.1
152+
mkdir -p $(DESTDIR)$(INSTALL_BINDIR) $(DESTDIR)$(INSTALL_MANDIR)
153+
install -m755 cloudflared $(DESTDIR)$(INSTALL_BINDIR)/cloudflared
154+
install -m644 cloudflared.1 $(DESTDIR)$(INSTALL_MANDIR)/cloudflared.1
155+
144156
# When we build packages, the package name will be FIPS-aware.
145157
# But we keep the binary installed by it to be named "cloudflared" regardless.
146158
define build_package
147159
mkdir -p $(PACKAGE_DIR)
148160
cp cloudflared $(PACKAGE_DIR)/cloudflared
149-
cat cloudflared_man_template | sed -e 's/\$${VERSION}/$(VERSION)/; s/\$${DATE}/$(DATE)/' > $(PACKAGE_DIR)/cloudflared.1
161+
cp cloudflared.1 $(PACKAGE_DIR)/cloudflared.1
150162
fakeroot fpm -C $(PACKAGE_DIR) -s dir -t $(1) \
151163
--description 'Cloudflare Tunnel daemon' \
152164
--vendor 'Cloudflare' \
153165
--license 'Apache License Version 2.0' \
154166
--url 'https://github.com/cloudflare/cloudflared' \
155167
-m 'Cloudflare <[email protected]>' \
156168
-a $(TARGET_ARCH) -v $(VERSION) -n $(DEB_PACKAGE_NAME) $(NIGHTLY_FLAGS) --after-install postinst.sh --after-remove postrm.sh \
157-
cloudflared=$(INSTALL_BINDIR) cloudflared.1=$(MAN_DIR)
169+
cloudflared=$(INSTALL_BINDIR) cloudflared.1=$(INSTALL_MANDIR)
158170
endef
159171

160172
.PHONY: cloudflared-deb
161-
cloudflared-deb: cloudflared
173+
cloudflared-deb: cloudflared cloudflared.1
162174
$(call build_package,deb)
163175

164176
.PHONY: cloudflared-rpm
165-
cloudflared-rpm: cloudflared
177+
cloudflared-rpm: cloudflared cloudflared.1
166178
$(call build_package,rpm)
167179

168180
.PHONY: cloudflared-pkg
169-
cloudflared-pkg: cloudflared
181+
cloudflared-pkg: cloudflared cloudflared.1
170182
$(call build_package,osxpkg)
171183

172184
.PHONY: cloudflared-msi

cmd/cloudflared/updater/update.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ const (
3030
)
3131

3232
var (
33-
version string
33+
version string
34+
BuiltForPackageManager = ""
3435
)
3536

3637
// BinaryUpdated implements ExitCoder interface, the app will exit with status code 11
@@ -118,7 +119,11 @@ func Update(c *cli.Context) error {
118119
log := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
119120

120121
if wasInstalledFromPackageManager() {
121-
log.Error().Msg("cloudflared was installed by a package manager. Please update using the same method.")
122+
packageManagerName := "a package manager"
123+
if BuiltForPackageManager != "" {
124+
packageManagerName = BuiltForPackageManager
125+
}
126+
log.Error().Msg(fmt.Sprintf("cloudflared was installed by %s. Please update using the same method.", packageManagerName))
122127
return nil
123128
}
124129

@@ -281,7 +286,7 @@ func supportAutoUpdate(log *zerolog.Logger) bool {
281286

282287
func wasInstalledFromPackageManager() bool {
283288
ok, _ := config.FileExists(filepath.Join(config.DefaultUnixConfigLocation, isManagedInstallFile))
284-
return ok
289+
return len(BuiltForPackageManager) != 0 || ok
285290
}
286291

287292
func isRunningFromTerminal() bool {

0 commit comments

Comments
 (0)