pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/47479: sysutils/webmin fails with USE_DESTDIR=no (+FIX)



>Number:         47479
>Category:       pkg
>Synopsis:       sysutils/webmin fails with USE_DESTDIR=no   (+FIX)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jan 21 11:55:01 +0000 2013
>Originator:     Robert Elz
>Release:        NetBSD 5.1_STABLE  (irrelevant)   pkgsrc current 2012-01-21
>Organization:
        Prince of Songkla University
>Environment:
System: NetBSD jade.coe.psu.ac.th 5.1_STABLE NetBSD 5.1_STABLE 
(JADE-1.12-20120130) #27: Tue Jan 31 05:20:31 ICT 2012 
kre%jade.coe.psu.ac.th@localhost:/usr/obj/5/kernels/i386/JADE i386
Architecture: i386
Machine: i386
>Description:
        I (mostly) build packages in a pkg_comp sandbox, in which the
        USE_DESTDIR mechanism is pointless, so I have it turned off
        (USE_DESTDIR=no in the mk.conf in the sandbox).   (I leave the
        default for USE_DESTDIR in the real system for the odd times
        when I need to build a packags outside pkg_comp).

        In that environment, building sysutils/webmin (vers 1.600) fails.

        There are two problems .. first (and most people would probably
        not see this one, even with USE_DESTDIR=no) nothing creates the
        /usr/pkg/share/examples directory, the webmin setup.sh script
        attempts "mkdir /usr/pkg/share/examples/webmin" - this is assuming
        all default locations for everything of course - which fails.

        The patch included below fixes that my simply making the mkdir
        commands in setup.sh all include the -p option.   Initially, I
        hesitated to go that way, in case pkgsrc is installed on systems
        where mkdir has no -p arg, but then I saw that one (of the 4)
        mkdir calls in setup.sh was already using mkdir -p, so ...

        Incidentally, I have no idea why this doesn't fail when USE_DESTDIR=yes
        I guess something else must be making all the (parent) directories in
        that case.

        This problem would rarely be seen, as most installations would have
        had /usr/pkg/share/examples created by some other package install.
        My environment doesn't, as I build everything in a clean sandbox
        (very few packages installed) and it turns out that none of the
        dependencies of sysutils/webmin (there are only a few) need that
        directory, so in my sandbox, it didn't exist.

        More seriously, the do-install recipe in the pkgsrc Makefile
        includes
                sed -e ... -e "s,${DESTDIR},,g"
        When USE_DESTDIR=no, $DESTDIR is (normally anyway) "", which
        results in
                sed .... -e "s,,,g"
        which is not legal sed usage.   The patch below includes a
        hack to workaround that...

>How-To-Repeat:
        Attempt to build sysutils/webmin with USE_DESTDIR=no on a very
        clean (extra virgin) system (like a new pkg_comp sandbox, with
        no packages installed at all).

        Expect to see ...

Config file directory [/etc/webmin]: mkdir: /usr/pkg/share/examples/webmin: No s
uch file or directory 
ERROR: Failed to create directory /usr/pkg/share/examples/webmin

        If you fix that problem (by using mkdir -p, or just manually creating
        /usr/pkg/share/examples), then you will see on a later attempt ...

sed     -e 
"/^env_WEBMIN_CONFIG=/s,/usr/pkg/share/examples/webmin,/etc/conf/webmin,"  -e 
"/^logout=/s,/usr/pkg/share/examples/webmin,/etc/conf/webmin,"  -e 
"/^userfile=/s,/usr/pkg/share/examples/webmin,/etc/conf/webmin,"     -e 
"/^keyfile=/s,/usr/pkg/share/examples/webmin,/etc/conf/webmin,"      -e "s,,,g" 
     /usr/pkg/share/examples/webmin/miniserv.conf > 
/pkg_comp/obj/pkgsrc/sysutils/webmin/5/miniserv.conf
sed     -e "s,,,g"       /usr/pkg/share/webmin/setup-pre.sh > 
/pkg_comp/obj/pkgsrc/sysutils/webmin/5/setup-pre.sh
sed: first RE may not be empty
*** Error code 1

>Fix:
        Apply the patch below (in sysutils/webmin).   This patch patches the
        Makefile, patches/patch-aa, and distinfo files.   With this patch
        applied, a USE_DESTDIR=no build succeeds (there should be no effect
        to a USE_DESTDIR=yes build).

        The setup.sh script really needs serious work, it needs variable
        quoting fixed, and just to be done in more rational ways; Eg: using
        echo "$var" | grep "^/" to see if $var starts with a / is just
        bizarre!   (Sure it works, but a case statement is so much easier).
        But that's all someone else's problem...

Index: Makefile
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/sysutils/webmin/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- Makefile    2 Nov 2012 19:02:50 -0000       1.33
+++ Makefile    21 Jan 2013 10:42:45 -0000
@@ -102,19 +102,20 @@
 # Fix up the path to the config directory in the installed example config
 # files.
 #
+DDIR:=${DESTDIR:S/^$/UnLiKeLy_StRiNg/}
 do-install:
        ${SH} ${WRKSRC}/setup.sh ${DESTDIR}${WEBMIN_DIR}
        sed     -e 
"/^env_WEBMIN_CONFIG=/s,${DESTDIR}${WEBMIN_EGDIR},${WEBMIN_ETCDIR}," \
                -e "/^logout=/s,${DESTDIR}${WEBMIN_EGDIR},${WEBMIN_ETCDIR},"    
\
                -e "/^userfile=/s,${DESTDIR}${WEBMIN_EGDIR},${WEBMIN_ETCDIR},"  
\
                -e "/^keyfile=/s,${DESTDIR}${WEBMIN_EGDIR},${WEBMIN_ETCDIR},"   
\
-               -e "s,${DESTDIR},,g"    \
+               -e "s,${DDIR},,g"       \
                ${DESTDIR}${WEBMIN_EGDIR}/miniserv.conf > 
${WRKDIR}/miniserv.conf
-       sed     -e "s,${DESTDIR},,g"    \
+       sed     -e "s,${DDIR},,g"       \
                ${DESTDIR}${WEBMIN_DIR}/setup-pre.sh > ${WRKDIR}/setup-pre.sh
        for file in install-dir reload restart start stop var-path; do  \
                sed     -e 
"s,${DESTDIR}${WEBMIN_EGDIR}/miniserv.conf,${WEBMIN_ETCDIR}/miniserv.conf," \
-                       -e "s,${DESTDIR},,g"    \
+                       -e "s,${DDIR},,g"       \
                        ${DESTDIR}${WEBMIN_EGDIR}/$$file > ${WRKDIR}/$$file; \
        done
        cd ${DESTDIR}${WEBMIN_EGDIR} && ${RM} -f miniserv.conf install-dir 
reload restart start stop var-path
Index: distinfo
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/sysutils/webmin/distinfo,v
retrieving revision 1.19
diff -u -r1.19 distinfo
--- distinfo    2 Nov 2012 19:02:50 -0000       1.19
+++ distinfo    21 Jan 2013 11:19:35 -0000
@@ -3,7 +3,7 @@
 SHA1 (webmin-1.600.tar.gz) = b915b7127a9579cac8993c4ef54462dfa404bf64
 RMD160 (webmin-1.600.tar.gz) = 33f0c67b47bc7db625fc66b85ee1872e77f32ad5
 Size (webmin-1.600.tar.gz) = 21397348 bytes
-SHA1 (patch-aa) = e1196764fefed872e84a76dc32b428c504920468
+SHA1 (patch-aa) = c75f415f96b11eaffb7bf91eaa08871f05216757
 SHA1 (patch-ab) = fa07200462df76af23b9952739388053940c6743
 SHA1 (patch-ac) = 8803482bd0ab02e3d70683a520a76c3dc680df6b
 SHA1 (patch-ad) = 279ed8684448f1bae252bbe3ba7f9179fdd17737
Index: patches/patch-aa
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/sysutils/webmin/patches/patch-aa,v
retrieving revision 1.8
diff -u -r1.8 patch-aa
--- patches/patch-aa    2 Nov 2012 19:02:51 -0000       1.8
+++ patches/patch-aa    21 Jan 2013 11:19:14 -0000
@@ -1,7 +1,7 @@
 $NetBSD: patch-aa,v 1.8 2012/11/02 19:02:51 shattered Exp $
 
 --- setup.sh.orig      2009-03-18 07:30:26.000000000 +0200
-+++ setup.sh   2009-04-09 12:24:40.000000000 +0300
++++ setup.sh   2013-01-21 10:46:30.000000000 +0000
 @@ -35,6 +35,11 @@
  
  # Only root can run this
@@ -14,6 +14,24 @@
  if [ $? != "0" ]; then
        uname -a | grep -i CYGWIN >/dev/null
        if [ $? != "0" ]; then
+@@ -49,7 +54,7 @@
+       wadir=$1
+       echo "Installing Webmin from $srcdir to $wadir ..."
+       if [ ! -d "$wadir" ]; then
+-              mkdir "$wadir"
++              mkdir -p "$wadir"
+               if [ "$?" != "0" ]; then
+                       echo "ERROR: Failed to create $wadir"
+                       echo ""
+@@ -109,7 +114,7 @@
+       exit 2
+ fi
+ if [ ! -d $config_dir ]; then
+-      mkdir $config_dir;
++      mkdir -p $config_dir;
+       if [ $? != 0 ]; then
+               echo "ERROR: Failed to create directory $config_dir"
+               echo ""
 @@ -122,6 +127,9 @@
        upgrading=1
  fi
@@ -24,7 +42,7 @@
  # Check if upgrading from an old version
  if [ "$upgrading" = 1 ]; then
        echo ""
-@@ -199,6 +207,10 @@
+@@ -200,6 +208,10 @@
  else
        # Config directory exists .. make sure it is not in use
        ls $config_dir | grep -v rpmsave >/dev/null 2>&1
@@ -35,7 +53,16 @@
        if [ "$?" = "0" -a "$config_dir" != "/etc/webmin" ]; then
                echo "ERROR: Config directory $config_dir is not empty"
                echo ""
-@@ -528,6 +540,12 @@
+@@ -226,7 +238,7 @@
+               exit 3
+       fi
+       if [ ! -d $var_dir ]; then
+-              mkdir $var_dir
++              mkdir -p $var_dir
+               if [ $? != 0 ]; then
+                       echo "ERROR: Failed to create directory $var_dir"
+                       echo ""
+@@ -530,6 +542,12 @@
  
        kfile=$config_dir/miniserv.pem
        openssl version >/dev/null 2>&1
@@ -48,7 +75,7 @@
        if [ "$?" = "0" ]; then
                # We can generate a new SSL key for this host
                host=`hostname`
-@@ -742,44 +760,47 @@
+@@ -757,44 +775,47 @@
        echo ""
  fi
  



Home | Main Index | Thread Index | Old Index