ports/181271: [PATCH] let bsd.port.mk's makepatch support spaces in filenames
Matthias Andree
mandree at FreeBSD.org
Tue Aug 13 18:30:00 UTC 2013
>Number: 181271
>Category: ports
>Synopsis: [PATCH] let bsd.port.mk's makepatch support spaces in filenames
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Aug 13 18:30:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Matthias Andree
>Release: FreeBSD 9.1-RELEASE-p5 amd64
>Organization:
>Environment:
System: FreeBSD apollo.emma.line.org 9.1-RELEASE-p5 FreeBSD 9.1-RELEASE-p5 #0: Sat Jul 27 01:14:23 UTC 2013 root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
GNN discovered that "make makepatch" fails when encountering file or
path names with spaces in them (for instance, ".../Eclipse UI/...").
See http://pastebin.com/BWfC3XNF - we see that the path names get
broken into two where the blank is.
| /usr/bin/diff -ud ./build/eclipse-4.2.0-I20120608-1400-src/plugins/org.eclipse.ui.workbench/Eclipse ./build/eclipse-4.2.0-I20120608-1400-src/plugins/org.eclipse.ui.workbench/Eclipse > /usr/home/gnn/svn/head-ports/java/eclipse-devel/files/patch-build__eclipse-4.2.0-I20120608-1400-src__plugins__org.eclipse.ui.workbench__Eclipse
| /usr/bin/diff: ./build/eclipse-4.2.0-I20120608-1400-src/plugins/org.eclipse.ui.workbench/Eclipse: No such file or directory
| /usr/bin/diff: ./build/eclipse-4.2.0-I20120608-1400-src/plugins/org.eclipse.ui.workbench/Eclipse: No such file or directory
| /usr/bin/diff -ud UI/org/eclipse/ui/internal/keys/model/BindingModel.java.orig UI/org/eclipse/ui/internal/keys/model/BindingModel.java > /usr/home/gnn/svn/head-ports/java/eclipse-devel/filesUI__org__eclipse__ui__internal__keys__model__BindingModel.java
| /usr/bin/diff: UI/org/eclipse/ui/internal/keys/model/BindingModel.java.orig: No such file or directory
| /usr/bin/diff: UI/org/eclipse/ui/internal/keys/model/BindingModel.java: No such file or directory
The patch enclosed below proofs "make makepatch" against spaces in
filenames, by properly quoting shell variables, stripping space from the
shell's $IFS special variable, and escaping blanks to double underscores
in patch file names.
GNN has tested this, it appears to be working for eclipse 4.2.
Clement copied as last committer of the affected code so he can learn
from our pain :-)
Please either commit or approve of my committing the patch.
A copy of the patch is available at
http://people.freebsd.org/~mandree/b.p.m.makepatch-v2.patch
To be applied in ports' head/Mk directory.
>How-To-Repeat:
>Fix:
Index: bsd.port.mk
===================================================================
--- bsd.port.mk (Revision 324676)
+++ bsd.port.mk (Arbeitskopie)
@@ -1134,15 +1134,16 @@
.if !target(makepatch)
makepatch:
@${MKDIR} ${FILESDIR}
- @(cd ${PATCH_WRKSRC}; \
+ @(cd ${PATCH_WRKSRC} && \
+ IFS="`printf '\n\t'`" && \
for i in `find . -type f -name '*.orig'`; do \
- ORG=$$i; \
- NEW=$${i%.orig}; \
- OUT=${FILESDIR}`${ECHO} $${NEW} | \
- ${SED} -e 's|/|__|g' \
- -e 's|^\.__|/patch-|'`; \
- ${ECHO} ${DIFF} -ud $${ORG} $${NEW} '>' $${OUT}; \
- ${DIFF} -ud $${ORG} $${NEW} > $${OUT} || ${TRUE}; \
+ ORG="$$i"; \
+ NEW="$${i%.orig}"; \
+ OUT="${FILESDIR}`${ECHO} $${NEW} | \
+ ${SED} -e 's|[/ ]|__|g' \
+ -e 's|^\.__|/patch-|'`"; \
+ ${ECHO} ${DIFF} -ud "$${ORG}" "$${NEW}" '>' "$${OUT}"; \
+ ${DIFF} -ud "$${ORG}" "$${NEW}" > "$${OUT}" || ${TRUE}; \
done \
)
.endif
===================================================================
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list