github.com/jstaf/onedriver@v0.14.2-0.20240420231225-f07678f9e6ef/Makefile (about) 1 .PHONY: all, test, test-init, srpm, rpm, dsc, changes, deb, clean, install, uninstall 2 3 # autocalculate software/package versions 4 VERSION := $(shell grep Version onedriver.spec | sed 's/Version: *//g') 5 RELEASE := $(shell grep -oP "Release: *[0-9]+" onedriver.spec | sed 's/Release: *//g') 6 DIST := $(shell rpm --eval "%{?dist}" 2> /dev/null || echo 1) 7 RPM_FULL_VERSION = $(VERSION)-$(RELEASE)$(DIST) 8 9 # -Wno-deprecated-declarations is for gotk3, which uses deprecated methods for older 10 # glib compatibility: https://github.com/gotk3/gotk3/issues/762#issuecomment-919035313 11 CGO_CFLAGS := CGO_CFLAGS=-Wno-deprecated-declarations 12 13 # test-specific variables 14 TEST_UID := $(shell whoami) 15 GORACE := GORACE="log_path=fusefs_tests.race strip_path_prefix=1" 16 17 all: onedriver onedriver-launcher 18 19 20 onedriver: $(shell find fs/ -type f) cmd/onedriver/main.go 21 bash cgo-helper.sh 22 $(CGO_CFLAGS) go build -v \ 23 -ldflags="-X github.com/jstaf/onedriver/cmd/common.commit=$(shell git rev-parse HEAD)" \ 24 ./cmd/onedriver 25 26 27 onedriver-headless: $(shell find fs/ cmd/common/ -type f) cmd/onedriver/main.go 28 CGO_ENABLED=0 go build -v -o onedriver-headless \ 29 -ldflags="-X github.com/jstaf/onedriver/cmd/common.commit=$(shell git rev-parse HEAD)" \ 30 ./cmd/onedriver 31 32 33 onedriver-launcher: $(shell find ui/ cmd/common/ -type f) cmd/onedriver-launcher/main.go 34 $(CGO_CFLAGS) go build -v \ 35 -ldflags="-X github.com/jstaf/onedriver/cmd/common.commit=$(shell git rev-parse HEAD)" \ 36 ./cmd/onedriver-launcher 37 38 39 install: onedriver onedriver-launcher 40 cp onedriver /usr/bin/ 41 cp onedriver-launcher /usr/bin/ 42 mkdir -p /usr/share/icons/onedriver/ 43 cp pkg/resources/onedriver.svg /usr/share/icons/onedriver/ 44 cp pkg/resources/onedriver.png /usr/share/icons/onedriver/ 45 cp pkg/resources/onedriver-128.png /usr/share/icons/onedriver/ 46 cp pkg/resources/onedriver-launcher.desktop /usr/share/applications/ 47 cp pkg/resources/onedriver@.service /etc/systemd/user/ 48 gzip -c pkg/resources/onedriver.1 > /usr/share/man/man1/onedriver.1.gz 49 mandb 50 51 52 uninstall: 53 rm -f \ 54 /usr/bin/onedriver \ 55 /usr/bin/onedriver-launcher \ 56 /etc/systemd/user/onedriver@.service \ 57 /usr/share/applications/onedriver-launcher.desktop \ 58 /usr/share/man/man1/onedriver.1.gz 59 rm -rf /usr/share/icons/onedriver 60 mandb 61 62 63 # used to create release tarball for rpmbuild 64 v$(VERSION).tar.gz: $(shell git ls-files) 65 rm -rf onedriver-$(VERSION) 66 mkdir -p onedriver-$(VERSION) 67 git ls-files > filelist.txt 68 git rev-parse HEAD > .commit 69 echo .commit >> filelist.txt 70 rsync -a --files-from=filelist.txt . onedriver-$(VERSION) 71 mv onedriver-$(VERSION)/pkg/debian onedriver-$(VERSION) 72 go mod vendor 73 cp -R vendor/ onedriver-$(VERSION) 74 tar -czf $@ onedriver-$(VERSION) 75 76 77 # build srpm package used for rpm build with mock 78 srpm: onedriver-$(RPM_FULL_VERSION).src.rpm 79 onedriver-$(RPM_FULL_VERSION).src.rpm: v$(VERSION).tar.gz 80 rpmbuild -ts $< 81 cp $$(rpm --eval '%{_topdir}')/SRPMS/$@ . 82 83 84 # build the rpm for the default mock target 85 MOCK_CONFIG=$(shell readlink -f /etc/mock/default.cfg | grep -oP '[a-z0-9-]+x86_64') 86 rpm: onedriver-$(RPM_FULL_VERSION).x86_64.rpm 87 onedriver-$(RPM_FULL_VERSION).x86_64.rpm: onedriver-$(RPM_FULL_VERSION).src.rpm 88 mock -r /etc/mock/$(MOCK_CONFIG).cfg $< 89 cp /var/lib/mock/$(MOCK_CONFIG)/result/$@ . 90 91 92 # create a release tarball for debian builds 93 onedriver_$(VERSION).orig.tar.gz: v$(VERSION).tar.gz 94 cp $< $@ 95 96 97 # create the debian source package for the current version 98 changes: onedriver_$(VERSION)-$(RELEASE)_source.changes 99 onedriver_$(VERSION)-$(RELEASE)_source.changes: onedriver_$(VERSION).orig.tar.gz 100 cd onedriver-$(VERSION) && debuild -S -sa -d 101 102 103 # just a helper target to use while building debs 104 dsc: onedriver_$(VERSION)-$(RELEASE).dsc 105 onedriver_$(VERSION)-$(RELEASE).dsc: onedriver_$(VERSION).orig.tar.gz 106 dpkg-source --build onedriver-$(VERSION) 107 108 109 # create the debian package in a chroot via pbuilder 110 deb: onedriver_$(VERSION)-$(RELEASE)_amd64.deb 111 onedriver_$(VERSION)-$(RELEASE)_amd64.deb: onedriver_$(VERSION)-$(RELEASE).dsc 112 sudo mkdir -p /var/cache/pbuilder/aptcache 113 sudo pbuilder --build $< 114 cp /var/cache/pbuilder/result/$@ . 115 116 117 # a large text file for us to test upload sessions with. #science 118 dmel.fa: 119 curl ftp://ftp.ensemblgenomes.org/pub/metazoa/release-42/fasta/drosophila_melanogaster/dna/Drosophila_melanogaster.BDGP6.22.dna.chromosome.X.fa.gz | zcat > $@ 120 121 122 # setup tests for the first time on a new computer 123 test-init: onedriver 124 go install github.com/rakyll/gotest@latest 125 mkdir -p mount/ 126 $< -a mount/ 127 128 129 # For offline tests, the test binary is built online, then network access is 130 # disabled and tests are run. sudo is required - otherwise we don't have 131 # permission to deny network access to onedriver during the test. 132 test: onedriver onedriver-launcher dmel.fa 133 rm -f *.race* fusefs_tests.log 134 CGO_ENABLED=0 gotest -v -parallel=8 -count=1 $(shell go list ./ui/... | grep -v offline) 135 $(CGO_CFLAGS) gotest -v -parallel=8 -count=1 ./cmd/... 136 $(CGO_CFLAGS) $(GORACE) gotest -race -v -parallel=8 -count=1 ./fs/graph/... 137 $(CGO_CFLAGS) $(GORACE) gotest -race -v -parallel=8 -count=1 ./fs 138 $(CGO_CFLAGS) go test -c ./fs/offline 139 @echo "sudo is required to run tests of offline functionality:" 140 sudo unshare -n sudo -u $(TEST_UID) ./offline.test -test.v -test.parallel=8 -test.count=1 141 142 143 # will literally purge everything: all built artifacts, all logs, all tests, 144 # all files tests depend on, all auth tokens... EVERYTHING 145 clean: 146 fusermount3 -uz mount/ || true 147 rm -f *.db *.rpm *.deb *.dsc *.changes *.build* *.upload *.xz filelist.txt .commit 148 rm -f *.log *.fa *.gz *.test vgcore.* onedriver onedriver-headless onedriver-launcher .auth_tokens.json 149 rm -rf util-linux-*/ onedriver-*/ vendor/ build/