Skip to content

Instantly share code, notes, and snippets.

@niamtokik
Created November 26, 2023 13:19
Show Gist options
  • Save niamtokik/4a558b7fbd367704aa48e534e1951405 to your computer and use it in GitHub Desktop.
Save niamtokik/4a558b7fbd367704aa48e534e1951405 to your computer and use it in GitHub Desktop.
OpenBSD Sync Repository Makefile
######################################################################
# A simple Makefile to synchronize OpenBSD repository locally. Helpful
# for air-gapped computers.
#
# $ make help
# $ make all
#
# see: https://www.openbsd.org/ftp.html#rsync
######################################################################
VERSION ?= 7.4
VERSION_SHORT ?= 74
ROOT ?= OpenBSD
OPENBSD_MIRROR ?= rsync://mirrors.ircam.fr/pub/OpenBSD
ARCHS ?= amd64
######################################################################
# Here a list of mirrors
######################################################################
OPENBSD_MIRRORS_FRANCE = rsync://ftp.fr.openbsd.org/OpenBSD \
rsync://ftp2.fr.openbsd.org/OpenBSD \
rsync://mirrors.ircam.fr/pub/OpenBSD
OPENBSD_MIRRORS_GERMANY = rsync://ftp.spline.de/OpenBSD \
rsync://ftp.halifax.rwth-aachen.de/openbsd \
rsync://ftp.hostserver.de/OpenBSD \
rsync://ftp.fau.de/openbsd
OPENBSD_MIRRORS = $(OPENBSD_MIRRORS_FRANCE) \
$(OPENBSD_MIRRORS_GERMANY)
RSYNC_OPTS = -avrz
RSYNC = rsync $(RSYNC_OPTS)
######################################################################
# Sync files.
######################################################################
$(ROOT):
mkdir $@
$(ROOT)/$(VERSION): $(ROOT)
mkdir $@
TOSYNC += $(ROOT)/$(VERSION)/ANNOUNCEMENT
$(ROOT)/$(VERSION)/ANNOUNCEMENT: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/ANNOUNCEMENT $@
TOSYNC += $(ROOT)/$(VERSION)/README
$(ROOT)/$(VERSION)/README: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/README $@
TOSYNC += $(ROOT)/$(VERSION)/SHA256
$(ROOT)/$(VERSION)/SHA256: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/SHA256 $@
TOSYNC += $(ROOT)/$(VERSION)/SHA256.sig
$(ROOT)/$(VERSION)/SHA256.sig: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/SHA256.sig $@
.for ARCH in $(ARCHS)
TOSYNC += $(ROOT)/$(VERSION)/$(ARCH)
$(ROOT)/$(VERSION)/$(ARCH): $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/$(ARCH) $(ROOT)/$(VERSION)
.endfor
TOSYNC += $(ROOT)/$(VERSION)/openbsd-$(VERSION_SHORT)-base.pub
$(ROOT)/$(VERSION)/openbsd-$(VERSION_SHORT)-base.pub: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/openbsd-$(VERSION_SHORT)-base.pub $@
TOSYNC += $(ROOT)/$(VERSION)/packages
$(ROOT)/$(VERSION)/packages: $(ROOT)/$(VERSION)
mkdir $@
TOSYNC += $(ROOT)/$(VERSION)/packages/amd64
$(ROOT)/$(VERSION)/packages/amd64: $(ROOT)/$(VERSION)/packages
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/amd64 $(ROOT)/$(VERSION)/packages
TOSYNC += $(ROOT)/$(VERSION)/packages-stable
$(ROOT)/$(VERSION)/packages-stable:
mkdir $@
TOSYNC += $(ROOT)/$(VERSION)/packages-stable/amd64
$(ROOT)/$(VERSION)/packages-stable/amd64:
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/packages-stable/amd64 $(ROOT)/$(VERSION)/packages-stable
TOSYNC += $(ROOT)/$(VERSION)/ports.tar.gz
$(ROOT)/$(VERSION)/ports.tar.gz: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/ports.tar.gz $@
TOSYNC += $(ROOT)/$(VERSION)/src.tar.gz
$(ROOT)/$(VERSION)/src.tar.gz: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/src.tar.gz $@
TOSYNC += $(ROOT)/$(VERSION)/sys.tar.gz
$(ROOT)/$(VERSION)/sys.tar.gz: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/sys.tar.gz $@
TOSYNC += $(ROOT)/$(VERSION)/xenocara.tar.gz
$(ROOT)/$(VERSION)/xenocara.tar.gz: $(ROOT)/$(VERSION)
$(RSYNC) $(OPENBSD_MIRROR)/$(VERSION)/xenocara.tar.gz $@
######################################################################
# Help and usage.
######################################################################
help:
@echo "Usage: make [all]"
@echo " export VERSION=$(VERSION)"
@echo " export ARCHS=$(ARCHS)"
@echo " export OPENBSD_MIRROR=$(OPENBSD_MIRROR)"
all: $(TOSYNC)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment