X-Spam-Check-By: sourceware.org Message-ID: <45C7A8FD.6080706@cwilson.fastmail.fm> Date: Mon, 05 Feb 2007 17:00:29 -0500 From: Charles Wilson User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: [patch] cygport-0.2.9 allow multiple postinstall/preremove scripts References: In-Reply-To: Content-Type: multipart/mixed; boundary="------------090808020103050401000102" Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --------------090808020103050401000102 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Forward port to latest release. For further history and justifiation of this patch, see http://cygwin.com/ml/cygwin/2007-01/msg00112.html and follow the embedded links and threads. -- Chuck 2007-02-05 Charles Wilson <...> * bin/prep_gnu_info.sh: allow cygport client to suppress automatic install-info (useful if: subpackages each have own explicit postinstall scripts, and each subpackage "owns" certain info files. To activate *suppression*, set SUPPRESS_AUTOMATIC_INSTALLINFO to non-empty. Default behavior is unchanged from current. * bin/cygport.in (__prepetc): allow ${C}/${PN}.postinstall and ${C}/${PN}.sh as synonyms for ${C}/postinstall.sh (however, presence of more than one of these causes error message). Allow ${C}/${PN}.preremove as synonym for ${C}/preremove.sh (but presence of both causes error message). Allow for ${C}/${pkg_name[${n}]}.postinstall and/or ${C}/${pkg_name[${n}]}.preremove [n > 1]. --------------090808020103050401000102 Content-Type: text/plain; name="cygport-multiple-postinstall.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="cygport-multiple-postinstall.patch" Index: bin/cygport.in =================================================================== RCS file: /cvsroot/cygwin-ports/cygport/bin/cygport.in,v retrieving revision 1.53 diff -u -r1.53 cygport.in --- bin/cygport.in 5 Feb 2007 03:28:43 -0000 1.53 +++ bin/cygport.in 5 Feb 2007 21:41:50 -0000 @@ -1044,16 +1044,63 @@ __prepetc() { local d; local s; + local -i n=1 + local -i count=0 - for s in postinstall preremove + # handle some conflicts between default behavior... + if [ -f ${C}/${PN}.sh ]; then count+=1 ; fi + if [ -f ${C}/postinstall.sh ]; then count+=1 ; fi + if [ -f ${C}/${PN}.postinstall ]; then count+=1 ; fi + if (( $count > 1 )) + then + error "Can have only one of ${PN}.sh, ${PN}.postinstall, and postinstall.sh" + fi + + count=0 + if [ -f ${C}/preremove.sh ]; then count+=1 ; fi + if [ -f ${C}/${PN}.preremove ]; then count+=1 ; fi + if (( $count > 1 )) + then + error "Can have only one of ${PN}.preremove, preremove.sh" + fi + + # do "main" postinstall if present; guaranteed that at most + # only one of these three exist, thanks to checks above. + for f in ${PN}.sh ${PN}.postinstall postinstall.sh + do + if [ -f ${C}/${f} ] + then + dodir /etc/postinstall; + cat >> ${D}/etc/postinstall/${PN}.sh < ${C}/${f} + break + fi + done + + # do "main" preremove if present; guaranteed that at most + # only one of these two exist, thanks to checks above. + for f in ${PN}.preremove preremove.sh do - if [ -f ${C}/${s}.sh ] + if [ -f ${C}/${f} ] then - dodir /etc/${s}; - cat >> ${D}/etc/${s}/${PN}.sh < ${C}/${s}.sh; + dodir /etc/preremove; + cat >> ${D}/etc/preremove/${PN}.sh < ${C}/${f}; fi done + # now do other postinstall/preremove scripts if present + while [ -n "${pkg_name[${n}]}" ] + do + for s in postinstall preremove + do + if [ -f ${C}/${pkg_name[${n}]}.${s} ] + then + dodir /etc/${s}; + cat >> ${D}/etc/${s}/${pkg_name[${n}]}.sh < ${C}/${pkg_name[${n}]}.${s} + fi + done + n+=1 + done + if [ -f ${C}/profile.d.sh ] then exeinto /etc/profile.d; Index: bin/prep_gnu_info.sh =================================================================== RCS file: /cvsroot/cygwin-ports/cygport/bin/prep_gnu_info.sh,v retrieving revision 1.4 diff -u -r1.4 prep_gnu_info.sh --- bin/prep_gnu_info.sh 20 Nov 2006 05:48:58 -0000 1.4 +++ bin/prep_gnu_info.sh 5 Feb 2007 21:41:50 -0000 @@ -22,12 +22,16 @@ gzip -q ${infopage} done -dodir /etc/postinstall -for infopage in $(find ${D}/usr/share/info -type f) -do - cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF +if [ -z "${SUPPRESS_AUTOMATIC_INSTALLINFO}" ] +then + dodir /etc/postinstall + for infopage in $(find ${D}/usr/share/info -type f) + do + cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF /usr/bin/install-info --dir-file=/usr/share/info/dir --info-file=/usr/share/info/${infopage##*/} _EOF -done -echo >> ${D}/etc/postinstall/${PN}.sh + done + echo >> ${D}/etc/postinstall/${PN}.sh +fi + --------------090808020103050401000102 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --------------090808020103050401000102--