summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunghyun Kim <jh0822.kim@samsung.com>2016-08-29 13:56:31 +0900
committerJunghyun Kim <jh0822.kim@samsung.com>2016-08-29 13:56:31 +0900
commit53ce4c8197d9fdfaa2df7661e912290b5d60e9a8 (patch)
tree0277a399306a216eb6dde51c81f5c7324f2d726a
parent796ff677d7ed1bdd2fb8d3b48572dba6a8e111f6 (diff)
downloadfdupes-accepted/tizen_5.0_base.tar.gz
fdupes-accepted/tizen_5.0_base.tar.bz2
fdupes-accepted/tizen_5.0_base.zip
Sort files after finding duplicates.tizen_6.5.m2_releasetizen_6.0.m2_releasetizen_5.5.m2_releasetizen_4.0.m2_releasetizen_4.0.m1_releasetizen_4.0.IoT.p2_releasetizen_4.0.IoT.p1_releasesubmit/tizen_base/20160921.004452submit/tizen_base/20160913.071300submit/tizen_6.5_base/20211027.200601submit/tizen_6.5_base/20211027.183101submit/tizen_6.5_base/20211026.180901submit/tizen_6.0_base_hotfix/20201102.162701submit/tizen_6.0_base_hotfix/20201030.192501submit/tizen_6.0_base/20201029.184801submit/tizen_5.5_base_wearable_hotfix/20201023.155601submit/tizen_5.5_base_mobile_hotfix/20201023.171501submit/tizen_5.5_base/20191030.000001submit/tizen_5.0_base/20181101.000001submit/tizen_4.0_base/20170828.000001submit/tizen_4.0_base/20170828.000000submit/tizen_4.0_base/20170811.071500submit/tizen_3.0_base/20161028.062323submit/tizen_3.0.m2_base/20170104.073748accepted/tizen/base/20160923.170305accepted/tizen/6.5/base/tool/20211027.115158accepted/tizen/6.5/base/20230714.002457accepted/tizen/6.0/base/tool/hotfix/20201102.090004accepted/tizen/6.0/base/tool/hotfix/20201030.124807accepted/tizen/6.0/base/tool/20201029.112006accepted/tizen/6.0/base/20230713.142830accepted/tizen/6.0/base/20201029.110531accepted/tizen/5.5/base/wearable/hotfix/20201023.080616accepted/tizen/5.5/base/mobile/hotfix/20201023.084213accepted/tizen/5.5/base/20191030.081620accepted/tizen/5.0/base/20181101.090205accepted/tizen/4.0/base/20170828.221013accepted/tizen/4.0/base/20170811.092623accepted/tizen/3.0/base/20161028.102927accepted/tizen/3.0.m2/base/20170104.081830tizen_6.5_basetizen_6.0_base_hotfixtizen_6.0_basetizen_5.5_tvtizen_5.5_base_wearable_hotfixtizen_5.5_base_mobile_hotfixtizen_5.5_basetizen_5.0_basetizen_4.0_tvtizen_4.0_basetizen_3.0_basetizen_3.0.m2_basesandbox/backup/fdupes-1.40-20211111accepted/tizen_6.5_base_toolaccepted/tizen_6.5_baseaccepted/tizen_6.0_base_tool_hotfixaccepted/tizen_6.0_base_toolaccepted/tizen_6.0_baseaccepted/tizen_5.5_base_wearable_hotfixaccepted/tizen_5.5_base_mobile_hotfixaccepted/tizen_5.5_baseaccepted/tizen_5.0_baseaccepted/tizen_4.0_baseaccepted/tizen_3.0_baseaccepted/tizen_3.0.m2_base
- PROBLEM If a and b are found duplicates, one of them is changed to a symbolic link using %fdupes in a spec file. However, it is non-deterministic which file is to be symlinked because fdupes does not sort files. In this case, OBS can detect the result is different even if the source is unchanged. - SOLUTION I changed macro.fdupes to sort duplicate files. *** Bug fixed: several groups of duplicates are handled well now. - BUG "fdupes -r ." returns like below: a b c d e This means, there are two sets of duplicates (a,b) and (c,d,e). The previous commit does not consider this case. (only considers there are single set of duplicates.) By just sorting everything, all files are considered as duplicates. We need to sort each set while preserving blank lines. Now, it performs well even for this case. Change-Id: I9de68b11674de79c34220f7c324c810aa006cc19 Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
-rw-r--r--packaging/macros.fdupes30
1 files changed, 17 insertions, 13 deletions
diff --git a/packaging/macros.fdupes b/packaging/macros.fdupes
index e99f1f2..9ec8e78 100644
--- a/packaging/macros.fdupes
+++ b/packaging/macros.fdupes
@@ -2,22 +2,26 @@
%fdupes(s) \
_target=""; \
_symlinks=0; \
+ _files=(); \
%{-s:_symlinks=1;} \
fdupes -q -n -r %1 | \
while read _file; do \
- if test -z "$_target" ; then \
- _target="$_file"; \
- else \
- if test -z "$_file" ; then \
- _target=""; \
- continue ; \
- fi ; \
- if test "$_symlinks" = 1; then \
- ln -sf "${_target#%{buildroot}}" "$_file"; \
- else \
- ln -f "$_target" "$_file"; \
- fi ;\
- fi ; \
+ if test -z $_file; then \
+ _sorted_files=($(for i in ${_files[*]}; do echo $i; done | sort)); \
+ _target=${_sorted_files[0]}; \
+ for i in $(seq 1 $((${#_sorted_files[@]}-1))); do \
+ symlink_file=${_sorted_files[$i]}; \
+ rm $symlink_file;\
+ if test "$_symlinks" = 1; then \
+ ln -sf "${_target#%{buildroot}}" "$symlink_file"; \
+ else \
+ ln -f "$_target" "$symlink_file"; \
+ fi ;\
+ done; \
+ _files=(); \
+ else \
+ _files+=($_file); \
+ fi; \
done \
%{nil}