Skip to content

Commit 551a06c

Browse files
sergiomb2twaugh
authored andcommitted
Automatically generate symlinks for patchview-wrapper
Instead of including them directly in the source code, this commit generates symlinks for gitdiff, gitdiffview, gitshow, gitshowview, svndiff, and svndiffview automatically via Makefile.am. Add install-exec-hook and uninstall-local to manage the symlinks, using loops to automatically create/remove them and avoid repetition of individual ln -sf and rm -f commands.
1 parent 8d6615c commit 551a06c

File tree

8 files changed

+46
-31
lines changed

8 files changed

+46
-31
lines changed

Makefile.am

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,7 @@ bin_SCRIPTS = \
1515
scripts/espdiff
1616

1717
dist_bin_SCRIPTS = \
18-
patchview/gitdiff \
19-
patchview/gitdiffview \
20-
patchview/gitshow \
21-
patchview/gitshowview \
22-
patchview/svndiff \
23-
patchview/svndiffview
18+
patchview/patchview-wrapper$(EXEEXT)
2419

2520
# Bash completion files
2621
bashcompletiondir = $(datadir)/bash-completion/completions
@@ -57,27 +52,46 @@ endif
5752

5853
# Special rules for combinediff, flipdiff, lsdiff, grepdiff and patchview, which are
5954
# just symlinks.
60-
src/combinediff$(EXEEXT): src/interdiff$(EXEEXT)
61-
ln -sf $(notdir $<) $@
6255

63-
src/flipdiff$(EXEEXT): src/interdiff$(EXEEXT)
64-
ln -sf $(notdir $<) $@
56+
interdiff_links = \
57+
src/combinediff$(EXEEXT) \
58+
src/flipdiff$(EXEEXT)
59+
60+
filterdiff_links = \
61+
src/lsdiff$(EXEEXT) \
62+
src/grepdiff$(EXEEXT) \
63+
src/patchview$(EXEEXT)
6564

66-
src/lsdiff$(EXEEXT): src/filterdiff$(EXEEXT)
65+
patchview_links = \
66+
patchview/gitdiff$(EXEEXT) \
67+
patchview/gitdiffview$(EXEEXT) \
68+
patchview/gitshow$(EXEEXT) \
69+
patchview/gitshowview$(EXEEXT) \
70+
patchview/svndiff$(EXEEXT) \
71+
patchview/svndiffview$(EXEEXT)
72+
73+
$(interdiff_links): src/interdiff$(EXEEXT)
6774
ln -sf $(notdir $<) $@
6875

69-
src/grepdiff$(EXEEXT): src/filterdiff$(EXEEXT)
76+
$(filterdiff_links): src/filterdiff$(EXEEXT)
7077
ln -sf $(notdir $<) $@
7178

72-
src/patchview$(EXEEXT): src/filterdiff$(EXEEXT)
79+
$(patchview_links): patchview/patchview-wrapper$(EXEEXT)
7380
ln -sf $(notdir $<) $@
7481

7582
install-exec-hook:
76-
ln -sf "`echo interdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo combinediff|sed '$(transform)'`"
77-
ln -sf "`echo interdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo flipdiff|sed '$(transform)'`"
78-
ln -sf "`echo filterdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo lsdiff|sed '$(transform)'`"
79-
ln -sf "`echo filterdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo grepdiff|sed '$(transform)'`"
80-
ln -sf "`echo filterdiff|sed '$(transform)'`" $(DESTDIR)$(bindir)/"`echo patchview|sed '$(transform)'`"
83+
@for f in $(interdiff_links); do \
84+
ln -sf "`echo interdiff$(EXEEXT) | sed '$(transform)'`" \
85+
"$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
86+
done
87+
@for f in $(filterdiff_links); do \
88+
ln -sf "`echo filterdiff$(EXEEXT) | sed '$(transform)'`" \
89+
"$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
90+
done
91+
@for f in $(patchview_links); do \
92+
ln -sf "`echo patchview-wrapper$(EXEEXT) | sed '$(transform)'`" \
93+
"$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
94+
done
8195

8296
install-data-hook:
8397
if [ -d "$(DESTDIR)$(bashcompletiondir)" ]; then \
@@ -90,12 +104,16 @@ install-data-hook:
90104
done; \
91105
fi
92106

93-
uninstall-hook:
94-
rm -f $(DESTDIR)$(bindir)/"`echo combinediff|sed '$(transform)'`"
95-
rm -f $(DESTDIR)$(bindir)/"`echo flipdiff|sed '$(transform)'`"
96-
rm -f $(DESTDIR)$(bindir)/"`echo lsdiff|sed '$(transform)'`"
97-
rm -f $(DESTDIR)$(bindir)/"`echo grepdiff|sed '$(transform)'`"
98-
rm -f $(DESTDIR)$(bindir)/"`echo patchview|sed '$(transform)'`"
107+
uninstall-local:
108+
@for f in $(interdiff_links); do \
109+
rm -f "$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
110+
done
111+
@for f in $(filterdiff_links); do \
112+
rm -f "$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
113+
done
114+
@for f in $(patchview_links); do \
115+
rm -f "$(DESTDIR)$(bindir)/`basename $$f | sed '$(transform)'`"; \
116+
done
99117
if [ -d "$(DESTDIR)$(bashcompletiondir)" ]; then \
100118
cd "$(DESTDIR)$(bashcompletiondir)" && \
101119
for cmd in filterdiff lsdiff grepdiff interdiff combinediff flipdiff rediff \
@@ -106,7 +124,7 @@ uninstall-hook:
106124
rm -f patchutils; \
107125
fi
108126

109-
CLEANFILES=src/combinediff src/flipdiff src/lsdiff src/grepdiff src/patchview
127+
CLEANFILES = $(interdiff_links) $(filterdiff_links) $(patchview_links)
110128
MAINTAINERCLEANFILES=$(man_MANS)
111129

112130
# Regression tests.

patchview/gitdiff

Lines changed: 0 additions & 1 deletion
This file was deleted.

patchview/gitdiffview

Lines changed: 0 additions & 1 deletion
This file was deleted.

patchview/gitshow

Lines changed: 0 additions & 1 deletion
This file was deleted.

patchview/gitshowview

Lines changed: 0 additions & 1 deletion
This file was deleted.

patchview/patchview-wrapper

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
# "git show", "svn diff") piped into patchview, optionally also piped into
2323
# an editor
2424

25+
# Note: gitdiff, gitdiffview, gitshow, gitshowview, svndiff, svndiffview
26+
# are symbolic links pointing to this wrapper.
27+
# They are automatically created by Makefile.am.
2528

2629
import os
2730
import sys

patchview/svndiff

Lines changed: 0 additions & 1 deletion
This file was deleted.

patchview/svndiffview

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)