From: Lionel Sambuc Date: Thu, 14 Aug 2014 17:02:49 +0000 (+0200) Subject: Update usr/Makefile X-Git-Tag: v3.3.0~71 X-Git-Url: http://zhaoyanbai.com/repos/%22http:/static/doc/zpipe.c?a=commitdiff_plain;h=refs%2Fchanges%2F12%2F2712%2F1;p=minix.git Update usr/Makefile - This improves the user messages. - This update the pkgsrc checkout rules to point to the new repository, as well as the new work process we are introducing. - This introduces rules for the MINIX sources, as we don't have the space anymore to distribute them by default on the official ISO. Change-Id: Id1867286bd15efc46bad1d906c1ca1b3a883b064 --- diff --git a/etc/usr/Makefile b/etc/usr/Makefile index e85ed17c0..34631ef71 100644 --- a/etc/usr/Makefile +++ b/etc/usr/Makefile @@ -1,47 +1,152 @@ -.include # Makefile - installed as /usr/Makefile # -# Provides simple targets to download and maintain /usr/pkgsrc etc. +# Provides simple targets to download and maintain /usr/pkgsrc and /usr/src. -help all: - @echo "HELP:" - @echo "" -.if exists(${.CURDIR}/pkgsrc/.git) -.if exists(${.CURDIR}/pkgsrc/Makefile) - @echo " make pkgsrc-update - update your pkgsrc repo from the net" +######################################################################## +# Entry point +######################################################################## +all help: usage + +MINIX_RELEASE!= uname -r + +######################################################################## +# PKGSRC +######################################################################## +PKGSRC_REPO_DIR:= ${.CURDIR}/pkgsrc +PKGSRC_REPO_URL:= git://git.minix3.org/pkgsrc-ng.git +PKGSRC_BRANCH:= ${MINIX_RELEASE} +MSG_RENAMED_BRANCH:= "\ +\n======================================================================== \ +\nWarning: \ +\n Renaming $$$${current_name} to $$$${new_name}. \ +\n======================================================================== \ +" +MSG_RESET_PKGSRC:= "\ +\n======================================================================== \ +\nNote: \ +\n If problems occur you may have to rm -rf ${PKGSRC_REPO_DIR} \ +\n and try again. \ +\n======================================================================== \ +" + +.if exists(${PKGSRC_REPO_DIR}/.git) +# We can only update the repository if it *does* exist +pkgsrc-update: git + # If we can fast-forward, just do it, otherwise rename current branch + # and checkout the official branch (also warn the user). + @cd ${PKGSRC_REPO_DIR} && git pull --ff-only || \ + ( current_name=$$(git rev-parse --abbrev-ref HEAD); \ + new_name=$${current_name}-$$(git rev-parse --short HEAD); \ + echo -e ${MSG_RENAMED_BRANCH}; \ + echo -n "Do you want to continue [Y/n]? "; \ + read ok; \ + if [ "$${ok}" = "" -o "$${ok}" = "y" -o "$${ok}" = "Y" ]; then \ + git branch -m $${new_name}; \ + git checkout -t origin/${PKGSRC_BRANCH}; \ + else \ + exit 1; \ + fi; \ + ) + @cd ${PKGSRC_REPO_DIR}/minix && sh minibootstrap.sh + +.if !exists(${PKGSRC_REPO_DIR}/Makefile) +# If the .git directory is available, but not yet checked out, then +pkgsrc-checkout: git + @cd ${PKGSRC_REPO_DIR} && git checkout ${PKGSRC_BRANCH} + @cd ${PKGSRC_REPO_DIR}/minix && sh minibootstrap.sh + +.endif # !exists(${PKGSRC_REPO_DIR}/Makefile) .else - @echo " make pkgsrc-checkout - initial checkout of your pre-packaged" - @echo " pkgsrc repo." - @echo " make pkgsrc-update - update your pkgsrc repo from the net" - @echo " after the initial checkout." -.endif +# We can only create the repository if it does *not* exist +pkgsrc: git + @echo -e ${MSG_RESET_PKGSRC} + @git clone -b ${PKGSRC_BRANCH} ${PKGSRC_REPO_URL} ${PKGSRC_REPO_DIR} + @cd ${PKGSRC_REPO_DIR}/minix && sh minibootstrap.sh + +.endif # exists(${PKGSRC_REPO_DIR}/.git) + +######################################################################## +# MINIX SRC +######################################################################## +SRC_REPO_DIR:= ${.CURDIR}/src +SRC_REPO_URL:= git://git.minix3.org/minix.git +SRC_BRANCH:= master +MSG_WRONG_BRANCH_SRC:= "\ +\n======================================================================== \ +\nERROR: \ +\n An unknown branch is presently checked out, please checkout \ +\n first the following branch: ${SRC_BRANCH} \ +\n======================================================================== \ +" +MSG_RESET_SRC:= "\ +\n======================================================================== \ +\nNote: \ +\n If problems occur you may have to rm -rf ${SRC_REPO_DIR} \ +\n and try again. \ +\n======================================================================== \ +" +.if exists(${SRC_REPO_DIR}/.git) +# We can only update the repository if it *does* exist +src-update: git + @cd ${SRC_REPO_DIR} && \ + [ "$$(git rev-parse --abbrev-ref HEAD)" = "${SRC_BRANCH}" ] || \ + ( echo -e ${MSG_WRONG_BRANCH_SRC}; exit 1 ) + @cd ${SRC_REPO_DIR} && git pull + +.if !exists(${SRC_REPO_DIR}/Makefile) +src-checkout: git + @cd ${SRC_REPO_DIR} && git checkout ${SRC_BRANCH} +.endif # !exists(${SRC_REPO_DIR}/Makefile) .else - @echo " make pkgsrc-create - fetch initial pkgsrc repo from the net" - @echo " make pkgsrc-update - update your pkgsrc repo from the net" -.endif +# We can only create the repository if it does not exist +src: git + @echo -e ${MSG_RESET_SRC} + @git clone ${SRC_REPO_URL} ${SRC_REPO_DIR} + +.endif # exists(${SRC_REPO_DIR}/.git) + +######################################################################## +# Support rules +######################################################################## +git: + @pkgin update 2>&1 > /dev/null + @pkgin install git-base 2>&1 > /dev/null + +usage: + @echo "Usage: make [target]" + @echo "" + @echo " Where target is one of:" + @echo " help, all, usage - print this help" @echo "" -pkgsrc-create: git - @echo "If problems occur you may have to rm -rf pkgsrc and try again." +.if exists(${SRC_REPO_DIR}/.git) + @echo " make src-update - update the src repo from the net" +.if !exists(${SRC_REPO_DIR}/Makefile) + @echo " make src-checkout - initial checkout of your pre-packaged" + @echo " pkgsrc repo." +.endif # !exists(${SRC_REPO_DIR}/Makefile) +.else + @echo " make src - fetch initial src repo from the net" +.endif # exists(${SRC_REPO_DIR}/.git) @echo "" - ${INSTALL_DIR} ${.CURDIR}/pkgsrc - cd ${.CURDIR}/pkgsrc && git init - cd ${.CURDIR}/pkgsrc && \ - git remote add origin git://git.minix3.org/pkgsrc.git - cd ${.CURDIR}/pkgsrc && git fetch origin - cd ${.CURDIR}/pkgsrc && git branch minix-master origin/minix-master - cd ${.CURDIR}/pkgsrc && git checkout minix-master - cd ${.CURDIR}/pkgsrc && git pull - cd ${.CURDIR}/pkgsrc/minix && sh minibootstrap.sh -pkgsrc-checkout: git - cd ${.CURDIR}/pkgsrc && git checkout minix-master - cd ${.CURDIR}/pkgsrc/minix && sh minibootstrap.sh +.if exists(${PKGSRC_REPO_DIR}/.git) +.if !exists(${PKGSRC_REPO_DIR}/Makefile) + @echo " make pkgsrc-checkout - initial checkout of your pre-packaged" + @echo " pkgsrc repo." +.endif # !exists(${PKGSRC_REPO_DIR}/Makefile) + @echo " make pkgsrc-update - update your pkgsrc repo from the net" +.else + @echo " make pkgsrc - fetch initial pkgsrc repo from the net" +.endif # exists(${PKGSRC_REPO_DIR}/.git) + @echo "" -pkgsrc-update: git - cd ${.CURDIR}/pkgsrc && git pull - cd ${.CURDIR}/pkgsrc/minix && sh minibootstrap.sh +_debug: + @echo "Settings:" +.for var in MINIX_RELEASE \ + SRC_REPO_DIR SRC_REPO_URL SRC_BRANCH \ + PKGSRC_REPO_DIR PKGSRC_REPO_URL PKGSRC_BRANCH + @echo " ${var} = ${${var}}" + +.endfor -git: - pkgin update - pkgin install scmgit-base