xref: /dragonfly/etc/Makefile.usr (revision a765cedf)
1# Makefile.usr - installed as /usr/Makefile
2#
3# Provides simple targets to download and maintain /usr/src, /usr/dports etc.
4
5# DragonFly BSD source repository
6GITURL_SRC?=git://git.dragonflybsd.org/dragonfly.git
7# DragonFly BSD projects repository
8GITURL_PROJECTS?=git://git.dragonflybsd.org/projects.git
9# Branch to be fetched & checked out
10# * master - latest development branch
11# * DragonFly_RELEASE_x_y - stable release branch x.y
12BRANCH?=master
13BRANCH_PROJECTS?=master
14
15# DPorts source repository
16GITURL_DPORTS?=git://mirror-master.dragonflybsd.org/dports.git
17
18# Mirror from which to fetch the pkg bootstrap
19MIRROR?=https://mirror-master.dragonflybsd.org
20
21DPDLURL=https://api.github.com/repos/DragonFlyBSD/DPorts/tarball/
22PKGBOOT_VERSION=04
23PKGBOOT_x86_64=bootstrap_pkg_${PKGBOOT_VERSION}_x86-64.tar.xz
24PKGBOOT=${MIRROR}/dports/bootstraps/${PKGBOOT_${MACHINE_ARCH}}
25WSTARS="***************************************************************"
26WARNPS="  Warning: Delete or move ${.CURDIR}/pkg before building any dport!"
27LPATT="   make %-23s- %s\n"
28
29help all:
30	@echo "HELP:"
31	@echo
32.if exists(${.CURDIR}/dports/.git)
33	@printf ${LPATT} "dports-update"         "update your dports repository from the net"
34.else
35.  if exists(${.CURDIR}/dports)
36	@printf ${LPATT} "dports-replace"        "Replace dports with latest tarball (Github)"
37.  else
38	@printf ${LPATT} "dports-create"         "fetch initial dports repository from the net"
39	@printf ${LPATT} "dports-create-shallow" "fetch initial history-free dports repository"
40	@printf ${LPATT} "dports-download"       "download & install dports tarball (Github)"
41.  endif
42.endif
43	@echo
44	@printf ${LPATT} "pkg-bootstrap"	"Use pre-built pkg to install dports packages"
45	@printf ${LPATT} "pkg-bootstrap-force"	"Force it (pkg.conf will be overwritten)"
46	@echo
47
48.if exists(${.CURDIR}/src/.git)
49	@printf ${LPATT} "src-update"         "update your src repository from the net"
50.else
51	@printf ${LPATT} "src-create"         "fetch initial src repository from the net"
52	@printf ${LPATT} "src-create-shallow" "fetch initial history-free src repository"
53.endif
54.if exists(${.CURDIR}/projects/.git)
55	@printf ${LPATT} "projects-update"         "update your projects repository from the net"
56.else
57	@printf ${LPATT} "projects-create"         "fetch initial projects repository from the net"
58	@printf ${LPATT} "projects-create-shallow" "fetch initial history-free projects repository"
59.endif
60	@echo
61.if exists(${.CURDIR}/src-sys.tar.bz2)
62	@printf ${LPATT} "release-sys-extract" "extract the pre-packaged sys-only sources"
63	@echo
64.endif
65	@echo "src checkout branch: ${BRANCH}"
66
67git-check:
68	@/usr/bin/which -s git || \
69		(echo "git must be present on the system to use this option."; /usr/bin/false)
70
71src-check: git-check
72	@/bin/test ! -d ${.CURDIR}/src/.git || \
73		(echo "Error: ${.CURDIR}/src already exists"; /usr/bin/false)
74
75projects-check: git-check
76	@/bin/test ! -d ${.CURDIR}/projects/.git || \
77		(echo "Error: ${.CURDIR}/projects already exists"; /usr/bin/false)
78
79src-check-hasdir: git-check
80	@/bin/test -d ${.CURDIR}/src/.git || \
81		(echo "Error: ${.CURDIR}/src does not exist"; /usr/bin/false)
82
83src-create: src-check
84	@echo "If problems occur you may have to 'rm -rf src' and try again."
85	@echo
86	git clone --branch ${BRANCH} -- ${GITURL_SRC} ${.CURDIR}/src
87
88src-create-shallow: src-check
89	@echo "If problems occur you may have to 'rm -rf src' and try again."
90	@echo
91	git clone --depth 1 --branch ${BRANCH} -- ${GITURL_SRC} ${.CURDIR}/src
92
93projects-create: projects-check
94	@echo "If problems occur you may have to 'rm -rf projects' and try again."
95	@echo
96	git clone --branch ${BRANCH_PROJECTS} -- ${GITURL_PROJECTS} ${.CURDIR}/projects
97
98projects-create-shallow: projects-check
99	@echo "If problems occur you may have to 'rm -rf projects' and try again."
100	@echo
101	git clone --depth 1 --branch ${BRANCH_PROJECTS} -- ${GITURL_PROJECTS} ${.CURDIR}/projects
102
103src-update: src-check-hasdir
104	cd ${.CURDIR}/src && git pull --ff-only
105	@echo
106	@echo "To automate, feel free to run this task from cron(8)."
107
108projects-update: projects-check-hasdir
109	cd ${.CURDIR}/projects && git pull --ff-only
110	@echo
111	@echo "To automate, feel free to run this task from cron(8)."
112
113.if exists(${.CURDIR}/src-sys.tar.bz2)
114release-sys-extract:
115	cd ${.CURDIR} && tar xvpjf src-sys.tar.bz2
116.endif
117
118dports-check: git-check
119	@/bin/test ! -d ${.CURDIR}/dports/.git || \
120		   (echo "Error: ${.CURDIR}/dports already exists"; /usr/bin/false)
121
122dports-check-hasdir: git-check
123	@/bin/test -d ${.CURDIR}/dports/.git || \
124		   (echo "Error: ${.CURDIR}/dports does not exist"; /usr/bin/false)
125
126dports-create: dports-check
127	@echo "If problems occur you may have to 'rm -rf dports' and try again."
128	@echo
129	git clone ${GITURL_DPORTS} ${.CURDIR}/dports
130.if exists(${.CURDIR}/pkg)
131	@echo ${WSTARS}
132	@echo ${WARNPS}
133	@echo ${WSTARS}
134.endif
135
136dports-create-shallow: dports-check
137	@echo "If problems occur you may have to 'rm -rf dports' and try again."
138	@echo
139	git clone --depth 1 ${GITURL_DPORTS} ${.CURDIR}/dports
140.if exists(${.CURDIR}/pkg)
141	@echo ${WSTARS}
142	@echo ${WARNPS}
143	@echo ${WSTARS}
144.endif
145
146dports-update: dports-check-hasdir
147	cd ${.CURDIR}/dports && git pull --ff-only
148	@echo
149	@echo "To automate, feel free to run this task from cron(8)."
150
151dports-download:
152.if exists(${.CURDIR}/dports)
153	@echo "Error: ${.CURDIR}/dports already exists"
154	@/usr/bin/false
155.endif
156	mkdir ${.CURDIR}/dports
157	fetch -o - ${DPDLURL} | \
158		tar -xf - -C ${.CURDIR}/dports --strip-components 1
159.if exists(${.CURDIR}/pkg)
160	@echo ${WSTARS}
161	@echo ${WARNPS}
162	@echo ${WSTARS}
163.endif
164
165# NOTE: Ignore error from rm -rf because /usr/dports might be
166#	a null-mount.  Be safe, do not wildcard /usr/dports/*.
167#
168dports-replace:
169.if exists(${.CURDIR}/dports/.git)
170	@echo "Error: ${.CURDIR}/dports is a git repository currently."
171	@echo "Remove ${.CURDIR}/dports and execute 'make dports-download' if you want"
172	@echo "to convert to a non-git version."
173	@/usr/bin/false
174.else
175	-rm -rf ${.CURDIR}/dports
176	[ -d "${.CURDIR}/dports" ] || mkdir ${.CURDIR}/dports
177	fetch -o - ${DPDLURL} | \
178		tar -xf - -C ${.CURDIR}/dports --strip-components 1
179.endif
180
181PKG_ENV=
182.if !exists(/etc/ssl/cert.pem)  # from port 'security/ca_root_nss'
183# Disable SSL verification for fetch(1) and pkg-static(8)
184PKG_ENV+=	SSL_NO_VERIFY_PEER=1
185.endif
186.if defined(ABIVERS)
187PKG_ENV+=	ABI=${ABIVERS}
188.endif
189
190pkg-bootstrap-fetch:
191	${PKG_ENV} fetch -o - ${PKGBOOT} | \
192		tar -xf - -C ${.CURDIR}/local
193
194# This is a bit problematic
195#
196pkg-bootstrap-install:
197	${PKG_ENV} ${.CURDIR}/local/sbin/pkg-static \
198		install -y ${PKG_FLAGS} pkg ca_root_nss
199	[ -f ${.CURDIR}/local/etc/pkg/repos/df-latest.conf ] || \
200		cp -f ${.CURDIR}/local/etc/pkg/repos/df-latest.conf.sample \
201		${.CURDIR}/local/etc/pkg/repos/df-latest.conf \
202
203pkg-bootstrap:
204.if exists(${.CURDIR}/local/sbin/pkg)
205	@echo "Error: Bootstrap not necessary, ${.CURDIR}/local/sbin/pkg already exists"
206	@/usr/bin/false
207.elif exists(${.CURDIR}/local/etc/pkg.conf)
208	@echo "Error: ${.CURDIR}/local/etc/pkg.conf will be overwritten"
209	@echo "Please move this file and rerun 'make pkg-bootstrap'"
210	@/usr/bin/false
211.else
212	@(cd ${.CURDIR} && make pkg-bootstrap-fetch)
213	@(cd ${.CURDIR} && make pkg-bootstrap-install)
214.endif
215
216# NOTE: In force mode we also have to remove any old pkg.conf
217#	which might interfere with the newer pkg bootstrap.
218#
219pkg-bootstrap-force:
220	rm -f ${.CURDIR}/local/etc/pkg.conf
221	@(cd ${.CURDIR} && make pkg-bootstrap-fetch)
222	@(cd ${.CURDIR} && make pkg-bootstrap-install PKG_FLAGS="-f")
223