mig/Makefile

158 строки
5.5 KiB
Makefile
Исходник Обычный вид История

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
BUILDREF := $(shell git log --pretty=format:'%h' -n 1)
BUILDDATE := $(shell date +%Y%m%d%H%M)
BUILDREV := $(BUILDREF)-$(BUILDDATE)
# Supported OSes: linux darwin freebsd windows
# Supported ARCHes: 386 amd64
2014-05-14 04:21:17 +04:00
OS := linux
ARCH := amd64
PREFIX := /usr/local/
DESTDIR := /
GPGMEDIR := src/mig/pgp/sign
BINDIR := bin/$(OS)/$(ARCH)
2014-02-05 22:30:19 +04:00
AGTCONF := conf/mig-agent-conf.go
2014-05-14 04:21:17 +04:00
GCC := gcc
CFLAGS :=
LDFLAGS :=
GOOPTS :=
2014-05-14 04:21:17 +04:00
GO := GOPATH=$(shell go env GOROOT)/bin:$(shell pwd) GOOS=$(OS) GOARCH=$(ARCH) go
2014-02-05 22:30:19 +04:00
GOGETTER := GOPATH=$(shell pwd) go get -u
GOLDFLAGS := -ldflags "-X main.version $(BUILDREV)"
GOCFLAGS :=
MKDIR := mkdir
INSTALL := install
all: mig-agent mig-scheduler mig-action-generator mig-action-verifier
mig-agent:
echo building mig-agent for $(OS)/$(ARCH)
if [ ! -r $(AGTCONF) ]; then echo "$(AGTCONF) configuration file is missing" ; exit 1; fi
cp $(AGTCONF) src/mig/agent/configuration.go
$(MKDIR) -p $(BINDIR)
$(GO) build $(GOOPTS) -o $(BINDIR)/mig-agent-$(BUILDREV) $(GOLDFLAGS) mig/agent
[ -x $(BINDIR)/mig-agent-$(BUILDREV) ] && echo SUCCESS && exit 0
mig-agent-all: mig-agent-386 mig-agent-amd64
mig-agent-386:
make OS=linux ARCH=386 mig-agent
make OS=darwin ARCH=386 mig-agent
mig-agent-amd64:
make OS=linux ARCH=amd64 mig-agent
make OS=darwin ARCH=amd64 mig-agent
mig-scheduler: gpgme
$(MKDIR) -p $(BINDIR)
ln -sf src/mig/pgp/sign/libmig_gpgme.a ./
$(GO) build $(GOOPTS) -o $(BINDIR)/mig-scheduler $(GOLDFLAGS) mig/scheduler
mig-api:
$(MKDIR) -p $(BINDIR)
$(GO) build $(GOOPTS) -o $(BINDIR)/mig-api $(GOLDFLAGS) mig/api
2014-01-29 19:38:36 +04:00
mig-action-generator: gpgme
$(MKDIR) -p $(BINDIR)
# XXX this could be nicer
2014-01-29 19:38:36 +04:00
ln -sf src/mig/pgp/sign/libmig_gpgme.a ./
$(GO) build $(GOOPTS) -o $(BINDIR)/mig-action-generator $(GOLDFLAGS) mig/clients/generator
mig-action-verifier: gpgme
$(MKDIR) -p $(BINDIR)
$(GO) build $(GOOPTS) -o $(BINDIR)/mig-action-verifier $(GOLDFLAGS) mig/clients/verifier
go_get_deps_into_system:
2014-04-13 00:38:48 +04:00
make GOGETTER="go get -u" go_get_deps
go_get_deps:
$(GOGETTER) code.google.com/p/go.crypto/openpgp
$(GOGETTER) github.com/streadway/amqp
2014-05-14 04:15:32 +04:00
$(GOGETTER) github.com/lib/pq
$(GOGETTER) github.com/howeyc/fsnotify
$(GOGETTER) code.google.com/p/gcfg
$(GOGETTER) github.com/gorilla/mux
$(GOGETTER) github.com/jvehent/cljs
$(GOGETTER) bitbucket.org/kardianos/osext
2014-05-14 04:15:32 +04:00
$(GOGETTER) bitbucket.org/kardianos/service
install: gpgme mig-agent mig-scheduler
$(INSTALL) -D -m 0755 $(BINDIR)/mig-agent $(DESTDIR)$(PREFIX)/sbin/mig-agent
$(INSTALL) -D -m 0755 $(BINDIR)/mig-scheduler $(DESTDIR)$(PREFIX)/sbin/mig-scheduler
$(INSTALL) -D -m 0755 $(BINDIR)/mig_action-generator $(DESTDIR)$(PREFIX)/bin/mig_action-generator
$(INSTALL) -D -m 0640 mig.cfg $(DESTDIR)$(PREFIX)/etc/mig/mig.cfg
$(MKDIR) -p $(DESTDIR)$(PREFIX)/var/cache/mig
rpm: rpm-agent rpm-scheduler rpm-utils
rpm-agent: mig-agent
# Bonus FPM options
# --rpm-digest sha512 --rpm-sign
rm -fr tmp
$(INSTALL) -D -m 0755 $(BINDIR)/mig-agent-$(BUILDREV) tmp/sbin/mig-agent-$(BUILDREV)
$(MKDIR) -p tmp/var/cache/mig
# Agent auto install startup scripts, so we just need to execute it once as priviliged user
echo -en "#!/bin/sh\nrm /sbin/mig-agent\nln -s /sbin/mig-agent-$(BUILDREV) /sbin/mig-agent\n/sbin/mig-agent" > tmp/agent_install.sh
chmod 0755 tmp/agent_install.sh
fpm -C tmp -n mig-agent --license GPL --vendor mozilla --description "Mozilla InvestiGator Agent" \
--url https://github.com/mozilla/mig --after-install tmp/agent_install.sh \
-s dir -t rpm .
deb-agent: mig-agent
# Bonus FPM options
# --rpm-digest sha512 --rpm-sign
rm -fr tmp
$(INSTALL) -D -m 0755 $(BINDIR)/mig-agent-$(BUILDREV) tmp/sbin/mig-agent-$(BUILDREV)
$(MKDIR) -p tmp/var/cache/mig
# Agent auto install startup scripts, so we just need to execute it once as priviliged user
echo -en "#!/bin/sh\nrm /sbin/mig-agent\nln -s /sbin/mig-agent-$(BUILDREV) /sbin/mig-agent\n/sbin/mig-agent" > tmp/agent_install.sh
chmod 0755 tmp/agent_install.sh
fpm -C tmp -n mig-agent --license GPL --vendor mozilla --description "Mozilla InvestiGator Agent" \
--url https://github.com/mozilla/mig --after-install tmp/agent_install.sh \
-s dir -t deb .
rpm-scheduler: mig-scheduler
rm -rf tmp
$(INSTALL) -D -m 0755 $(BINDIR)/mig-scheduler tmp/sbin/mig-scheduler
$(INSTALL) -D -m 0640 mig.cfg tmp/etc/mig/mig.cfg
$(MKDIR) -p tmp/var/cache/mig
fpm -C tmp -n mig-scheduler --license GPL --vendor mozilla --description "Mozilla InvestiGator Scheduler" \
2014-02-03 20:13:28 +04:00
--url https://github.com/mozilla/mig \
-s dir -t rpm .
rpm-utils: mig-action-generator
rm -rf tmp
$(INSTALL) -D -m 0755 $(BINDIR)/mig-scheduler tmp/bin/mig-action-generator
$(MKDIR) -p tmp/var/cache/mig
fpm -C tmp -n mig-utils --license GPL --vendor mozilla --description "Mozilla InvestiGator Utilities" \
2014-02-03 20:13:28 +04:00
--url https://github.com/mozilla/mig \
-s dir -t rpm .
2014-02-05 19:42:27 +04:00
gpgme:
make -C $(GPGMEDIR)
tests: mig-agent
$(BINDIR)/mig-agent -m=filechecker '{"/etc/passwd":{"regex":{"this is an arbitrary string to describe this check":["^ulfrhasbeenhacked", "^rootkit.+/sbin/nologin"],"another arbitrary string":["iamaregex[0-9]"]}}}' > /dev/null
$(BINDIR)/mig-agent -m=filechecker -i=checks/policy_system_auditd_exec.json
clean:
make -C $(GPGMEDIR) clean
rm -f libmig_gpgme.a
rm -rf bin
rm -rf tmp
2014-02-11 02:50:49 +04:00
rm *.rpm
rm *.deb
find src/ -maxdepth 1 -mindepth 1 ! -name mig -exec rm -rf {} \;
clean-all: clean
rm -rf pkg
.PHONY: clean clean-all gpgme go_get_deps_into_system mig-agent-386 mig-agent-amd64