Bug 36318

Summary: net/samba: printing fails, smbpasswd stored in package [patch]
Product: Ports & Packages Reporter: hsw <hsw>
Component: Individual Port(s)Assignee: dwcjr
Status: Closed FIXED    
Severity: Affects Only Me CC: dwcjr
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description hsw 2002-03-26 01:50:01 UTC
 A. samba2.2.3a compiled with "make package" and the package installed
    an a freshly installed FreeBSD installation, printing fails.

    After investigation I found that "/var/spool/samba" was not created
    by the pkg_add.

 B. When I recompiled it as "make PACKAGE_BUILDING=yes package"
    it added my "/usr/local/private/smbpasswd" to the package.

    Which contained all the usernames/passwords from the machine
    I generated the package on.

 C. samba-devel looks like it may have the same problem as the Makefiles are
    similar.

Fix: Patch the Makefile: The patch below appends @exec/@unexec code to the
  TMPPLIST for creating and removing "PREFIX/private" and "/var/spool/samba".
  PREFIX is substituted to "%D".  "/var" remains as an absolute path
  in the +CONTENTS file.




+SED_PLIST=	${SED} -e 's!${PREFIX}!%D!g'
+
 post-install:
 	${MKDIR} ${PREFIX}/share/examples/samba
 	${CP} -rp ${WRKDIR}/${DISTNAME}/examples/* ${PREFIX}/share/examples/samba
@@ -111,19 +113,27 @@
 		${CHOWN} root:wheel ${SAMBA_PRIVATE} ;			\
 	fi
 	${CHMOD} 700 ${SAMBA_PRIVATE}
+	if [ ! -f ${SAMBA_PRIVATE}/smbpasswd.default ] ; then		\
+		${CAT} /etc/passwd | ${GREP} -v "^#" | ${PREFIX}/bin/make_smbpasswd > ${SAMBA_PRIVATE}/smbpasswd.default ; \
+		${CHMOD} 600 ${SAMBA_PRIVATE}/smbpasswd.default ;	\
+	fi
 	if [ ! -f ${SAMBA_PRIVATE}/smbpasswd ] ; then			\
-		${CAT} /etc/passwd | ${GREP} -v "^#" | ${PREFIX}/bin/make_smbpasswd > ${SAMBA_PRIVATE}/smbpasswd ; \
-		${CHMOD} 600 ${SAMBA_PRIVATE}/smbpasswd ;			\
+		${CP} -p ${SAMBA_PRIVATE}/smbpasswd.default ${SAMBA_PRIVATE}/smbpasswd ; \
+		${CHMOD} 600 ${SAMBA_PRIVATE}/smbpasswd ;		\
 	fi
 	${CHMOD} 500 ${SAMBA_PRIVATE}
 	${CHOWN} root:wheel ${PREFIX}/bin/smbpasswd
 	${CHMOD} 111 ${PREFIX}/bin/smbpasswd
-.if defined(PACKAGE_BUILDING)
-	${ECHO_CMD} "private/smbpasswd" >> ${TMPPLIST}
-	${ECHO_CMD} "@dirrm private" >> ${TMPPLIST}
-.else
-	${ECHO_CMD} "@unexec ${ECHO_CMD} \"Warning: If you will *NOT* use this package anymore, please remove %D/private/smbpasswd manually.\"" >> ${TMPPLIST}
-.endif
+	${ECHO_CMD} "@exec ${TEST} -d ${SAMBA_SPOOL} || ${MKDIR} ${SAMBA_SPOOL} && ${CHMOD} 1777 ${SAMBA_SPOOL}" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@unexec ${RM} -rf ${SAMBA_SPOOL}" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@exec ${MKDIR} -m 500 ${SAMBA_PRIVATE}" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@exec ${CHOWN} root:wheel ${SAMBA_PRIVATE}" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@exec ${CAT} /etc/passwd | ${GREP} -v "^#" | ${PREFIX}/bin/make_smbpasswd > ${SAMBA_PRIVATE}/smbpasswd.default" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@exec ${TEST} -e ${SAMBA_PRIVATE}/smbpasswd || ${CP} -p ${SAMBA_PRIVATE}/smbpasswd.default ${SAMBA_PRIVATE}/smbpasswd" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@exec ${CHMOD} 600 ${SAMBA_PRIVATE}/smbpasswd*" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@unexec /usr/bin/cmp -s ${SAMBA_PRIVATE}/smbpasswd ${SAMBA_PRIVATE}/smbpasswd.default && ${RM} -f ${SAMBA_PRIVATE}/smbpasswd ${SAMBA_PRIVATE}/secrets.tdb || ${TRUE}" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@unexec ${RM} -f ${SAMBA_PRIVATE}/smbpasswd.default" | ${SED_PLIST} >> ${TMPPLIST}
+	${ECHO_CMD} "@unexec ${RMDIR} ${SAMBA_PRIVATE} || (${ECHO_CMD} \"Warning: If you will *NOT* use this package anymore,\" && ${ECHO_CMD} \"         please remove ${SAMBA_PRIVATE} and its contents manually.\")" | ${SED_PLIST} >> ${TMPPLIST}

 .if !defined(NOPORTDOCS)
 	@${MKDIR} ${DOCSDIR}--envUrpTnrU8pHFOvj0WuIGgT58r739roaDNOUJ5KPLLORH3H
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

--- Makefile.orig	Mon Mar 18 08:34:19 2002
+++ Makefile	Tue Mar 26 09:29:22 2002
@@ -89,6 +89,8 @@
 MAN8=		nmbd.8 smbd.8 smbmnt.8 smbmount.8 \
 		smbpasswd.8 smbspool.8 smbumount.8 swat.8 winbindd.8
How-To-Repeat: 
  machine 1:
	cd /usr/ports/net/samba && make package
     OR:
	cd /usr/ports/net/samba && make PACKAGE_BUILDING=yes package

  machine 2:
	pkg_add samba-2.2.3a.tgz
Comment 1 Ying-Chieh Liao freebsd_committer freebsd_triage 2002-03-26 05:30:20 UTC
Responsible Changed
From-To: freebsd-ports->dwcjr

over to maintainer
Comment 2 dwcjr freebsd_committer freebsd_triage 2002-03-31 18:19:12 UTC
State Changed
From-To: open->closed

Committed, thanks!
Comment 3 dwcjr freebsd_committer freebsd_triage 2002-03-31 18:19:12 UTC
State Changed
From-To: open->closed

Committed, thanks!