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>