tpgww@xxxxxxxxxxx wrote: > On Thu, 14 May 2009 09:20:07 +0200 > Josef Reidinger <jreidinger@xxxxxxx> wrote: > >> tpgww@xxxxxxxxxxx wrote: >>> On Wed, 13 May 2009 12:53:32 +0200 >>> josef reidinger <jreidinger@xxxxxxx> wrote: >>> >>>> tpgww@xxxxxxxxxxx napsal(a): >>>>> On Tue, 12 May 2009 15:32:30 +0200 >>>>> Josef Reidinger <jreidinger@xxxxxxx> wrote: >>>>> >>>>>> I attached patch with allows easier packaging of emelfm2. It is needed >>>>>> correct lib directory on 64-bit machines for some distros and also >>>>>> installation to chroot. >>>>> Josef, >>>>> >>>>> LIB_DIR is already supported, as you've proposed, in svn. >>>>> >>>>> You can change the PREFIX variable for the install phase, doesn't have >>>>> the same effect as your DESTDIR ? >>>> I think that this affect finding plugins as PREFIX is constant in >>>> build.h which is used in code. So after long prefix is plugin finded at >>>> bad place (build is in chroot but target is installed without chroot >>>> prefix). At least it show warning that in code is hardcoded chroot path. >>>> I can test it if you need test case. >>> PREFIX specified in build.h has no effect on installation, or vice-versa. >>> >>> In the patch you sent, every instance of $(DESTDIR) can be handled by a >>> change of PREFIX (in effect, set PREFIX = $(DESTDIR)$(PREFIX)) for >>> installation, like: >>> make .... PREFIX=<whatever> .... >>> make install .... PREFIX=DESTDIR<whatever> .... >>> >>> So I'm not quite sure what you're trying to work around. Please describe a >>> test case, as you suggested. >> Yes, no affect on installation but in runtime it is problem. We build >> packages in chroot and separate dir to catch all file creation. So >> package is installed to directory /tmp/build/emelfm2-.../ which is >> simulated root for package and can easy track any files which is created >> and which own this package. But emelfm2 store some constants about >> plugins path PLUGINS_DIR which also contain PREFIX...and after build and >> installation to target system is plugin loaded from location >> /tmp/build/emelfm2-.../usr/lib/emelfm2/ which of course doesn't exist on >> target system. So DESTDIR is constant which is used only to install to >> build root, which is not included during runtime. I hope I describe it. >> As test case you can has chroot enviroment and try install to it. If you >> chroot into it and try run emelfm2 it doesn't find plugins dir. > > Joseph, different build- and install- prefixes are used for every rpm I've > ever built. For example, make with PREFIX /usr, and install with PREFIX > /usr/src/rpm/tmp/emelfm2-buildroot/usr. This seems to be essentially the same > as you've described. There's never been any problem with the plugins being > found or loaded. > > There must be something about your chroot-build process that I'm not seeing. > Even if you chroot to something like /tmp/build/emelfm2-build before make > etc, there should be no impact on paths hard-coded during compilation. Those > paths are just derived strings, not related to the layout of the filesystem. > Installation (to anywhere) doesn't change those strings. I think that > incorrect paths can only get into the code if you 'make PREFIX=wrong'! If you > don't ever need to worry about /tmp/build/emelfm2-build prefix because of a > chroot, probably you'd just 'make PREFIX=/usr other args...' then 'make > install PREFIX=/usr'. > > In any event, I still can't figure out what net difference comes from > applying a DESTDIR variable. Although arguably it might be a bit easier to > understand the Makefile process, that way. > > Staying with plugins as an example, Makefile currently has > > install -m 755 $$file $(PLUGINS_DIR); > > where PLUGIN_DIR defaults to $(LIB_DIR)/$(TARGET)/plugins > which in turn defaults to $(PREFIX)/lib/emelfm2/plugins > and then to /usr/local/lib/emelfm2/plugins > > For the purposes of this discussion, assume no chroot or change to these > defaults for building, but a change during installation: > > make install PREFIX=/tmp/build/emelfm2-build/usr/local > > So we get > > install -m 755 $$file /tmp/build/emelfm2-build/usr/local/lib/emelfm2/plugins > > If instead, Makefile had your patch, hence > > install -m 755 $$file $(DESTDIR)$(PLUGINS_DIR); > > and we used > > make install DESTDIR=/tmp/build/emelfm2-build > > The result is the same: > > install -m 755 $$file /tmp/build/emelfm2-build/usr/local/lib/emelfm2/plugins > > What am I missing ? > > Regards > Tom > > at src/e2_main.c:680 is Plugin *p = e2_plugins_open1 (PLUGINS_DIR G_DIR_SEPARATOR_S UPGRADE_PNAME); PLUGINS_DIR is from build.h @echo "#define PLUGINS_DIR \"$(PLUGINS_DIR)\"" >> $(BUILD_FILE) So if I understand code then plugin is open at /tmp/build/emelfm2-build/usr/local/lib/emelfm2/plugins during execution as this constant is static. I has been warned by rpmling which find build path hardcoded to code. So exist two options...this line is not used or it somehow is smarted then I think. -- Users can unsubscribe from the list by sending email to emelfm2-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field or by logging into the web interface.