xref: /dragonfly/etc/Makefile.usr (revision 5d48f6e4)
195f63befSSascha Wildner# Makefile.usr - installed as /usr/Makefile
2809ae383SMatthew Dillon#
3df16f41aSMatthew Dillon# Provides simple targets to download and maintain /usr/src, /usr/dports etc.
4809ae383SMatthew Dillon
5ad8b70e0SAaron LI# DragonFly BSD source repository
6ad8b70e0SAaron LIGITURL_SRC?=git://git.dragonflybsd.org/dragonfly.git
76156287bSMatthew Dillon# DragonFly BSD projects repository
86156287bSMatthew DillonGITURL_PROJECTS?=git://git.dragonflybsd.org/projects.git
9ad8b70e0SAaron LI# Branch to be fetched & checked out
10ad8b70e0SAaron LI# * master - latest development branch
11ad8b70e0SAaron LI# * DragonFly_RELEASE_x_y - stable release branch x.y
12ad8b70e0SAaron LIBRANCH?=master
136156287bSMatthew DillonBRANCH_PROJECTS?=master
14ad8b70e0SAaron LI
15ad8b70e0SAaron LI# DPorts source repository
16ad8b70e0SAaron LIGITURL_DPORTS?=git://mirror-master.dragonflybsd.org/dports.git
17ad8b70e0SAaron LI
18ad8b70e0SAaron LI# Mirror from which to fetch the pkg bootstrap
19ad8b70e0SAaron LIMIRROR?=https://mirror-master.dragonflybsd.org
20fe70af21SMatthew Dillon
21898339daSJohn MarinoDPDLURL=https://api.github.com/repos/DragonFlyBSD/DPorts/tarball/
2259b242e8SAntonio Huete JimenezPKGBOOT_VERSION=04
23937aaebfSJohn MarinoPKGBOOT_x86_64=bootstrap_pkg_${PKGBOOT_VERSION}_x86-64.tar.xz
24ad8b70e0SAaron LIPKGBOOT=${MIRROR}/dports/bootstraps/${PKGBOOT_${MACHINE_ARCH}}
254060abb3SJohn MarinoWSTARS="***************************************************************"
264060abb3SJohn MarinoWARNPS="  Warning: Delete or move ${.CURDIR}/pkg before building any dport!"
274060abb3SJohn MarinoLPATT="   make %-23s- %s\n"
284060abb3SJohn Marino
29e2dbfa0bSThomas Nikolajsenhelp all:
304922fbd1SMatthew Dillon	@echo "HELP:"
314060abb3SJohn Marino	@echo
324060abb3SJohn Marino.if exists(${.CURDIR}/dports/.git)
330b576daeSJohn Marino	@printf ${LPATT} "dports-update"         "update your dports repository from the net"
344060abb3SJohn Marino.else
354060abb3SJohn Marino.  if exists(${.CURDIR}/dports)
360b576daeSJohn Marino	@printf ${LPATT} "dports-replace"        "Replace dports with latest tarball (Github)"
374060abb3SJohn Marino.  else
380b576daeSJohn Marino	@printf ${LPATT} "dports-create"         "fetch initial dports repository from the net"
394060abb3SJohn Marino	@printf ${LPATT} "dports-create-shallow" "fetch initial history-free dports repository"
400b576daeSJohn Marino	@printf ${LPATT} "dports-download"       "download & install dports tarball (Github)"
414060abb3SJohn Marino.  endif
424060abb3SJohn Marino.endif
43ad8b70e0SAaron LI	@echo
443271cef5SJohn Marino	@printf ${LPATT} "pkg-bootstrap"	"Use pre-built pkg to install dports packages"
45f201b797SMatthew Dillon	@printf ${LPATT} "pkg-bootstrap-force"	"Force it (pkg.conf will be overwritten)"
464060abb3SJohn Marino	@echo
474060abb3SJohn Marino
484922fbd1SMatthew Dillon.if exists(${.CURDIR}/src/.git)
494060abb3SJohn Marino	@printf ${LPATT} "src-update"         "update your src repository from the net"
504922fbd1SMatthew Dillon.else
514060abb3SJohn Marino	@printf ${LPATT} "src-create"         "fetch initial src repository from the net"
524060abb3SJohn Marino	@printf ${LPATT} "src-create-shallow" "fetch initial history-free src repository"
534922fbd1SMatthew Dillon.endif
546156287bSMatthew Dillon.if exists(${.CURDIR}/projects/.git)
556156287bSMatthew Dillon	@printf ${LPATT} "projects-update"         "update your projects repository from the net"
566156287bSMatthew Dillon.else
576156287bSMatthew Dillon	@printf ${LPATT} "projects-create"         "fetch initial projects repository from the net"
586156287bSMatthew Dillon	@printf ${LPATT} "projects-create-shallow" "fetch initial history-free projects repository"
596156287bSMatthew Dillon.endif
604060abb3SJohn Marino	@echo
619effbeffSSascha Wildner.if exists(${.CURDIR}/src-sys.tar.bz2)
624060abb3SJohn Marino	@printf ${LPATT} "release-sys-extract" "extract the pre-packaged sys-only sources"
634060abb3SJohn Marino	@echo
644922fbd1SMatthew Dillon.endif
65ad8b70e0SAaron LI	@echo "src checkout branch: ${BRANCH}"
664922fbd1SMatthew Dillon
67fff08b59SAntonio Huete Jimenezgit-check:
68fff08b59SAntonio Huete Jimenez	@/usr/bin/which -s git || \
69fff08b59SAntonio Huete Jimenez		(echo "git must be present on the system to use this option."; /usr/bin/false)
70fff08b59SAntonio Huete Jimenez
71fff08b59SAntonio Huete Jimenezsrc-check: git-check
72fff08b59SAntonio Huete Jimenez	@/bin/test ! -d ${.CURDIR}/src/.git || \
73fff08b59SAntonio Huete Jimenez		(echo "Error: ${.CURDIR}/src already exists"; /usr/bin/false)
74fff08b59SAntonio Huete Jimenez
756156287bSMatthew Dillonprojects-check: git-check
766156287bSMatthew Dillon	@/bin/test ! -d ${.CURDIR}/projects/.git || \
776156287bSMatthew Dillon		(echo "Error: ${.CURDIR}/projects already exists"; /usr/bin/false)
786156287bSMatthew Dillon
79fff08b59SAntonio Huete Jimenezsrc-check-hasdir: git-check
80fff08b59SAntonio Huete Jimenez	@/bin/test -d ${.CURDIR}/src/.git || \
81fff08b59SAntonio Huete Jimenez		(echo "Error: ${.CURDIR}/src does not exist"; /usr/bin/false)
82fff08b59SAntonio Huete Jimenez
83ad8b70e0SAaron LIsrc-create: src-check
84ad8b70e0SAaron LI	@echo "If problems occur you may have to 'rm -rf src' and try again."
854060abb3SJohn Marino	@echo
86ad8b70e0SAaron LI	git clone --branch ${BRANCH} -- ${GITURL_SRC} ${.CURDIR}/src
87f03b7956SMatthias Schmidt
88fff08b59SAntonio Huete Jimenezsrc-create-shallow: src-check
89ad8b70e0SAaron LI	@echo "If problems occur you may have to 'rm -rf src' and try again."
904060abb3SJohn Marino	@echo
91ad8b70e0SAaron LI	git clone --depth 1 --branch ${BRANCH} -- ${GITURL_SRC} ${.CURDIR}/src
92f03b7956SMatthias Schmidt
936156287bSMatthew Dillonprojects-create: projects-check
946156287bSMatthew Dillon	@echo "If problems occur you may have to 'rm -rf projects' and try again."
956156287bSMatthew Dillon	@echo
966156287bSMatthew Dillon	git clone --branch ${BRANCH_PROJECTS} -- ${GITURL_PROJECTS} ${.CURDIR}/projects
976156287bSMatthew Dillon
986156287bSMatthew Dillonprojects-create-shallow: projects-check
996156287bSMatthew Dillon	@echo "If problems occur you may have to 'rm -rf projects' and try again."
1006156287bSMatthew Dillon	@echo
1016156287bSMatthew Dillon	git clone --depth 1 --branch ${BRANCH_PROJECTS} -- ${GITURL_PROJECTS} ${.CURDIR}/projects
1026156287bSMatthew Dillon
103fff08b59SAntonio Huete Jimenezsrc-update: src-check-hasdir
10451cb2a60SAaron LI	cd ${.CURDIR}/src && git pull --ff-only
10551cb2a60SAaron LI	@echo
10651cb2a60SAaron LI	@echo "To automate, feel free to run this task from cron(8)."
107e2dbfa0bSThomas Nikolajsen
1086156287bSMatthew Dillonprojects-update: projects-check-hasdir
1096156287bSMatthew Dillon	cd ${.CURDIR}/projects && git pull --ff-only
1106156287bSMatthew Dillon	@echo
1116156287bSMatthew Dillon	@echo "To automate, feel free to run this task from cron(8)."
1126156287bSMatthew Dillon
113ad8b70e0SAaron LI.if exists(${.CURDIR}/src-sys.tar.bz2)
114809ae383SMatthew Dillonrelease-sys-extract:
1159effbeffSSascha Wildner	cd ${.CURDIR} && tar xvpjf src-sys.tar.bz2
116ad8b70e0SAaron LI.endif
117809ae383SMatthew Dillon
118fff08b59SAntonio Huete Jimenezdports-check: git-check
119fff08b59SAntonio Huete Jimenez	@/bin/test ! -d ${.CURDIR}/dports/.git || \
120fff08b59SAntonio Huete Jimenez		   (echo "Error: ${.CURDIR}/dports already exists"; /usr/bin/false)
1214060abb3SJohn Marino
122ad8b70e0SAaron LIdports-check-hasdir: git-check
123ad8b70e0SAaron LI	@/bin/test -d ${.CURDIR}/dports/.git || \
124ad8b70e0SAaron LI		   (echo "Error: ${.CURDIR}/dports does not exist"; /usr/bin/false)
125ad8b70e0SAaron LI
126fff08b59SAntonio Huete Jimenezdports-create: dports-check
127ad8b70e0SAaron LI	@echo "If problems occur you may have to 'rm -rf dports' and try again."
1284060abb3SJohn Marino	@echo
129ad8b70e0SAaron LI	git clone ${GITURL_DPORTS} ${.CURDIR}/dports
1304060abb3SJohn Marino.if exists(${.CURDIR}/pkg)
1314060abb3SJohn Marino	@echo ${WSTARS}
1324060abb3SJohn Marino	@echo ${WARNPS}
1334060abb3SJohn Marino	@echo ${WSTARS}
1344060abb3SJohn Marino.endif
1354060abb3SJohn Marino
136fff08b59SAntonio Huete Jimenezdports-create-shallow: dports-check
137ad8b70e0SAaron LI	@echo "If problems occur you may have to 'rm -rf dports' and try again."
1384060abb3SJohn Marino	@echo
139ad8b70e0SAaron LI	git clone --depth 1 ${GITURL_DPORTS} ${.CURDIR}/dports
1404060abb3SJohn Marino.if exists(${.CURDIR}/pkg)
1414060abb3SJohn Marino	@echo ${WSTARS}
1424060abb3SJohn Marino	@echo ${WARNPS}
1434060abb3SJohn Marino	@echo ${WSTARS}
1444060abb3SJohn Marino.endif
1454060abb3SJohn Marino
146ad8b70e0SAaron LIdports-update: dports-check-hasdir
14751cb2a60SAaron LI	cd ${.CURDIR}/dports && git pull --ff-only
14851cb2a60SAaron LI	@echo
14951cb2a60SAaron LI	@echo "To automate, feel free to run this task from cron(8)."
150ad8b70e0SAaron LI
151*5d48f6e4SAaron LIdports-download:
152*5d48f6e4SAaron LI.if exists(${.CURDIR}/dports)
153*5d48f6e4SAaron LI	@echo "Error: ${.CURDIR}/dports already exists"
154*5d48f6e4SAaron LI	@/usr/bin/false
155*5d48f6e4SAaron LI.endif
156*5d48f6e4SAaron LI	mkdir ${.CURDIR}/dports
157*5d48f6e4SAaron LI	fetch -o - ${DPDLURL} | \
158*5d48f6e4SAaron LI		tar -xf - -C ${.CURDIR}/dports --strip-components 1
1594060abb3SJohn Marino.if exists(${.CURDIR}/pkg)
1604060abb3SJohn Marino	@echo ${WSTARS}
1614060abb3SJohn Marino	@echo ${WARNPS}
1624060abb3SJohn Marino	@echo ${WSTARS}
1634060abb3SJohn Marino.endif
1644060abb3SJohn Marino
1655a500d26SMatthew Dillon# NOTE: Ignore error from rm -rf because /usr/dports might be
1665a500d26SMatthew Dillon#	a null-mount.  Be safe, do not wildcard /usr/dports/*.
1675a500d26SMatthew Dillon#
168ad8b70e0SAaron LIdports-replace:
169fff08b59SAntonio Huete Jimenez.if exists(${.CURDIR}/dports/.git)
170ad8b70e0SAaron LI	@echo "Error: ${.CURDIR}/dports is a git repository currently."
171ad8b70e0SAaron LI	@echo "Remove ${.CURDIR}/dports and execute 'make dports-download' if you want"
1724060abb3SJohn Marino	@echo "to convert to a non-git version."
173fff08b59SAntonio Huete Jimenez	@/usr/bin/false
1744060abb3SJohn Marino.else
1755a500d26SMatthew Dillon	-rm -rf ${.CURDIR}/dports
176*5d48f6e4SAaron LI	[ -d "${.CURDIR}/dports" ] || mkdir ${.CURDIR}/dports
177*5d48f6e4SAaron LI	fetch -o - ${DPDLURL} | \
178*5d48f6e4SAaron LI		tar -xf - -C ${.CURDIR}/dports --strip-components 1
1794060abb3SJohn Marino.endif
1803271cef5SJohn Marino
181f09f790eSAaron LIPKG_ENV=
182f09f790eSAaron LI.if !exists(/etc/ssl/cert.pem)  # from port 'security/ca_root_nss'
183f09f790eSAaron LI# Disable SSL verification for fetch(1) and pkg-static(8)
184f09f790eSAaron LIPKG_ENV+=	SSL_NO_VERIFY_PEER=1
185eae13f14SAaron LI.endif
186f09f790eSAaron LI.if defined(ABIVERS)
187f09f790eSAaron LIPKG_ENV+=	ABI=${ABIVERS}
188f09f790eSAaron LI.endif
189f09f790eSAaron LI
190f09f790eSAaron LIpkg-bootstrap-fetch:
191*5d48f6e4SAaron LI	${PKG_ENV} fetch -o - ${PKGBOOT} | \
192*5d48f6e4SAaron LI		tar -xf - -C ${.CURDIR}/local
193eae13f14SAaron LI
1946ed35489SMatthew Dillon# This is a bit problematic
1956ed35489SMatthew Dillon#
196eae13f14SAaron LIpkg-bootstrap-install:
197f09f790eSAaron LI	${PKG_ENV} ${.CURDIR}/local/sbin/pkg-static \
198f09f790eSAaron LI		install -y ${PKG_FLAGS} pkg ca_root_nss
199f09f790eSAaron LI	[ -f ${.CURDIR}/local/etc/pkg/repos/df-latest.conf ] || \
2006ed35489SMatthew Dillon		cp -f ${.CURDIR}/local/etc/pkg/repos/df-latest.conf.sample \
2016ed35489SMatthew Dillon		${.CURDIR}/local/etc/pkg/repos/df-latest.conf \
202f201b797SMatthew Dillon
2033271cef5SJohn Marinopkg-bootstrap:
2043271cef5SJohn Marino.if exists(${.CURDIR}/local/sbin/pkg)
205*5d48f6e4SAaron LI	@echo "Error: Bootstrap not necessary, ${.CURDIR}/local/sbin/pkg already exists"
206fff08b59SAntonio Huete Jimenez	@/usr/bin/false
2073271cef5SJohn Marino.elif exists(${.CURDIR}/local/etc/pkg.conf)
2081b1c1a4fSSascha Wildner	@echo "Error: ${.CURDIR}/local/etc/pkg.conf will be overwritten"
2093271cef5SJohn Marino	@echo "Please move this file and rerun 'make pkg-bootstrap'"
210fff08b59SAntonio Huete Jimenez	@/usr/bin/false
2113271cef5SJohn Marino.else
212eae13f14SAaron LI	@(cd ${.CURDIR} && make pkg-bootstrap-fetch)
213eae13f14SAaron LI	@(cd ${.CURDIR} && make pkg-bootstrap-install)
214daa5ccc1SMatthew Dillon.endif
215eae13f14SAaron LI
216eae13f14SAaron LI# NOTE: In force mode we also have to remove any old pkg.conf
217eae13f14SAaron LI#	which might interfere with the newer pkg bootstrap.
218eae13f14SAaron LI#
219eae13f14SAaron LIpkg-bootstrap-force:
220eae13f14SAaron LI	rm -f ${.CURDIR}/local/etc/pkg.conf
221eae13f14SAaron LI	@(cd ${.CURDIR} && make pkg-bootstrap-fetch)
222eae13f14SAaron LI	@(cd ${.CURDIR} && make pkg-bootstrap-install PKG_FLAGS="-f")
223