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