On Tue, Nov 3, 2009 at 3:13 AM, Ray Rashif <[email protected]> wrote: > 2009/11/3 Eric Bélanger <[email protected]> > >> On Tue, Nov 3, 2009 at 12:59 AM, Allan McRae <[email protected]> wrote: >> > Dan McGee wrote: >> >> >> >> On Mon, Nov 2, 2009 at 11:00 PM, Eric Bélanger <[email protected] >> > >> >> wrote: >> >> >> >>> >> >>> When DESTDIR is used, symlinks to the packages will be put in the build >> >>> directory. This combines the convenience of a global package cache >> with the >> >>> ease of having a package (i.e. a symlink) in the build directory for >> testing >> >>> and installation purpose. >> >>> >> >> >> >> This seems really reasonable. It gets a +1 from me for the idea; I >> >> didn't test the code or anything though. >> >> >> >> >> >>> >> >>> Signed-off-by: Eric Bélanger <[email protected]> >> >>> --- >> >>> scripts/makepkg.sh.in | 6 ++++++ >> >>> 1 files changed, 6 insertions(+), 0 deletions(-) >> >>> >> >>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in >> >>> index 92b0454..dc9124b 100644 >> >>> --- a/scripts/makepkg.sh.in >> >>> +++ b/scripts/makepkg.sh.in >> >>> @@ -1000,6 +1000,8 @@ create_package() { >> >>> "$PKGEXT" ; EXT=$PKGEXT ;; >> >>> esac >> >>> local >> >>> pkg_file="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${EXT}" >> >>> + local >> >>> >> pkglinks_name="${startdir}/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}" >> >>> + local >> >>> >> pkglinks_target="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}" >> >>> >> >> >> >> Since we repeat the same >> >> "${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}" part three >> >> times, we should really pull that into a local variable and then set >> >> the three others as necessary. >> >> >> >> Actually it was repeated twice (EXT vs. PKGEXT). I removed one of my >> new variables. See new patch (inline and attached). >> >> > >> > On the gpg branch, there is (going to be...) a patch creating "tar_file" >> > (=current pkg_file) and pkg_file (pkglinks_target here). I think we can >> > get away with just those two varabiles... see below. >> > >> >> >> >>> >> >>> local ret=0 >> >>> >> >>> @@ -1018,6 +1020,10 @@ create_package() { >> >>> ret=$? >> >>> fi >> >>> >> >>> + if [ $ret -eq 0 ]; then >> >>> + [ ! -f "${pkglinks_name}" ] && ln -s >> "${pkglinks_target}" >> >>> "${pkglinks_name}" && ret=$? >> >>> >> >> >> >> Will this work with err traps? I thought you need to be explicit with >> >> the if; then; fi blocks. >> >> >> >> I don't really know how err traps works but I've made the if statement >> explicit as it seemed that's what you prefered. >> >> > >> > How about testing if $PKGDEST is the same as $startdir and then make the >> > symlink using >> > ln -s ${pkg_file} ${pkgfile/$PKGDEST/$startdir/} >> > >> >> Thanks. I did that in my new patch. I also added the -f option to ln. >> So if you switch to undefined PKGDEST to defined PKGDEST, the package >> in the build directory will be overwritten by the symlink instead of >> having the ln error out. >> >> Eric >> >> ======================= >> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in >> index 92b0454..e2b28c1 100644 >> --- a/scripts/makepkg.sh.in >> +++ b/scripts/makepkg.sh.in >> @@ -1000,6 +1000,7 @@ create_package() { >> "$PKGEXT" ; EXT=$PKGEXT ;; >> esac >> local >> pkg_file="$PKGDEST/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${EXT}" >> + local >> pkglinks_target="${startdir}/${nameofpkg}-${pkgver}-${pkgrel}-${PKGARCH}${PKGEXT}" >> >> local ret=0 >> >> @@ -1018,6 +1019,13 @@ create_package() { >> ret=$? >> fi >> >> + if [ $ret -eq 0 ]; then >> + if [ "$PKGDEST" != "${startdir}" ]; then >> + ln -sf "${pkg_file/$EXT/$PKGEXT}" >> "$pkglinks_target" >> + fi >> + ret=$? >> + fi >> + >> if [ $ret -ne 0 ]; then >> error "$(gettext "Failed to create package file.")" >> exit 1 # TODO: error code >> -- >> 1.6.5.2 >> >> >> >> > This is really convenient, but would it not be good if the symlink(s) are > removed upon --clean? > >
Sure, that can be easily done.
