]> Zhao Yanbai Git Server - minix.git/commitdiff
Update usr/Makefile 12/2712/1
authorLionel Sambuc <lionel@minix3.org>
Thu, 14 Aug 2014 17:02:49 +0000 (19:02 +0200)
committerLionel Sambuc <lionel@minix3.org>
Thu, 14 Aug 2014 17:02:53 +0000 (19:02 +0200)
 - 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

etc/usr/Makefile

index e85ed17c000e3ecd761d75d3ca044ec8fb86c083..34631ef71fb9aa9da6de494a57af34e0eed3d66f 100644 (file)
-.include <bsd.own.mk>
 # 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