| Summary: | "customize" package copies files to wrong place in target tree | ||
|---|---|---|---|
| Product: | buildroot | Reporter: | Grant Edwards <grant.b.edwards> |
| Component: | Other | Assignee: | unassigned |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | buildroot, paulius.zaleckas, serj.kalichev |
| Priority: | P5 | ||
| Version: | unspecified | ||
| Target Milestone: | 2010.05 | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Host: | Gentoo Linux | Target: | Atmel at91sam9g20 |
| Build: | |||
| Attachments: | Patch to fix bug that copies files to wrong place in target tree | ||
Wrong. Then it will copy wrongly files that needs new directory to be created. I think we should use install instead of cp. (In reply to comment #1) > Wrong. Then it will copy wrongly files that needs new directory to be > created. I think we should use install instead of cp. Can you provide an example where it fails? I tested the patch pretty extensively and it worked fine for me - when new directories needed to be created. *** Bug 1135 has been marked as a duplicate of this bug. *** Fixed in git (ea0695ff5ed) - Thanks, and sorry for the slow response. |
Created attachment 885 [details] Patch to fix bug that copies files to wrong place in target tree I'm attempting to use the "customize" package to get libgcc_s.so files into my target filesystem, and it doesn't seem to work. I put files into the package like so: $ tree customize customize |-- Config.in |-- customize.mk `-- source |-- asdf `-- lib |-- foobar |-- libgcc.a |-- libgcc_eh.a |-- libgcc_s.so `-- libgcc_s.so.1 But what ends up on my target filesystem is /asdf /lib/lib/libgcc_s.so /lib/lib/libgcc_s.so.1 /lib/lib/foobar The two .a files end up being removed later in the build process, but the other files that I expect to find in /lib end up in /lib/lib. The mislocation appears to be due to a bug in customize.mk: 1 ############################################################# 2 # 3 # Any custom stuff you feel like doing.... 4 # 5 ############################################################# 6 CUST_DIR:=package/customize/source 7 8 $(BUILD_DIR)/.customize: 9 rm -f $(BUILD_DIR)/series 10 (cd $(CUST_DIR); \ 11 /bin/ls -d * > $(BUILD_DIR)/series || \ 12 touch $(BUILD_DIR)/series ) 13 for f in `cat $(BUILD_DIR)/series`; do \ 14 cp -af $(CUST_DIR)/$$f $(TARGET_DIR)/$$f; \ 15 done 16 rm -f $(BUILD_DIR)/series 17 touch $@ Line 14 doesn't work right if there are any pre-existing directories in the target directory. In my case it ends up doing: cp -af package/custom/source/lib output/target/lib That results in files ending up in /lib/lib instead of /lib Shouldn't line 14 specify the bare target_dir (and not specify a target filename)? Copy a file will still work the same (since the destination is known to be a directory), and now copying a directory will work when it didn't used to: 14 cp -af $(CUST_DIR)/$$f $(TARGET_DIR)/; \