Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Feb 2014 19:13:25 +0400
From:      "Andrey V. Elsukov" <bu7cher@yandex.ru>
To:        freebsd-pkg@FreeBSD.org
Subject:   [patch] use custom git repo
Message-ID:  <5310A795.2050309@yandex.ru>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------030608060200030500050009
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Hi,

I use this patch to be able clone and pull sources and ports from our
own repos.
For example:
  # poudriere jail -c -j test -v 10.0-STABLE -m git -g
"git://github.com/freebsd/freebsd.git -b stable/10"

-- 
WBR, Andrey V. Elsukov

--------------030608060200030500050009
Content-Type: text/x-patch;
 name="poudriere.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="poudriere.diff"

--- poudriere.orig/common.sh	2014-02-26 18:47:40.000000000 +0400
+++ poudriere/common.sh	2014-02-28 19:06:25.629837798 +0400
@@ -2965,7 +2965,6 @@
 fi
 
 : ${SVN_HOST="svn.FreeBSD.org"}
-: ${GIT_URL="git://github.com/freebsd/freebsd-ports.git"}
 : ${FREEBSD_HOST="http://ftp.FreeBSD.org"}
 if [ -z "${NO_ZFS}" ]; then
 	: ${ZROOTFS="/poudriere"}
--- poudriere.orig/jail.sh	2014-02-26 18:47:40.000000000 +0400
+++ poudriere/jail.sh	2014-02-28 19:05:18.000000000 +0400
@@ -48,13 +48,14 @@
     -M mountpoint -- mountpoint
     -m method     -- When used with -c, overrides the method to use by default.
                      Could also be \"http\", \"svn\", \"svn+http\",
-                     \"svn+https\", \"svn+file\", \"svn+ssh\", \"csup\".
+                     \"svn+https\", \"svn+file\", \"svn+ssh\", \"csup\", \"git\".
                      Please note that with svn and csup the world will be
                      built. Note that building from sources can use src.conf
                      and jail-src.conf from /usr/local/etc/poudriere.d/.
                      Other possible method are: \"allbsd\" retrieve a
                      snapshot from allbsd.org's website or \"ftp-archive\"
                      for old releases that're no longer available on \"ftp\".
+    -g args       -- git arguments for cloning.			     
     -p tree       -- Specify which ports tree the jail to start/stop with
     -P patch      -- Specify a patch file to apply to the source before committing.
     -t version    -- version to upgrade to
@@ -162,6 +163,15 @@
 		yes | make -C ${JAILMNT}/usr/src delete-old delete-old-libs DESTDIR=${JAILMNT}
 		markfs clean ${JAILMNT}
 		;;
+	git)
+		install_from_git
+		eval `grep "^[RB][A-Z]*=" ${JAILMNT}/usr/src/sys/conf/newvers.sh `
+		RELEASE=${REVISION}-${BRANCH}
+		jset ${JAILNAME} version ${RELEASE}
+		update_version ${RELEASE}
+		yes | make -C ${JAILMNT}/usr/src delete-old delete-old-libs DESTDIR=${JAILMNT}
+		markfs clean ${JAILMNT}
+		;;
 	allbsd|gjb)
 		err 1 "Upgrade is not supported with allbsd, to upgrade, please delete and recreate the jail"
 		;;
@@ -249,6 +259,31 @@
 	build_and_install_world
 }
 
+install_from_git() {
+	local UPDATE=0
+	local proto
+	[ -d ${JAILMNT}/usr/src ] && UPDATE=1
+	mkdir -p ${JAILMNT}/usr/src
+	GIT_URL=$(jget ${JAILNAME} url)
+	
+	if [ ${UPDATE} -eq 0 ]; then
+		test -z "${GIT_URL}" && err 1 "git repo isn't specified"
+		msg_n "Cloning the sources from git..."
+		git clone ${GIT_URL} ${JAILMNT}/usr/src || err 1 " fail"
+		echo " done"
+		if [ -n "${SRCPATCHFILE}" ]; then
+			msg_n "Patching the sources with ${SRCPATCHFILE}"
+			patch -d ${JAILMNT}/usr/src < ${SRCPATCHFILE} || err 1 " fail"
+			echo done
+		fi
+	else
+		msg_n "Pulling the sources from git..."
+		cd ${JAILMNT}/usr/src && git pull
+		echo " done"
+	fi
+	build_and_install_world
+}
+
 install_from_csup() {
 	local UPDATE=0
 	[ -d ${JAILMNT}/usr/src ] && UPDATE=1
@@ -422,6 +457,9 @@
 		esac
 		FCT=install_from_svn
 		;;
+	git)
+		FCT=install_from_git
+		;;
 	csup)
 		case ${VERSION} in
 			.)
@@ -450,6 +488,9 @@
 	jset ${JAILNAME} version ${VERSION}
 	jset ${JAILNAME} arch ${ARCH}
 	jset ${JAILNAME} mnt ${JAILMNT}
+	if [ "${METHOD}" = "git" ]; then
+		jset ${JAILNAME} url ${GIT_URL}
+	fi
 
 	# Wrap the jail creation in a special cleanup hook that will remove the jail
 	# if any error is encountered
@@ -509,7 +550,7 @@
 
 TMPFS_ALL=0
 
-while getopts "J:j:v:a:z:m:n:f:M:sdklqcip:ut:z:P:" FLAG; do
+while getopts "J:j:g:v:a:z:m:n:f:M:sdklqcip:ut:z:P:" FLAG; do
 	case "${FLAG}" in
 		j)
 			JAILNAME=${OPTARG}
@@ -528,6 +569,9 @@
 		m)
 			METHOD=${OPTARG}
 			;;
+		g)
+			GIT_URL="${OPTARG}"
+			;;
 		f)
 			JAILFS=${OPTARG}
 			;;
--- poudriere.orig/ports.sh	2014-02-26 18:47:40.000000000 +0400
+++ poudriere/ports.sh	2014-02-28 19:05:15.000000000 +0400
@@ -54,12 +54,15 @@
 		     tree by default it is portsnap, possible usage are
 		     \"portsnap\", \"svn\", \"svn+http\", \"svn+https\",
 		     \"svn+file\", \"svn+ssh\", \"git\"
+    -g args       -- git arguments for cloning.			     
     -B branch     -- Which branch to use for SVN method (default: head)
 "
 
 	exit 1
 }
 
+: ${GIT_URL="git://github.com/freebsd/freebsd-ports.git"}
+
 CREATE=0
 FAKE=0
 UPDATE=0
@@ -68,7 +71,7 @@
 QUIET=0
 VERBOSE=0
 BRANCH=head
-while getopts "B:cFudlp:qf:M:m:v" FLAG; do
+while getopts "B:g:cFudlp:qf:M:m:v" FLAG; do
 	case "${FLAG}" in
 		B)
 			BRANCH="${OPTARG}"
@@ -76,6 +79,9 @@
 		c)
 			CREATE=1
 			;;
+		g)
+			GIT_URL="${OPTARG}"
+			;;
 		F)
 			FAKE=1
 			;;
@@ -184,6 +190,7 @@
 		git)
 			msg "Cloning the ports tree"
 			git clone ${GIT_URL} ${PTMNT} || err 1 " fail"
+			pset ${PTNAME} url ${GIT_URL}
 			echo " done"
 			;;
 		esac
--- /usr/local/bin/poudriere	2014-02-26 18:47:40.615354000 +0400
+++ poudriere	2014-02-28 19:04:58.229839491 +0400
@@ -74,7 +74,7 @@ shift
 
 case ${CMD} in
 	jail|jails)
-		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/jail.sh $@
+		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/jail.sh "$@"
 		;;
 	testport)
 		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" SAVED_TERM=${SAVED_TERM} /bin/sh ${SETX} ${POUDRIEREPREFIX}/testport.sh $@
@@ -86,7 +86,7 @@ case ${CMD} in
 		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/distclean.sh $@
 		;;
 	ports)
-		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/ports.sh $@
+		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/ports.sh "$@"
 		;;
 	queue)
 		exec env -i PATH=${PATH} POUDRIERE_VERSION="${POUDRIERE_VERSION}" /bin/sh ${SETX} ${POUDRIEREPREFIX}/queue.sh $@

--------------030608060200030500050009--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5310A795.2050309>