From owner-freebsd-pkg@FreeBSD.ORG Fri Feb 28 15:14:02 2014 Return-Path: Delivered-To: freebsd-pkg@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C7D3BAAF for ; Fri, 28 Feb 2014 15:14:02 +0000 (UTC) Received: from forward2l.mail.yandex.net (forward2l.mail.yandex.net [IPv6:2a02:6b8:0:1819::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 71DCD1623 for ; Fri, 28 Feb 2014 15:14:02 +0000 (UTC) Received: from smtp17.mail.yandex.net (smtp17.mail.yandex.net [95.108.252.17]) by forward2l.mail.yandex.net (Yandex) with ESMTP id DC63B1AC0D99 for ; Fri, 28 Feb 2014 19:13:50 +0400 (MSK) Received: from smtp17.mail.yandex.net (localhost [127.0.0.1]) by smtp17.mail.yandex.net (Yandex) with ESMTP id 9C8E3190060E for ; Fri, 28 Feb 2014 19:13:50 +0400 (MSK) Received: from 84.201.166.137-vpn.dhcp.yndx.net (84.201.166.137-vpn.dhcp.yndx.net [84.201.166.137]) by smtp17.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id qNMMlDcJn3-Do18Xr9I; Fri, 28 Feb 2014 19:13:50 +0400 (using TLSv1 with cipher CAMELLIA256-SHA (256/256 bits)) (Client certificate not present) X-Yandex-Uniq: eb818d6c-fa92-4d5e-a228-371a1ca9b46e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1393600430; bh=93MyZakIfWdBWDhDwzKTGS/gyZOKY2/jl8XDuUO2PvU=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: X-Enigmail-Version:Content-Type; b=ax3uLYX48m5/+u84wng50emYNtsSM5aLpQrTV9Uw2aj5Y5O/oGuvQTyMnOIENGc3j xpsAUaXV9hDLhjJYYK3xZiF+iijKgrLEtUwbKZO60a2l0d+fgC+0lgG+MiptGmo3pR 6B6W+mnXvzTx5Ne1dK+yi0GDL1X9TNUNRnegtZwM= Authentication-Results: smtp17.mail.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <5310A795.2050309@yandex.ru> Date: Fri, 28 Feb 2014 19:13:25 +0400 From: "Andrey V. Elsukov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: freebsd-pkg@FreeBSD.org Subject: [patch] use custom git repo X-Enigmail-Version: 1.6 Content-Type: multipart/mixed; boundary="------------030608060200030500050009" X-BeenThere: freebsd-pkg@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Binary package management and package tools discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Feb 2014 15:14:02 -0000 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--