123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- DOCKER_BINARY_URL := https://github.com/rancher/docker/releases/download/v1.7.1-ros-1/docker-1.7.1
- DOCKER_BINARY := $(shell basename $(DOCKER_BINARY_URL))
- pwd := $(shell pwd)
- include scripts/build-common
- include scripts/version
- compile: bin/rancheros
- all: clean ros-build-base package
- ros-build-base:
- docker build -t ros-build-base -f Dockerfile.base .
- ros-build:
- docker build -t ros-build .
- docker-run: ros-build
- docker rm -fv ros-build > /dev/null 2>&1 || :
- docker run -v /var/run/docker.sock:/var/run/docker.sock --name=ros-build -i ros-build
- CD := $(BUILD)/cd
- assets bin $(DIST)/artifacts $(CD)/boot/isolinux:
- mkdir -p $@
- ifdef CONTAINED
- assets/$(DOCKER_BINARY): assets
- cd assets && curl -OL "$(DOCKER_BINARY_URL)"
- assets/docker: assets/$(DOCKER_BINARY)
- mv assets/$(DOCKER_BINARY) $@
- chmod +x $@
- bin/rancheros: bin
- godep go build -tags netgo -ldflags "-X github.com/rancherio/os/config.VERSION $(VERSION) -linkmode external -extldflags -static" -o $@
- strip --strip-all $@
- copy-images:
- ./scripts/copy-images
- .PHONY: copy-images
- $(DIST)/artifacts/vmlinuz: $(DIST)/artifacts copy-images
- mv $(BUILD)/kernel/vmlinuz $@
- INITRD_DIR := $(BUILD)/initrd
- $(INITRD_DIR)/images.tar: bin/rancheros
- ln -sf bin/rancheros ./ros
- for i in `./ros c images -i os-config.yml`; do docker pull $$i; done
- docker save `./ros c images -i os-config.yml` > $@
- $(DIST)/artifacts/initrd: $(DIST)/artifacts bin/rancheros assets/docker copy-images $(INITRD_DIR)/images.tar
- mv $(BUILD)/kernel/lib $(INITRD_DIR)
- mv assets/docker $(INITRD_DIR)
- cp os-config.yml $(INITRD_DIR)
- cp bin/rancheros $(INITRD_DIR)/init
- cd $(INITRD_DIR) && find | cpio -H newc -o | lzma -c > $@
- $(DIST)/artifacts/rancheros.iso: $(DIST)/artifacts/initrd $(CD)/boot/isolinux
- cp $(DIST)/artifacts/initrd $(CD)/boot
- cp $(DIST)/artifacts/vmlinuz $(CD)/boot
- cp scripts/isolinux.cfg $(CD)/boot/isolinux
- cp /usr/lib/ISOLINUX/isolinux.bin $(CD)/boot/isolinux
- cp /usr/lib/syslinux/modules/bios/ldlinux.c32 $(CD)/boot/isolinux
- cd $(CD) && xorriso -publisher "Rancher Labs, Inc." \
- -as mkisofs \
- -l -J -R -V "RancherOS" \
- -no-emul-boot -boot-load-size 4 -boot-info-table \
- -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
- -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
- -o $@ $(CD)
- $(DIST)/artifacts/iso-checksums.txt: $(DIST)/artifacts/rancheros.iso
- cd $(DIST)/artifacts && for algo in 'sha256' 'md5'; do echo "$$algo: `$${algo}sum rancheros.iso`" >> $@; done
- package: \
- $(DIST)/artifacts/initrd \
- $(DIST)/artifacts/vmlinuz \
- $(DIST)/artifacts/rancheros.iso \
- $(DIST)/artifacts/iso-checksums.txt
- else
- bin/rancheros:
- @echo make $@ | make docker-run
- docker cp ros-build:/go/src/github.com/rancherio/os/$@ $(dir $@)
- .PHONY: bin/rancheros
- package:
- @echo make $@ | make docker-run
- docker cp ros-build:/go/src/github.com/rancherio/os/bin/rancheros bin
- docker cp ros-build:/go/src/github.com/rancherio/os/dist/artifacts dist
- endif
- version:
- @echo $(VERSION)
- clean:
- rm -rf bin build dist gopath .dockerfile
- .PHONY: all compile clean dist docker-run download package ros-build ros-build-base version
|