lvm: fix installation to target dir

The installation to the target directory was broken for two reasons:

 * Due to how the lvm2.mk file was written, for each file listed in
   $(LVM2_TARGET_SBINS) and $(LVM2_TARGET_DMSETUP_SBINS), it was
   reinstalling all the files listed in those variables. When a target
   contains several elements, there's no need to make a loop to handle
   each of the elements: the rule will get executed as many times as
   they are elements in the target.

 * For some odd reason, lvm2 build system installs executable with 555
   and libraries with 444. Therefore, once copied to the target
   directory, these executables and libraries cannot be
   overwritten... for example by a later execution of Buildroot. We
   fix this up by changing the permissions of the binaries and
   libraries installed by lvm2 to saner values (755 and 644)

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Thomas Petazzoni 2009-08-02 01:10:14 +02:00
parent 44663da45b
commit b062925376

View File

@ -81,17 +81,19 @@ $(LVM2_DIR)/.configured: $(LVM2_DIR)/.unpacked
$(LVM2_DIR)/.built: $(LVM2_DIR)/.configured
$(MAKE1) CC=$(TARGET_CC) RANLIB=$(TARGET_RANLIB) AR=$(TARGET_AR) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR)
$(MAKE1) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR) install
# Fixup write permissions so that the files can be overwritten
# several times in the $(TARGET_DIR)
chmod 755 $(STAGING_DIR)/sbin/lvm
chmod 755 $(STAGING_DIR)/sbin/dmsetup
chmod 644 $(STAGING_DIR)/lib/$(LVM2_LIB)
touch $(LVM2_DIR)/.built
$(LVM2_TARGET_SBINS): $(LVM2_DIR)/.built
for binary in $(LVM2_SBIN); do echo $$binary; cp -a $(STAGING_DIR)/sbin/$$binary $(TARGET_DIR)/sbin; done
$(LVM2_TARGET_DMSETUP_SBINS): $(LVM2_DIR)/.built
for binary in $(LVM2_DMSETUP_SBIN); do echo $$binary; cp -a $(STAGING_DIR)/sbin/$$binary $(TARGET_DIR)/sbin; done
$(LVM2_TARGET_SBINS) $(LVM2_TARGET_DMSETUP_SBINS): $(LVM2_DIR)/.built
cp -a $(STAGING_DIR)/sbin/$(notdir $@) $@
$(LVM2_TARGET_LIBS): $(LVM2_DIR)/.built
for lib in $(LVM2_LIB); do echo $$lib; cp -a $(STAGING_DIR)/lib/$$lib $(TARGET_DIR)/lib; done
cp -a $(STAGING_DIR)/lib/$(notdir $@) $@
ifeq ($(BR2_PACKAGE_LVM2_DMSETUP_ONLY),y)