On Sat, Oct 17, 2009 at 2:19 PM, Cedric Staniewski <[email protected]> wrote: > Xavier wrote: >> On Sat, Oct 17, 2009 at 7:42 PM, Cedric Staniewski <[email protected]> wrote: >>> When using the --allsource option, it was assumed that remote source >>> files reside in SRCDEST which is not necessarily always the case. >>> >> >> I am not familiar with the code, but why aren't all source files in srcdest ? >> I thought and assumed they were. > > If SRCDEST is defined in makepkg.conf, there are actually two possible > locations where (remote) source files can be saved to. They can either reside > in the configured SRCDEST (which is where makepkg puts downloaded sources) or > in the same directory as the PKGBUILD, and moreover, the file in the PKGBUILD > directory is favored over the one in SRCDEST. > > Several functions (check_checksums, extract_sources and probably more) use > something like the following to get the correct file name: > >> if [ ! -f "$file" ] ; then >> if [ ! -f "$SRCDEST/$file" ] ; then >> echo "$(gettext "NOT FOUND")" >> >&2 >> errors=1 >> found=0 >> else >> file="$SRCDEST/$file" >> fi >> fi > > This bug can be easily confirmed by running makepkg --allsource in a PKGBUILD > directory (obviously the PKGBUILD should use remote sources), extract the > generated source package, remove the sources of this package from SRCDEST if > defined in makepkg.conf, change into the extracted directory and run makepkg > --allsource (-f) again.
So rather than adding more of this code elsewhere, can we maybe factor some of this out into a function? It would also be better to use $startdir/$file to prevent relative path issues from biting us. I'm envisioning some sort of function that takes any item from the source array (url or filename) and returns a absolute file path or something if the file isn't in either of the two places. Does this seem plausible? -Dan
