Bug 181340 - [patch] devel/subversion: don't overwrite modified svnserve script
Summary: [patch] devel/subversion: don't overwrite modified svnserve script
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Lev A. Serebryakov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-16 15:50 UTC by Warren Block
Modified: 2014-02-15 13:00 UTC (History)
0 users

See Also:


Attachments
file.diff (2.45 KB, patch)
2013-08-16 15:50 UTC, Warren Block
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Warren Block freebsd_committer freebsd_triage 2013-08-16 15:50:00 UTC
When the svnserve script is used, it must be modified to point to the repository directory with the --root= option.  The port does not recognize that this script has been modified, deleting and rewriting every time the port is updated.

Fix: Apply attached patch.  (Thanks for assistance from nox@.)

Patch attached with submission follows:
How-To-Repeat: Install devel/subversion with the SVNSERVE_WRAPPER option enabled.  Modify /usr/local/bin/svnserve.  Reinstall the port, and the modified /usr/local/bin/svnserve is overwritten.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-08-16 15:50:09 UTC
Responsible Changed
From-To: freebsd-ports-bugs->lev

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Olli Hauer 2013-10-28 21:16:16 UTC
> When the svnserve script is used, it must be modified to point 
> to the repository directory with the --root= option.


There is no need to code the svn root into the wrapper, the
location can be specified in rc.conf via the 'svnserve_data=' param

From rc.d/svnserve

#  svnserve_enable="YES"
#  # optional
#  svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
#  svnserve_data="/usr/local/repositories"
#  svnserve_user="svn"
#  svnserve_group="svn"



From my own rc.conf ( 40+ repos )

svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0 --config-file=/repos/subversion/conf/svnserve.conf --log-file=/var/log/svn/svnserve.log"
svnserve_data="/repos/subversion/svnroot"
...
Comment 3 Warren Block 2013-10-28 22:46:56 UTC
On Mon, 28 Oct 2013, olli hauer wrote:

>> When the svnserve script is used, it must be modified to point
>> to the repository directory with the --root= option.
>
>
> There is no need to code the svn root into the wrapper, the
> location can be specified in rc.conf via the 'svnserve_data=' param
>
> From rc.d/svnserve
>
> #  svnserve_enable="YES"
> #  # optional
> #  svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
> #  svnserve_data="/usr/local/repositories"
> #  svnserve_user="svn"
> #  svnserve_group="svn"

But this does not work if you want to use an svn+ssh checkout and 
svnserve (the binary) is not running.  The /usr/local/bin/svnserve 
wrapper script is run directly.

Is there another way to do that?
Comment 4 Olli Hauer 2013-10-29 05:34:45 UTC
On 2013-10-28 23:46, Warren Block wrote:
> On Mon, 28 Oct 2013, olli hauer wrote:
> 
>>> When the svnserve script is used, it must be modified to point
>>> to the repository directory with the --root= option.
>>
>>
>> There is no need to code the svn root into the wrapper, the
>> location can be specified in rc.conf via the 'svnserve_data=' param
>>
>> From rc.d/svnserve
>>
>> #  svnserve_enable="YES"
>> #  # optional
>> #  svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
>> #  svnserve_data="/usr/local/repositories"
>> #  svnserve_user="svn"
>> #  svnserve_group="svn"
> 
> But this does not work if you want to use an svn+ssh checkout and svnserve (the binary) is not running.  The /usr/local/bin/svnserve wrapper script is run directly.
> 
> Is there another way to do that?
> 

If svnserve is executed via the authorized_keys I see two ways

# add the path to authorized_keys
- command="/path/to/svnserve -t -r /virtual/root" TYPE KEY COMMENT

# execute modified copy with paths in the script
- command="/path/to/svnserve.repo1 ..." TYPE KEY COMMENT
- command="/path/to/svnserve.repo2 ..." TYPE KEY COMMENT
Comment 5 dfilter service freebsd_committer freebsd_triage 2014-02-15 12:56:30 UTC
Author: lev
Date: Sat Feb 15 12:56:16 2014
New Revision: 344380
URL: http://svnweb.freebsd.org/changeset/ports/344380
QAT: https://qat.redports.org/buildarchive/r344380/

Log:
   (1) Make possible to build subversion with db6.
   (2) Fix and STAGEfy subversion-static.
   (3) Allow not to override/deinstall modified svnserve script if it is used.
  
  PR:		ports/185005, ports/180121, ports/181340, ports/186446, ports/186764

Modified:
  head/devel/subversion-static/Makefile
  head/devel/subversion/Makefile
  head/devel/subversion/Makefile.common
  head/devel/subversion/pkg-plist

Modified: head/devel/subversion-static/Makefile
==============================================================================
--- head/devel/subversion-static/Makefile	Sat Feb 15 12:50:46 2014	(r344379)
+++ head/devel/subversion-static/Makefile	Sat Feb 15 12:56:16 2014	(r344380)
@@ -11,5 +11,13 @@ OPTIONS_SLAVE=		FREEBSD_TEMPLATE P4_STYL
 MASTERDIR=	${.CURDIR}/../subversion
 PKGMESSAGE=	${.CURDIR}/pkg-message
 
-NO_STAGE=	yes
+# Set these by hands, as options are undefined
+PLIST_SUB+=	TOOLS="@comment " \
+		SVNSERVE_WRAPPER="@comment " \
+		GNOME_KEYRING="@comment " \
+		KDE_KWALLET="@comment " \
+		BDB="@comment " \
+		MOD_DAV_SVN="@comment " \
+		NLS="@comment "
+
 .include "${MASTERDIR}/Makefile"

Modified: head/devel/subversion/Makefile
==============================================================================
--- head/devel/subversion/Makefile	Sat Feb 15 12:50:46 2014	(r344379)
+++ head/devel/subversion/Makefile	Sat Feb 15 12:56:16 2014	(r344380)
@@ -62,8 +62,10 @@ EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-
 
 .if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
 SUB_LIST+=	SVNSERVE_BIN_EXT=".bin"
+PLIST_SUB+=	NO_SVNSERVE_WRAPPER="@comment "
 .else
 SUB_LIST+=	SVNSERVE_BIN_EXT=""
+PLIST_SUB+=	NO_SVNSERVE_WRAPPER=""
 .endif
 
 .if ${PORT_OPTIONS:MMOD_DAV_SVN}
@@ -87,6 +89,7 @@ USES+=			gettext:build
 .  endif
 .  if ${PORT_OPTIONS:MBDB}
 BDB_BUILD_DEPENDS=	yes
+.else
 .  endif
 OLD_LIB_DEPENDS:=	${LIB_DEPENDS:S!^!${LOCALBASE}/lib/!:C!(\.so|\.[0-9]+)?:!.a:!}
 BUILD_DEPENDS+=		${OLD_LIB_DEPENDS}
@@ -96,6 +99,12 @@ PLIST_SUB+=		DYNAMIC_ENABLED="@comment "
 PLIST_SUB+=		DYNAMIC_ENABLED=""
 .endif
 
+.if ${PORT_OPTIONS:MBDB}
+CONFIGURE_ARGS+=	--enable-bdb6
+.else
+CONFIGURE_ARGS+=	--without-berkeley-db
+.endif
+
 .if make(repository)
 WITH_REPOSITORY_CREATION=	yes
 .endif
@@ -193,12 +202,10 @@ post-install:	${MKREPOS_TARGET}
 .endif
 	@${MKDIR} ${STAGEDIR}${DATADIR}
 	(cd ${WRKSRC}/tools.examples && ${TAR} --exclude '*.in' -cf - * | ${TAR} -C ${STAGEDIR}${DATADIR} -xof - )
-
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
-
 .if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
-	@${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve
+	@${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve.sample
 .endif
 
 # ===============================================================================

Modified: head/devel/subversion/Makefile.common
==============================================================================
--- head/devel/subversion/Makefile.common	Sat Feb 15 12:50:46 2014	(r344379)
+++ head/devel/subversion/Makefile.common	Sat Feb 15 12:56:16 2014	(r344380)
@@ -3,7 +3,7 @@
 
 PORTNAME=	subversion
 PORTVERSION=	1.8.5
-PORTREVISION?=	1
+PORTREVISION?=	2
 CATEGORIES+=	devel
 MASTER_SITES=	${MASTER_SITE_APACHE}
 DIST_SUBDIR=	subversion18

Modified: head/devel/subversion/pkg-plist
==============================================================================
--- head/devel/subversion/pkg-plist	Sat Feb 15 12:50:46 2014	(r344379)
+++ head/devel/subversion/pkg-plist	Sat Feb 15 12:56:16 2014	(r344380)
@@ -13,8 +13,11 @@ bin/svnlook
 bin/svnmucc
 %%TOOLS%%bin/svnraisetreeconflict
 bin/svnrdump
-bin/svnserve
+%%NO_SVNSERVE_WRAPPER%%bin/svnserve
+%%SVNSERVE_WRAPPER%%@unexec if cmp -s %D/bin/svnserve.sample %D/bin/svnserve; then rm -r %D/bin/svnserve; fi
 %%SVNSERVE_WRAPPER%%bin/svnserve.bin
+%%SVNSERVE_WRAPPER%%bin/svnserve.sample
+%%SVNSERVE_WRAPPER%%@exec if [ ! -f %D/bin/svnserve ] ; then cp -p %D/%F %B/bin/svnserve; fi
 bin/svnsync
 bin/svnversion
 include/subversion-1/mod_authz_svn.h
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 6 Lev A. Serebryakov freebsd_committer freebsd_triage 2014-02-15 12:57:03 UTC
State Changed
From-To: open->closed


Committed, thanks!