diff options
Diffstat (limited to 'packages')
15 files changed, 1316 insertions, 100 deletions
diff --git a/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad b/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad index 90791c65f8..dd67df8a5b 100644 --- a/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad +++ b/packages/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/defconfig-simpad @@ -102,7 +102,6 @@ CONFIG_ARCH_SA1100=y # CONFIG_SA1100_SHANNON is not set # CONFIG_SA1100_SHERMAN is not set CONFIG_SA1100_SIMPAD=y -# CONFIG_SA1100_SIMPAD_SINUSPAD is not set # CONFIG_SA1100_SIMPUTER is not set # CONFIG_SA1100_PFS168 is not set # CONFIG_SA1100_VICTOR is not set @@ -304,10 +303,6 @@ CONFIG_MTD_SA1100=y # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set -CONFIG_MTD_MTDRAM=y -CONFIG_MTDRAM_TOTAL_SIZE=32768 -CONFIG_MTDRAM_ERASE_SIZE=1 -CONFIG_MTDRAM_ABS_POS=C2000000 # CONFIG_MTD_BLKMTD is not set # @@ -332,6 +327,7 @@ CONFIG_MTDRAM_ABS_POS=C2000000 # # Block devices # +CONFIG_BLK_DEV_MMC=m # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set diff --git a/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad b/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad index 88d334a6fe..ebeab96e23 100644 --- a/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad +++ b/packages/linux/opensimpad-2.4.27-vrs1-pxa1-jpm1/defconfig-simpad @@ -102,7 +102,6 @@ CONFIG_ARCH_SA1100=y # CONFIG_SA1100_SHANNON is not set # CONFIG_SA1100_SHERMAN is not set CONFIG_SA1100_SIMPAD=y -# CONFIG_SA1100_SIMPAD_SINUSPAD is not set # CONFIG_SA1100_SIMPUTER is not set # CONFIG_SA1100_PFS168 is not set # CONFIG_SA1100_VICTOR is not set @@ -305,10 +304,6 @@ CONFIG_MTD_SA1100=y # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set -CONFIG_MTD_MTDRAM=y -CONFIG_MTDRAM_TOTAL_SIZE=32768 -CONFIG_MTDRAM_ERASE_SIZE=1 -CONFIG_MTDRAM_ABS_POS=C2000000 # CONFIG_MTD_BLKMTD is not set # @@ -333,6 +328,7 @@ CONFIG_MTDRAM_ABS_POS=C2000000 # # Block devices # +CONFIG_BLK_DEV_MMC=m # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set diff --git a/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb b/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb index fb12c70b59..5bd4c85483 100644 --- a/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb +++ b/packages/linux/opensimpad-64+0_2.4.27-vrs1-pxa1-jpm1.bb @@ -1,5 +1,11 @@ +# to use another configuration, duplicate this file, change the sizes, +# change the filename accordingly, and add the followin line to local.conf: +# PREFERRED_PROVIDER_virtual/kernel_kernel24 = "opensimpad-64+0" + SECTION = "kernel" include opensimpad_${PV}.bb +# fraction of the memory (in Mb) used for RAM SIMPAD_MEM = "64" +# fraction of the memory (in Mb) used as a ramdisk SIMPAD_RD = "0" diff --git a/packages/linux/opensimpad/mmc-spi.patch b/packages/linux/opensimpad/mmc-spi.patch new file mode 100644 index 0000000000..1841b45fbd --- /dev/null +++ b/packages/linux/opensimpad/mmc-spi.patch @@ -0,0 +1,885 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- /dev/null ++++ linux-2.4.27/drivers/block/mmc.c +@@ -0,0 +1,857 @@ ++/* ++ * Copyright (c) Clément Ballabriga, 2005 - GPL ++ * Copyright (c) Guylhem Aznar, 2005 - GPL ++ * ++ * Please check http://externe.net/zaurus/simpad-bluetooth reference design first. ++ * ++ * Based on Madsuk/Rohde work on a MMC driver for the WRT54G. ++ * ++ * This is an ugly hack of a driver. I am surprised if it ever works! ++ * So please use a real driver or contribute one to the 2.4/2.6 mmc framework ++ */ ++ ++#include <linux/stddef.h> ++#include <linux/delay.h> ++#include <linux/timer.h> ++#include <linux/module.h> ++#include <linux/mm.h> ++#include <linux/init.h> ++#include <linux/fs.h> ++#include <linux/blkpg.h> ++#include <linux/hdreg.h> ++#include <linux/major.h> ++ ++#include <asm/hardware.h> ++#include <asm/uaccess.h> ++#include <asm/io.h> ++ ++/* ++ * ******************************************************************* ++ * ++ * This is the only configurable part. ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++// #define DEBUG 1 ++ ++#define DEVICE_NAME "mmc" ++#define DEVICE_NR(device) (MINOR(device)) ++#define DEVICE_ON(device) ++#define DEVICE_OFF(device) ++#define MAJOR_NR 121 ++ ++/* Let that include where it is or compilation fails on INIT_REQUEST/CURRENT */ ++ ++#include <linux/blk.h> ++ ++MODULE_AUTHOR("Guylhem Aznar <mmc-driver @externe.net>"); ++MODULE_DESCRIPTION("Driver for MMC/SD-Cards in SPI mode by GPIO"); ++MODULE_SUPPORTED_DEVICE("Simpad"); ++MODULE_LICENSE("GPL"); ++ ++/* Registers should be architecture independant - but it's not ! */ ++ ++#define MAP_START 0x90040000 ++#define MAP_SIZE 0x00001000 ++ ++#define MY_GPLR 0 ++#define MY_GPDR 1 ++#define MY_GPSR 2 ++#define MY_GPCR 3 ++#define MY_GRER 4 ++#define MY_GFER 5 ++#define MY_GEDR 6 ++#define MY_GAFR 7 ++ ++/* ++ * If you are using different GPIOs in your hardware hack, you must ++ * first make sure they are unused for other functions and then ++ * configure them here. ++ * ++ * On the simpad I use spare pins from the UART1 (internal serial port): ++ * - DCD (in) : GPIO 23 : DO ++ * - DTR (out) : GPIO 07 : CS ++ * - RI (in) : GPIO 19 : CLK ++ * - DSR (in) : GPIO 06 : DI ++ * ++ * Don't worry about in/out original function - the GPIOs will be ++ * reprogrammed. ++ */ ++ ++#define GPIO_SD_DO 23 ++#define GPIO_SD_CS 7 ++#define GPIO_SD_CLK 19 ++#define GPIO_SD_DI 6 ++ ++/* ++ * ******************************************************************* ++ * ++ * Do not change anything below ! ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++ ++/* GPIO states */ ++#define LOW 0 ++#define HIGH 1 ++ ++#define INPUT 0 ++#define OUTPUT 1 ++ ++#define PRESENT 1 ++#define ABSENT 0 ++ ++typedef unsigned int uint32; ++typedef unsigned long u32_t; ++typedef unsigned short u16_t; ++typedef unsigned char u8_t; ++ ++/* we have only one device */ ++static int hd_sizes[1 << 6]; ++static int hd_blocksizes[1 << 6]; ++static int hd_hardsectsizes[1 << 6]; ++static int hd_maxsect[1 << 6]; ++static struct hd_struct hd[1 << 6]; ++ ++static struct timer_list mmc_timer; ++ ++/* start with no card */ ++static int mmc_media_detect = 0; ++static int mmc_media_changed = 1; ++ ++extern struct gendisk hd_gendisk; ++ ++/* Use only one global device */ ++typedef struct gpio_s gpio_t; ++struct gpio_s { ++ volatile u32_t *base; ++}; ++ ++static gpio_t gp = { ++ (void *) io_p2v(MAP_START) ++}; ++ ++/* ++ * ******************************************************************* ++ * ++ * Begin GPIO hardware access functions. ++ * ++ * ******************************************************************* ++ * ++ */ ++ ++gpio_t *gpio_open(void) ++{ ++ static gpio_t tmp; ++ tmp.base = (void *) io_p2v(MAP_START); ++ return (&tmp); ++} ++ ++void gpio_setdir(gpio_t * g, int num, int dir) ++{ ++ if (dir == 1) { ++ g->base[MY_GPDR] |= (1 << num); ++ } else { ++ g->base[MY_GPDR] &= ~(1 << num); ++ ++ } ++} ++ ++void gpio_setalt(gpio_t * g, int num, int alt) ++{ ++ if (alt == 1) { ++ g->base[MY_GAFR] |= (1 << num); ++ } else { ++ g->base[MY_GAFR] &= ~(1 << num); ++ } ++} ++ ++int gpio_getdir(gpio_t * g, int num) ++{ ++ return ((g->base[MY_GPDR] & (1 << num)) ? 1 : 0); ++} ++ ++int gpio_getalt(gpio_t * g, int num) ++{ ++ return ((g->base[MY_GAFR] & (1 << num)) ? 1 : 0); ++} ++ ++static int gpio_read(gpio_t * g, int num) ++{ ++ int what; ++ ++ what=(g->base[MY_GPLR] & (1 << num)) ? 1 : 0; ++ ++#ifdef DEBUG ++ if (num == GPIO_SD_DO) { ++ printk ("GPIO_SD_DO read: %u\n", what); ++ } ++#endif ++ return (what); ++} ++ ++static int gpio_write(gpio_t * g, int num, int val) ++{ ++#ifdef DEBUG ++ int check; ++#endif ++ ++ if (val == 1) { ++ g->base[MY_GPSR] = 1 << num; ++ } else { ++ g->base[MY_GPCR] = 1 << num; ++ } ++#ifdef DEBUG ++ check=gpio_read(g,num); ++ if (check != val) ++ { ++ printk ("Error while write to %d: found %d after writing %d\n",num, check, val); ++ return (1); ++ } ++ else return(0); ++#endif ++ ++} ++ ++/* ++ * ******************************************************************* ++ * ++ * Begin SPI hardware access functions. ++ * ++ * ******************************************************************* ++ * ++ */ ++static int mmc_spi_media_detect(void) ++{ ++// FIXME: add card detection/test by SPI ++ ++ return 1; ++} ++ ++static int mmc_spi_hardware_init(void) ++{ ++ /*unsigned char gpio_outen;*/ ++ ++ printk("mmc: GPIO init\n"); ++ ++ /* Now global ++ * gp = gpio_open(); */ ++ ++ /* Cut existing functions */ ++ gpio_setalt(&gp, GPIO_SD_CLK, 0); ++ gpio_setalt(&gp, GPIO_SD_DI, 0); ++ gpio_setalt(&gp, GPIO_SD_DO, 0); ++ gpio_setalt(&gp, GPIO_SD_CS, 0); ++ ++ /* Remap directions */ ++ gpio_setdir(&gp, GPIO_SD_CLK, OUTPUT); ++ gpio_setdir(&gp, GPIO_SD_DI, OUTPUT); ++ gpio_setdir(&gp, GPIO_SD_DO, INPUT); ++ gpio_setdir(&gp, GPIO_SD_CS, OUTPUT); ++ ++ printk("mmc: initialising MMC\n"); ++ ++ /* Start */ ++ gpio_write(&gp, GPIO_SD_CLK, LOW); ++ gpio_write(&gp, GPIO_SD_DI, LOW); ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ return 0; ++} ++ ++/* return what has been read, write the parameter */ ++ ++static unsigned char mmc_spi_readwrite(unsigned char data_out) ++{ ++ int i; ++ unsigned char result = 0/*, tmp_data = 0*/; ++ ++ for (i = 0; i < 8; i++) { ++ if (data_out & (0x01 << (7 - i))) ++ gpio_write(&gp, GPIO_SD_DI, HIGH); ++ else ++ gpio_write(&gp, GPIO_SD_DI, LOW); ++ ++ gpio_write(&gp, GPIO_SD_CLK, HIGH); ++ ++ result <<= 1; ++ ++ if (gpio_read(&gp, GPIO_SD_DO) == 1) ++ result |= 1; ++ ++ gpio_write(&gp, GPIO_SD_CLK, LOW); ++ } ++ ++ return (result); ++} ++ ++static int mmc_spi_card_init(void) ++{ ++ unsigned char result = 0; ++ short i, j; ++ unsigned long flags; ++ ++ save_flags(flags); ++ cli(); ++ ++ printk("GPIO_SD_CS dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_CS), gpio_getalt(&gp, GPIO_SD_CS)); ++ printk("GPIO_SD_DI dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_DI), gpio_getalt(&gp, GPIO_SD_DI)); ++ printk("GPIO_SD_DO dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_DO), gpio_getalt(&gp, GPIO_SD_DO)); ++ printk("GPIO_SD_CS dir: %u alt: %u\n", gpio_getdir(&gp, GPIO_SD_CLK), gpio_getalt(&gp, GPIO_SD_CLK)); ++ ++ printk("mmc: card init 1/2\n"); ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ for (i = 0; i < 20; i++) ++ mmc_spi_readwrite(0xff); ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ ++ mmc_spi_readwrite(0x40); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0x95); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x01) ++ break; ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result != 0x01) { ++ printk("mmc: card init %d error\n", result); ++ restore_flags(flags); ++ return (1); ++ } ++ ++ printk("mmc: card init 2/2\n"); ++ for (j = 0; j < 10000; j++) { ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ ++ mmc_spi_readwrite(0x41); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result == 0x00) { ++ restore_flags(flags); ++ printk("mmc: card init 3/3\n"); ++ return (0); ++ } ++ } ++ restore_flags(flags); ++ ++ return (2); ++} ++ ++ ++static int mmc_spi_card_config(void) ++{ ++ unsigned char result = 0; ++ short i; ++ unsigned char csd[32]; ++ unsigned int c_size; ++ unsigned int c_size_mult; ++ unsigned int mult; ++ unsigned int read_bl_len; ++ unsigned int blocknr = 0; ++ unsigned int block_len = 0; ++ unsigned int size = 0; ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x49); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0x00); ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xfe) ++ break; ++ } ++ if (result != 0xfe) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (2); ++ } ++ for (i = 0; i < 16; i++) { ++ result = mmc_spi_readwrite(0xff); ++ csd[i] = result; ++ } ++ for (i = 0; i < 2; i++) { ++ result = mmc_spi_readwrite(0xff); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ return (3); ++ ++ c_size = csd[8] + csd[7] * 256 + (csd[6] & 0x03) * 256 * 256; ++ c_size >>= 6; ++ c_size_mult = csd[10] + (csd[9] & 0x03) * 256; ++ c_size_mult >>= 7; ++ read_bl_len = csd[5] & 0x0f; ++ mult = 1; ++ mult <<= c_size_mult + 2; ++ blocknr = (c_size + 1) * mult; ++ block_len = 1; ++ block_len <<= read_bl_len; ++ size = block_len * blocknr; ++ size >>= 10; ++ ++ for (i = 0; i < (1 << 6); i++) { ++ hd_blocksizes[i] = 1024; ++ hd_hardsectsizes[i] = block_len; ++ hd_maxsect[i] = 256; ++ } ++ hd_sizes[0] = size; ++ hd[0].nr_sects = blocknr; ++ ++ ++ printk("Size = %d, hardsectsize = %d, sectors = %d\n", ++ size, block_len, blocknr); ++ ++ return 0; ++} ++ ++ ++/* ++ * ******************************************************************* ++ * ++ * End of SPI hardware access functions. ++ * ++ * ******************************************************************* ++ */ ++ ++ ++static int mmc_write_block(unsigned int dest_addr, unsigned char *data) ++{ ++ unsigned int address; ++ unsigned char result = 0; ++ unsigned char ab0, ab1, ab2, ab3; ++ int i; ++ ++ address = dest_addr; ++ ++ ab3 = 0xff & (address >> 24); ++ ab2 = 0xff & (address >> 16); ++ ab1 = 0xff & (address >> 8); ++ ab0 = 0xff & address; ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x58); ++ mmc_spi_readwrite(ab3); /* msb */ ++ mmc_spi_readwrite(ab2); ++ mmc_spi_readwrite(ab1); ++ mmc_spi_readwrite(ab0); /* lsb */ ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ ++ mmc_spi_readwrite(0xfe); ++ for (i = 0; i < 512; i++) ++ mmc_spi_readwrite(data[i]); ++ for (i = 0; i < 2; i++) ++ mmc_spi_readwrite(0xff); ++ ++ for (i = 0; i < 1000000; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xff) ++ break; ++ } ++ if (result != 0xff) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (3); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (0); ++} ++ ++static int mmc_read_block(unsigned char *data, unsigned int src_addr) ++{ ++ unsigned int address; ++ unsigned char result = 0; ++ unsigned char ab0, ab1, ab2, ab3; ++ int i; ++ ++ address = src_addr; ++ ++ ab3 = 0xff & (address >> 24); ++ ab2 = 0xff & (address >> 16); ++ ab1 = 0xff & (address >> 8); ++ ab0 = 0xff & address; ++ ++ gpio_write(&gp, GPIO_SD_CS, LOW); ++ for (i = 0; i < 4; i++) ++ mmc_spi_readwrite(0xff); ++ mmc_spi_readwrite(0x51); ++ mmc_spi_readwrite(ab3); /* msb */ ++ mmc_spi_readwrite(ab2); ++ mmc_spi_readwrite(ab1); ++ mmc_spi_readwrite(ab0); /* lsb */ ++ ++ mmc_spi_readwrite(0xff); ++ for (i = 0; i < 8; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0x00) ++ break; ++ } ++ if (result != 0x00) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (1); ++ } ++ for (i = 0; i < 100000; i++) { ++ result = mmc_spi_readwrite(0xff); ++ if (result == 0xfe) ++ break; ++ } ++ if (result != 0xfe) { ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ return (2); ++ } ++ for (i = 0; i < 512; i++) { ++ result = mmc_spi_readwrite(0xff); ++ data[i] = result; ++ } ++ for (i = 0; i < 2; i++) { ++ result = mmc_spi_readwrite(0xff); ++ } ++ gpio_write(&gp, GPIO_SD_CS, HIGH); ++ mmc_spi_readwrite(0xff); ++ ++ return (0); ++} ++ ++static void mmc_request(request_queue_t * q) ++{ ++ unsigned int mmc_address; ++ unsigned char *buffer_address; ++ int nr_sectors; ++ int i; ++ int cmd; ++ int result, code; ++ ++ (void) q; ++ while (1) { ++ code = 1; // Default is success ++ INIT_REQUEST; ++ mmc_address = ++ (CURRENT->sector + ++ hd[MINOR(CURRENT->rq_dev)].start_sect) * hd_hardsectsizes[0]; ++ buffer_address = CURRENT->buffer; ++ nr_sectors = CURRENT->current_nr_sectors; ++ cmd = CURRENT->cmd; ++ if (((CURRENT->sector + CURRENT->current_nr_sectors + ++ hd[MINOR(CURRENT->rq_dev)].start_sect) > hd[0].nr_sects) ++ || (mmc_media_detect == 0)) { ++ code = 0; ++ } else if (cmd == READ) { ++ spin_unlock_irq(&io_request_lock); ++ for (i = 0; i < nr_sectors; i++) { ++ result = mmc_read_block(buffer_address, mmc_address); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_read_block\n", result); ++ code = 0; ++ break; ++ } else { ++ mmc_address += hd_hardsectsizes[0]; ++ buffer_address += hd_hardsectsizes[0]; ++ } ++ } ++ spin_lock_irq(&io_request_lock); ++ } else if (cmd == WRITE) { ++ spin_unlock_irq(&io_request_lock); ++ for (i = 0; i < nr_sectors; i++) { ++ result = mmc_write_block(mmc_address, buffer_address); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_write_block\n", result); ++ code = 0; ++ break; ++ } else { ++ mmc_address += hd_hardsectsizes[0]; ++ buffer_address += hd_hardsectsizes[0]; ++ } ++ } ++ spin_lock_irq(&io_request_lock); ++ } else { ++ code = 0; ++ } ++ end_request(code); ++ } ++} ++ ++ ++static int mmc_open(struct inode *inode, struct file *filp) ++{ ++ /*int device;*/ ++ (void) filp; ++ mmc_media_detect = mmc_spi_media_detect(); ++ ++ if (mmc_media_detect == 0) ++ return -ENODEV; ++ ++#if defined(MODULE) ++ MOD_INC_USE_COUNT; ++#endif ++ return 0; ++} ++ ++static int mmc_release(struct inode *inode, struct file *filp) ++{ ++ (void) filp; ++ fsync_dev(inode->i_rdev); ++ invalidate_buffers(inode->i_rdev); ++ ++#if defined(MODULE) ++ MOD_DEC_USE_COUNT; ++#endif ++ return 0; ++} ++ ++static int mmc_revalidate(kdev_t dev) ++{ ++ int target, max_p, start, i; ++ ++ mmc_media_detect = mmc_spi_media_detect(); ++ ++ if (mmc_media_detect == 0) ++ return -ENODEV; ++ ++ target = DEVICE_NR(dev); ++ ++ max_p = hd_gendisk.max_p; ++ start = target << 6; ++ for (i = max_p - 1; i >= 0; i--) { ++ int minor = start + i; ++ invalidate_device(MKDEV(MAJOR_NR, minor), 1); ++ hd_gendisk.part[minor].start_sect = 0; ++ hd_gendisk.part[minor].nr_sects = 0; ++ } ++ ++ grok_partitions(&hd_gendisk, target, 1 << 6, hd_sizes[0] * 2); ++ ++ return 0; ++} ++ ++static int mmc_ioctl(struct inode *inode, struct file *filp, ++ unsigned int cmd, unsigned long arg) ++{ ++ if (!inode || !inode->i_rdev) ++ return -EINVAL; ++ ++ switch (cmd) { ++ case BLKGETSIZE: ++ return put_user(hd[MINOR(inode->i_rdev)].nr_sects, ++ (unsigned long *) arg); ++ case BLKGETSIZE64: ++ return put_user((u64) hd[MINOR(inode->i_rdev)]. ++ nr_sects, (u64 *) arg); ++ case BLKRRPART: ++ if (!capable(CAP_SYS_ADMIN)) ++ return -EACCES; ++ ++ return mmc_revalidate(inode->i_rdev); ++ case HDIO_GETGEO: ++ { ++ struct hd_geometry *loc, g; ++ loc = (struct hd_geometry *) arg; ++ if (!loc) ++ return -EINVAL; ++ g.heads = 4; ++ g.sectors = 16; ++ g.cylinders = hd[0].nr_sects / (4 * 16); ++ g.start = hd[MINOR(inode->i_rdev)].start_sect; ++ return copy_to_user(loc, &g, sizeof(g)) ? -EFAULT : 0; ++ } ++ default: ++ return blk_ioctl(inode->i_rdev, cmd, arg); ++ } ++} ++ ++ ++/* ++static int mmc_check_media_change(kdev_t dev) ++{ ++ (void) dev; ++ if (mmc_media_changed == 1) { ++ mmc_media_changed = 0; ++ return 1; ++ } else ++ return 0; ++} ++*/ ++ ++static struct block_device_operations mmc_bdops = { ++ open:mmc_open, ++ release:mmc_release, ++ ioctl:mmc_ioctl, ++/* FIXME: add media change support ++ * check_media_change: mmc_check_media_change, ++ * revalidate: mmc_revalidate, ++ */ ++}; ++ ++static struct gendisk hd_gendisk = { ++ major:MAJOR_NR, ++ major_name:DEVICE_NAME, ++ minor_shift:6, ++ max_p:1 << 6, ++ part:hd, ++ sizes:hd_sizes, ++ fops:&mmc_bdops, ++}; ++ ++static int mmc_init(void) ++{ ++ int result; ++ ++ result = mmc_spi_hardware_init(); ++ ++ if (result != 0) { ++ printk("mmc: error %d in mmc_spi_hardware_init\n", result); ++ return -1; ++ } ++ ++ result = mmc_spi_card_init(); ++ if (result != 0) { ++ // Give it an extra shot ++ result = mmc_spi_card_init(); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_card_init\n", result); ++ return -1; ++ } ++ } ++ ++ memset(hd_sizes, 0, sizeof(hd_sizes)); ++ result = mmc_spi_card_config(); ++ if (result != 0) { ++ printk("mmc: error %d in mmc_card_config\n", result); ++ return -1; ++ } ++ ++ ++ blk_size[MAJOR_NR] = hd_sizes; ++ ++ memset(hd, 0, sizeof(hd)); ++ hd[0].nr_sects = hd_sizes[0] * 2; ++ ++ blksize_size[MAJOR_NR] = hd_blocksizes; ++ hardsect_size[MAJOR_NR] = hd_hardsectsizes; ++ max_sectors[MAJOR_NR] = hd_maxsect; ++ ++ hd_gendisk.nr_real = 1; ++ ++ register_disk(&hd_gendisk, MKDEV(MAJOR_NR, 0), 1 << 6, ++ &mmc_bdops, hd_sizes[0] * 2); ++ ++ return 0; ++} ++ ++static void mmc_exit(void) ++{ ++ blk_size[MAJOR_NR] = NULL; ++ blksize_size[MAJOR_NR] = NULL; ++ hardsect_size[MAJOR_NR] = NULL; ++ max_sectors[MAJOR_NR] = NULL; ++ hd[0].nr_sects = 0; ++} ++ ++static void mmc_check_media(void) ++{ ++ int old_state, new_state; ++ int result; ++ ++ old_state = mmc_media_detect; ++ new_state = mmc_spi_media_detect(); ++ ++ if (old_state != new_state) { ++ mmc_media_changed = 1; ++ if (new_state == PRESENT) { ++ result = mmc_init(); ++ if (result != 0) ++ printk("mmc: error %d in mmc_init\n", result); ++ } else { ++ mmc_exit(); ++ } ++ } ++ ++ /* del_timer(&mmc_timer); ++ mmc_timer.expires = jiffies + 10*HZ; ++ add_timer(&mmc_timer); */ ++} ++ ++static int __init mmc_driver_init(void) ++{ ++ int result; ++ ++ result = devfs_register_blkdev(MAJOR_NR, DEVICE_NAME, &mmc_bdops); ++ if (result < 0) { ++ printk(KERN_WARNING "mmc: can't get major %d\n", MAJOR_NR); ++ return result; ++ } ++ ++ blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), mmc_request); ++ ++ mmc_check_media(); ++ ++ /*init_timer(&mmc_timer); ++ mmc_timer.expires = jiffies + HZ; ++ mmc_timer.function = (void *)mmc_check_media; ++ add_timer(&mmc_timer); */ ++ ++ ++ read_ahead[MAJOR_NR] = 8; ++ add_gendisk(&hd_gendisk); ++ ++ ++ return 0; ++} ++ ++static void __exit mmc_driver_exit(void) ++{ ++ int i; ++ del_timer(&mmc_timer); ++ ++ for (i = 0; i < (1 << 6); i++) ++ fsync_dev(MKDEV(MAJOR_NR, i)); ++ ++ blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR)); ++ del_gendisk(&hd_gendisk); ++ devfs_unregister_blkdev(MAJOR_NR, DEVICE_NAME); ++ mmc_exit(); ++} ++ ++module_init(mmc_driver_init); ++module_exit(mmc_driver_exit); +--- linux-2.4.27/drivers/block/Config.in~mmc-spi ++++ linux-2.4.27/drivers/block/Config.in +@@ -4,6 +4,7 @@ + mainmenu_option next_comment + comment 'Block devices' + ++tristate 'MMC SPI driver' CONFIG_BLK_DEV_MMC + tristate 'Normal floppy disk support' CONFIG_BLK_DEV_FD + if [ "$CONFIG_AMIGA" = "y" ]; then + tristate 'Amiga floppy support' CONFIG_AMIGA_FLOPPY +--- linux-2.4.27/drivers/block/Makefile~mmc-spi ++++ linux-2.4.27/drivers/block/Makefile +@@ -15,6 +15,7 @@ + obj-y := ll_rw_blk.o blkpg.o genhd.o elevator.o + + obj-$(CONFIG_MAC_FLOPPY) += swim3.o ++obj-$(CONFIG_BLK_DEV_MMC) += mmc.o + obj-$(CONFIG_BLK_DEV_FD) += floppy.o + obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o + obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o diff --git a/packages/linux/opensimpad/support-128mb-flash.patch b/packages/linux/opensimpad/support-128mb-flash.patch deleted file mode 100644 index 2a6b1bd31d..0000000000 --- a/packages/linux/opensimpad/support-128mb-flash.patch +++ /dev/null @@ -1,25 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- linux-2.4.27/arch/arm/mach-sa1100/simpad.c~support-128mb-flash -+++ linux-2.4.27/arch/arm/mach-sa1100/simpad.c -@@ -83,11 +83,16 @@ - { - #ifdef CONFIG_SA1100_SIMPAD_SINUSPAD - SET_BANK( 0, 0xc0000000, 32*1024*1024 ); -+ mi->nr_banks = 1; - #else - SET_BANK( 0, 0xc0000000, 64*1024*1024 ); --#endif - mi->nr_banks = 1; -+#endif - -+#ifdef CONFIG_SA1100_SIMPAD_128M -+ SET_BANK( 1, 0xc8000000, 64*1024*1024 ); -+ mi->nr_banks = 2; -+#endif - setup_ramdisk( 1, 0, 0, 8192 ); - setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024 ); - } diff --git a/packages/linux/opensimpad/support-128mb-ram.patch b/packages/linux/opensimpad/support-128mb-ram.patch new file mode 100644 index 0000000000..f0cde06b57 --- /dev/null +++ b/packages/linux/opensimpad/support-128mb-ram.patch @@ -0,0 +1,35 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux-2.4.27/arch/arm/mach-sa1100/simpad.c~support-128mb-ram ++++ linux-2.4.27/arch/arm/mach-sa1100/simpad.c +@@ -83,11 +83,16 @@ + { + #ifdef CONFIG_SA1100_SIMPAD_SINUSPAD + SET_BANK( 0, 0xc0000000, 32*1024*1024 ); ++ mi->nr_banks = 1; + #else + SET_BANK( 0, 0xc0000000, 64*1024*1024 ); +-#endif + mi->nr_banks = 1; ++#endif + ++#ifdef CONFIG_SA1100_SIMPAD_128M ++ SET_BANK( 1, 0xc8000000, 64*1024*1024 ); ++ mi->nr_banks = 2; ++#endif + setup_ramdisk( 1, 0, 0, 8192 ); + setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024 ); + } +--- linux-2.4.27/arch/arm/config.in~support-128mb-ram ++++ linux-2.4.27/arch/arm/config.in +@@ -130,6 +130,7 @@ + dep_bool ' Simpad' CONFIG_SA1100_SIMPAD $CONFIG_ARCH_SA1100 + if [ "$CONFIG_SA1100_SIMPAD" = "y" ]; then + bool ' T-Sinus PAD' CONFIG_SA1100_SIMPAD_SINUSPAD ++ bool ' Simpad with 128Mb RAM' CONFIG_SA1100_SIMPAD_128M + fi + dep_bool ' Simputer' CONFIG_SA1100_SIMPUTER $CONFIG_ARCH_SA1100 + dep_bool ' Tulsa' CONFIG_SA1100_PFS168 $CONFIG_ARCH_SA1100 diff --git a/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb b/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb index a707910122..6970dd994b 100644 --- a/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb +++ b/packages/linux/opensimpad_2.4.25-vrs2-pxa1-jpm1.bb @@ -1,12 +1,12 @@ DESCRIPTION = "Linux kernel for the SIEMENS SIMpad family of devices." -MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" +MAINTAINER = "Frederic Devernay <frederic.devernay@m4x.org>" SECTION = "kernel" LICENSE = "GPL" KV = "${@bb.data.getVar('PV',d,True).split('-')[0]}" VRSV = "${@bb.data.getVar('PV',d,True).split('-')[1]}" PXAV = "${@bb.data.getVar('PV',d,True).split('-')[2]}" JPMV = "${@bb.data.getVar('PV',d,True).split('-')[3]}" -PR = "r19" +PR = "r20" FILESPATH = "${FILE_DIRNAME}/opensimpad-${PV}:${FILE_DIRNAME}/opensimpad:${FILE_DIRNAME}/files:${FILE_DIRNAME}" @@ -26,7 +26,9 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \ file://simpad-apm.diff;patch=1;pnum=0 \ file://simpad-ts-noninput.patch;patch=1 \ file://simpad-pm-updates.patch;patch=1;pnum=0 \ - file://support-128mb-flash.patch;patch=1" + file://support-128mb-ram.patch;patch=1 \ + file://mmc-spi.patch;patch=1 \ +" # apply this when we have a patch that allows building with gcc 3.x: # SRC_URI_append = file://gcc-3.3.patch;patch=1 @@ -65,6 +67,18 @@ do_configure() { echo "CONFIG_MTDRAM_ERASE_SIZE=1" >> ${S}/.config echo "CONFIG_MTDRAM_ABS_POS=$addr" >> ${S}/.config fi + if [ "$total" == "128" ] + then + echo "CCONFIG_SA1100_SIMPAD_128M=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_128M is not set" >> ${S}/.config + fi + if [ "$total" == "32" ] + then + echo "CONFIG_SA1100_SIMPAD_SINUSPAD=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_SINUSPAD is not set" >> ${S}/.config + fi echo "CONFIG_CMDLINE=\"${CMDLINE} mem=${mem}M\"" >> ${S}/.config oe_runmake oldconfig } diff --git a/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb b/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb index 0183f36429..95e483a5c8 100644 --- a/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb +++ b/packages/linux/opensimpad_2.4.27-vrs1-pxa1-jpm1.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Linux kernel for the SIEMENS SIMpad family of devices." -MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" +MAINTAINER = "Frederic Devernay <frederic.devernay@m4x.org>" SECTION = "kernel" LICENSE = "GPL" KV = "${@bb.data.getVar('PV',d,True).split('-')[0]}" @@ -7,7 +7,7 @@ VRSV = "${@bb.data.getVar('PV',d,True).split('-')[1]}" PXAV = "${@bb.data.getVar('PV',d,True).split('-')[2]}" JPMV = "${@bb.data.getVar('PV',d,True).split('-')[3]}" USBV= "usb20040610" -PR = "r1" +PR = "r2" FILESPATH = "${FILE_DIRNAME}/opensimpad-${PV}:${FILE_DIRNAME}/opensimpad:${FILE_DIRNAME}/files:${FILE_DIRNAME}" @@ -28,11 +28,12 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \ file://simpad-apm.patch;patch=1 \ file://simpad-ts-noninput.patch;patch=1 \ file://simpad-pm-updates.patch;patch=1 \ - file://support-128mb-flash.patch;patch=1 \ + file://support-128mb-ram.patch;patch=1 \ file://simpad-proc-sys-board.patch;patch=1 \ file://simpad-serial.patch;patch=1 \ file://mppe-20040216.patch;patch=1 \ file://sa1100-usb-tcl1.patch;patch=1 \ + file://mmc-spi.patch;patch=1 \ " # This applies right after the jpm patch but is useless until we # have sa1100_udc.c @@ -75,6 +76,18 @@ do_configure() { echo "CONFIG_MTDRAM_ERASE_SIZE=1" >> ${S}/.config echo "CONFIG_MTDRAM_ABS_POS=$addr" >> ${S}/.config fi + if [ "$total" == "128" ] + then + echo "CONFIG_SA1100_SIMPAD_128M=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_128M is not set" >> ${S}/.config + fi + if [ "$total" == "32" ] + then + echo "CONFIG_SA1100_SIMPAD_SINUSPAD=y" >> ${S}/.config + else + echo "# CONFIG_SA1100_SIMPAD_SINUSPAD is not set" >> ${S}/.config + fi echo "CONFIG_CMDLINE=\"${CMDLINE} mem=${mem}M\"" >> ${S}/.config oe_runmake oldconfig } diff --git a/packages/openldap/openldap-2.2.29/.mtn2git_empty b/packages/openldap/openldap-2.2.29/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/openldap/openldap-2.2.29/.mtn2git_empty diff --git a/packages/openldap/files/openldap-autoconf.patch b/packages/openldap/openldap-2.2.29/openldap-autoconf.patch index c173838492..c173838492 100644 --- a/packages/openldap/files/openldap-autoconf.patch +++ b/packages/openldap/openldap-2.2.29/openldap-autoconf.patch diff --git a/packages/openldap/files/ucgendat.patch b/packages/openldap/openldap-2.2.29/ucgendat.patch index 6f04844e0a..6f04844e0a 100644 --- a/packages/openldap/files/ucgendat.patch +++ b/packages/openldap/openldap-2.2.29/ucgendat.patch diff --git a/packages/openldap/openldap-2.3.11/.mtn2git_empty b/packages/openldap/openldap-2.3.11/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/openldap/openldap-2.3.11/.mtn2git_empty diff --git a/packages/openldap/openldap-2.3.11/openldap-m4-pthread.patch b/packages/openldap/openldap-2.3.11/openldap-m4-pthread.patch new file mode 100644 index 0000000000..b669b7254d --- /dev/null +++ b/packages/openldap/openldap-2.3.11/openldap-m4-pthread.patch @@ -0,0 +1,20 @@ +--- openldap-2.3.11/build/openldap.m4.orig 2005-11-11 00:11:18.604322590 -0800 ++++ openldap-2.3.11/build/openldap.m4 2005-11-11 00:26:21.621145856 -0800 +@@ -788,7 +788,7 @@ AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[[ + ]]) + + AC_DEFUN([OL_PTHREAD_TEST_PROGRAM], +-AC_LANG_SOURCE([OL_PTHREAD_TEST_INCLUDES ++[AC_LANG_SOURCE([[OL_PTHREAD_TEST_INCLUDES + + int main(argc, argv) + int argc; +@@ -796,7 +796,7 @@ int main(argc, argv) + { + OL_PTHREAD_TEST_FUNCTION + } +-])) ++]])]) + dnl -------------------------------------------------------------------- + AC_DEFUN([OL_PTHREAD_TRY], [# Pthread try link: $1 ($2) + if test "$ol_link_threads" = no ; then diff --git a/packages/openldap/openldap_2.2.24.bb b/packages/openldap/openldap_2.2.29.bb index 7c1f7f8b10..cbb968f673 100644 --- a/packages/openldap/openldap_2.2.24.bb +++ b/packages/openldap/openldap_2.2.29.bb @@ -12,18 +12,18 @@ PRIORITY = "optional" LICENSE = "OpenLDAP" SECTION = "libs" -PR = "r4" +PR = "r0" SRC_URI = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${P}.tgz" -SRC_URI += " file://openldap-autoconf.patch;patch=1" +SRC_URI += "file://openldap-autoconf.patch;patch=1" # The build tries to run a host executable, this fails. The patch # causes the executable and its data to be installed instead of # the output - ucgendat must be run after the ipkg install! -SRC_URI += " file://ucgendat.patch;patch=1" +SRC_URI += "file://ucgendat.patch;patch=1" # The original top.mk used INSTALL, not INSTALL_STRIP_PROGRAM when # installing .so and executables, this fails in cross compilation # environments -SRC_URI += " file://install-strip.patch;patch=1" +SRC_URI += "file://install-strip.patch;patch=1" inherit autotools @@ -34,36 +34,36 @@ inherit autotools # the two variables into the setting of the options below (please use # += because that means this can be done in *both* distro.conf and # local.conf! -OPENLDAP_OPTIONS ?= -OPENLDAP_DEPENDS ?= +OPENLDAP_OPTIONS ?= "" +OPENLDAP_DEPENDS ?= "" # CONFIG DEFINITIONS # The following is necessary because it cannot be determined for a # cross compile automagically. Select should yield fine on all OE # systems... -EXTRA_OECONF += " --with-yielding-select=yes" +EXTRA_OECONF += "--with-yielding-select=yes" # Shared libraries are nice... -EXTRA_OECONF += " --enable-dynamic" +EXTRA_OECONF += "--enable-dynamic" # # Disable TLS to remove the need for openssl/libcrypto -OPENLDAP_OPTION_tls ?= --without-tls +OPENLDAP_OPTION_tls ?= "--without-tls" # set the following to " openssl" to build tls support OPENLDAP_DEPENDS_tls ?= -EXTRA_OECONF += " ${OPENLDAP_OPTION_tls}" -DEPENDS += ${OPENLDAP_DEPENDS_tls} +EXTRA_OECONF += "${OPENLDAP_OPTION_tls}" +DEPENDS += "${OPENLDAP_DEPENDS_tls}" # SLAPD options # # UNIX crypt(3) passwd support: -EXTRA_OECONF += " --enable-crypt" +EXTRA_OECONF += "--enable-crypt" # # Enable dynamic module loading. If this is *disabled* the # dependency on libtool is removed (to disable set the following # to variables to "" in a .conf file). OPENLDAP_OPTION_modules += "lt_cv_dlopen_self=yes --enable-modules" -OPENLDAP_DEPENDS_modules += libtool +OPENLDAP_DEPENDS_modules += "libtool" EXTRA_OECONF += " ${OPENLDAP_OPTION_modules}" -DEPENDS += ${OPENLDAP_DEPENDS_modules} +DEPENDS += "${OPENLDAP_DEPENDS_modules}" # SLAPD BACKEND # @@ -73,7 +73,7 @@ DEPENDS += ${OPENLDAP_DEPENDS_modules} # is also disabled. If you try to change the backends but fail to # enable a single one the build will fail in an obvious way. # -EXTRA_OECONF += " --disable-bdb --disable-monitor" +EXTRA_OECONF += "--disable-bdb --disable-monitor" # # Backends="bdb dnssrv hdb ldap ldbm meta monitor null passwd perl shell sql" # @@ -88,35 +88,35 @@ md = "${libexecdir}/openldap" # the version 4 implementation or better. # To disable this set all three of the following variables to <empty> in # a .conf file (this will allow ldbm to be build with gdbm). -OPENLDAP_OPTION_bdb ?= --enable-bdb=mod -OPENLDAP_DEPENDS_bdb ?= db +OPENLDAP_OPTION_bdb ?= "--enable-bdb=mod" +OPENLDAP_DEPENDS_bdb ?= "db" OPENLDAP_PACKAGE_bdb ?= "${PN}-backend-bdb" FILES_${PN}-backend-bdb = "${md}/back_bdb.so ${md}/back_bdb.la ${md}/back_bdb-*.so.*" -EXTRA_OECONF += " ${OPENLDAP_OPTION_bdb}" -DEPENDS += ${OPENLDAP_DEPENDS_bdb} -PACKAGES += " ${OPENLDAP_PACKAGE_bdb}" +EXTRA_OECONF += "${OPENLDAP_OPTION_bdb}" +DEPENDS += "${OPENLDAP_DEPENDS_bdb}" +PACKAGES += "${OPENLDAP_PACKAGE_bdb}" # #--enable-dnssrv enable dnssrv backend no|yes|mod no # This has no dependencies. FILES_${PN}-backend-dnssrv = "${md}/back_dnssrv.so ${md}/back_dnssrv.la ${md}/back_dnssrv-*.so.*" -EXTRA_OECONF += " --enable-dnssrv=mod" -PACKAGES += " ${PN}-backend-dnssrv" +EXTRA_OECONF += "--enable-dnssrv=mod" +PACKAGES += "${PN}-backend-dnssrv" # #--enable-hdb enable Hierarchical DB backend no|yes|mod no # This forces ldbm to use Berkeley too, remove to use gdbm -OPENLDAP_OPTION_hdb ?= --enable-hdb=mod -OPENLDAP_DEPENDS_hdb ?= db +OPENLDAP_OPTION_hdb ?= "--enable-hdb=mod" +OPENLDAP_DEPENDS_hdb ?= "db" OPENLDAP_PACKAGE_hdb ?= "${PN}-backend-hdb" FILES_${PN}-backend-hdb = "${md}/back_hdb.so ${md}/back_hdb.la ${md}/back_hdb-*.so.*" -EXTRA_OECONF += " ${OPENLDAP_OPTION_hdb}" +EXTRA_OECONF += "${OPENLDAP_OPTION_hdb}" DEPENDS += ${OPENLDAP_DEPENDS_hdb} -PACKAGES += " ${OPENLDAP_PACKAGE_hdb}" +PACKAGES += "${OPENLDAP_PACKAGE_hdb}" # #--enable-ldap enable ldap backend no|yes|mod no # This has no dependencies -EXTRA_OECONF += " --enable-ldap=mod" +EXTRA_OECONF += "--enable-ldap=mod" FILES_${PN}-backend-ldap = "${md}/back_ldap.so ${md}/back_ldap.la ${md}/back_ldap-*.so.*" -PACKAGES += " ${PN}-backend-ldap" +PACKAGES += "${PN}-backend-ldap" # #--enable-ldbm enable ldbm backend no|yes|mod no # ldbm requires further specification of the underlying database API, because @@ -129,79 +129,79 @@ PACKAGES += " ${PN}-backend-ldap" #OPENLDAP_OPTION_ldbm = "--enable-ldbm=mod --with-ldbm-api=gdbm" #OPENLDAP_DEPENDS_ldbm = gdbm # And clear the bdb and hdb settings. -OPENLDAP_OPTION_ldbm ?= --enable-ldbm=mod -OPENLDAP_DEPENDS_ldbm ?= +OPENLDAP_OPTION_ldbm ?= "--enable-ldbm=mod" +OPENLDAP_DEPENDS_ldbm ?= "" OPENLDAP_PACKAGES_ldbm ?= "${PN}-backend-ldbm" FILES_${PN}-backend-ldbm = "${md}/back_ldbm.so ${md}/back_ldbm.la ${md}/back_ldbm-*.so.*" -EXTRA_OECONF += " ${OPENLDAP_OPTION_ldbm}" -DEPENDS += ${OPENLDAP_DEPENDS_ldbm} -PACKAGES += " ${PN}-backend-ldbm" +EXTRA_OECONF += "${OPENLDAP_OPTION_ldbm}" +DEPENDS += "${OPENLDAP_DEPENDS_ldbm}" +PACKAGES += "${PN}-backend-ldbm" # #--enable-meta enable metadirectory backend no|yes|mod no # No dependencies -EXTRA_OECONF += " --enable-meta=mod" +EXTRA_OECONF += "--enable-meta=mod" FILES_${PN}-backend-meta = "${md}/back_meta.so ${md}/back_meta.la ${md}/back_meta-*.so.*" -PACKAGES += " ${PN}-backend-meta" +PACKAGES += "${PN}-backend-meta" # #--enable-monitor enable monitor backend no|yes|mod yes -EXTRA_OECONF += " --enable-monitor=mod" +EXTRA_OECONF += "--enable-monitor=mod" FILES_${PN}-backend-monitor = "${md}/back_monitor.so ${md}/back_monitor.la ${md}/back_monitor-*.so.*" -PACKAGES += " ${PN}-backend-monitor" +PACKAGES += "${PN}-backend-monitor" # #--enable-null enable null backend no|yes|mod no -EXTRA_OECONF += " --enable-null=mod" +EXTRA_OECONF += "--enable-null=mod" FILES_${PN}-backend-null = "${md}/back_null.so ${md}/back_null.la ${md}/back_null-*.so.*" -PACKAGES += " ${PN}-backend-null" +PACKAGES += "${PN}-backend-null" # #--enable-passwd enable passwd backend no|yes|mod no EXTRA_OECONF += " --enable-passwd=mod" FILES_${PN}-backend-passwd = "${md}/back_passwd.so ${md}/back_passwd.la ${md}/back_passwd-*.so.*" -PACKAGES += " ${PN}-backend-passwd" +PACKAGES += "${PN}-backend-passwd" # #--enable-perl enable perl backend no|yes|mod no # This requires a loadable perl dynamic library, if enabled without # doing something appropriate (building perl?) the build will pick # up the build machine perl - not good. -OPENLDAP_OPTION_perl ?= --enable-perl=mod -OPENLDAP_DEPENDS_perl ?= perl +OPENLDAP_OPTION_perl ?= "--enable-perl=mod" +OPENLDAP_DEPENDS_perl ?= "perl" OPENLDAP_PACKAGES_perl ?= "${PN}-backend-perl" FILES_${PN}-backend-perl = "${md}/back_perl.so ${md}/back_perl.la ${md}/back_perl-*.so.*" -#EXTRA_OECONF += " ${OPENLDAP_OPTION_perl}" -#DEPENDS += ${OPENLDAP_DEPENDS_perl} -#PACKAGES += " ${PN}-backend-perl" +#EXTRA_OECONF += "${OPENLDAP_OPTION_perl}" +#DEPENDS += "${OPENLDAP_DEPENDS_perl}" +#PACKAGES += "${PN}-backend-perl" # #--enable-shell enable shell backend no|yes|mod no -EXTRA_OECONF += " --enable-shell=mod" +EXTRA_OECONF += "--enable-shell=mod" FILES_${PN}-backend-shell = "${md}/back_shell.so ${md}/back_shell.la ${md}/back_shell-*.so.*" -PACKAGES += " ${PN}-backend-shell" +PACKAGES += "${PN}-backend-shell" # #--enable-sql enable sql backend no|yes|mod no # sql requires some sql backend which provides sql.h, sqlite* provides # sqlite.h (which may be compatible but hasn't been tried.) -OPENLDAP_OPTION_sql ?= --enable-sql=mod -OPENLDAP_DEPENDS_sql ?= sql +OPENLDAP_OPTION_sql ?= "--enable-sql=mod" +OPENLDAP_DEPENDS_sql ?= "sql" OPENLDAP_PACKAGES_sql ?= "${PN}-backend-sql" FILES_${PN}-backend-sql = "${md}/back_sql.so ${md}/back_sql.la ${md}/back_sql-*.so.*" -#EXTRA_OECONF += " ${OPENLDAP_OPTION_sql}" -#DEPENDS += ${OPENLDAP_DEPENDS_sql} -#PACKAGES += " ${PN}-backend-sql" +#EXTRA_OECONF += "${OPENLDAP_OPTION_sql}" +#DEPENDS += "${OPENLDAP_DEPENDS_sql}" +#PACKAGES += "${PN}-backend-sql" # #--enable-dyngroup Dynamic Group overlay no|yes|mod no # This is a demo, Proxy Cache defines init_module which conflicts with the # same symbol in dyngroup -#EXTRA_OECONF += " --enable-dyngroup=mod" +#EXTRA_OECONF += "--enable-dyngroup=mod" #FILES_${PN}-overlay-dyngroup = "${md}/back_dyngroup.so ${md}/back_dyngroup.la ${md}/back_dyngroup-*.so.*" -#PACKAGES += " ${PN}-overlay-dyngroup" +#PACKAGES += "${PN}-overlay-dyngroup" # #--enable-proxycache Proxy Cache overlay no|yes|mod no -EXTRA_OECONF += " --enable-proxycache=mod" +EXTRA_OECONF += "--enable-proxycache=mod" FILES_${PN}-overlay-proxycache = "${md}/pcache.so ${md}/pcache.la ${md}/pcache-*.so.*" -PACKAGES += " ${PN}-overlay-proxycache" +PACKAGES += "${PN}-overlay-proxycache" # # LOCAL OPTION OVERRIDES # The distro/lcoal options must be added in *last* -EXTRA_OECONF += " ${OPENLDAP_OPTIONS}" -DEPENDS += ${OPENLDAP_DEPENDS} +EXTRA_OECONF += "${OPENLDAP_OPTIONS}" +DEPENDS += "${OPENLDAP_DEPENDS}" do_stage() { autotools_stage_includes @@ -223,7 +223,7 @@ LEAD_SONAME = "libldap-2.2.so.*" # The executables go in a separate package. This allows the # installation of the libraries with no daemon support. # Each module also has its own package - see above. -PACKAGES += " ${PN}-slapd ${PN}-slurpd ${PN}-bin" +PACKAGES += "${PN}-slapd ${PN}-slurpd ${PN}-bin" # Package contents - shift most standard contents to -bin FILES_${PN} = "${libdir}/lib*.so.* ${sysconfdir}/openldap/ldap.* ${localstatedir}/openldap-data" diff --git a/packages/openldap/openldap_2.3.11.bb b/packages/openldap/openldap_2.3.11.bb new file mode 100644 index 0000000000..84b93d1d8e --- /dev/null +++ b/packages/openldap/openldap_2.3.11.bb @@ -0,0 +1,276 @@ +# OpenLDAP, a license free (see http://www.OpenLDAP.org/license.html) +# +DESCRIPTION = "OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol." +HOMEPAGE = "http://www.OpenLDAP.org/license.html" +MAINTAINER = "John Bowler <jbowler@acm.org>" +PRIORITY = "optional" +# The OpenLDAP Public License - see the HOMEPAGE - defines +# the license. www.openldap.org claims this is Open Source +# (see http://www.openldap.org), the license appears to be +# basically BSD. opensource.org does not record this license +# at present (so it is apparently not OSI certified). +LICENSE = "OpenLDAP" +SECTION = "libs" + +PR = "r0" +DEFAULT_PREFERENCE = "-1" + +LDAP_VER = "${@'.'.join(bb.data.getVar('PV',d,1).split('.')[0:2])}" + +SRC_URI = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${P}.tgz" +SRC_URI += "file://openldap-m4-pthread.patch;patch=1" +# The build tries to run a host executable, this fails. The patch +# causes the executable and its data to be installed instead of +# the output - ucgendat must be run after the ipkg install! +#SRC_URI += "file://ucgendat.patch;patch=1" +# The original top.mk used INSTALL, not INSTALL_STRIP_PROGRAM when +# installing .so and executables, this fails in cross compilation +# environments +SRC_URI += "file://install-strip.patch;patch=1" + +inherit autotools + +# OPTIONS +# The following two variables can be set in a distro or local.conf +# to switch features on. Each feature foo defines OPENLDAP_OPTION_foo +# and OPENLDAP_DEPENDS_foo in this file - to include feature foo add +# the two variables into the setting of the options below (please use +# += because that means this can be done in *both* distro.conf and +# local.conf! +OPENLDAP_OPTIONS ?= "" +OPENLDAP_DEPENDS ?= "" + +# CV SETTINGS +# Required to work round AC_FUNC_MEMCMP which gets the wrong answer +# when cross compiling (should be in site?) +EXTRA_OECONF += "ac_cv_func_memcmp_working=yes" + +# CONFIG DEFINITIONS +# The following is necessary because it cannot be determined for a +# cross compile automagically. Select should yield fine on all OE +# systems... +EXTRA_OECONF += "--with-yielding-select=yes" +# Shared libraries are nice... +EXTRA_OECONF += "--enable-dynamic" +# +# Disable TLS to remove the need for openssl/libcrypto +OPENLDAP_OPTION_tls ?= "--without-tls" +# set the following to " openssl" to build tls support +OPENLDAP_DEPENDS_tls ?= +EXTRA_OECONF += "${OPENLDAP_OPTION_tls}" +DEPENDS += "${OPENLDAP_DEPENDS_tls}" + +# SLAPD options +# +# UNIX crypt(3) passwd support: +EXTRA_OECONF += "--enable-crypt" +# +# Enable dynamic module loading. If this is *disabled* the +# dependency on libtool is removed (to disable set the following +# to variables to "" in a .conf file). +OPENLDAP_OPTION_modules += "lt_cv_dlopen_self=yes --enable-modules" +OPENLDAP_DEPENDS_modules += "libtool" +EXTRA_OECONF += " ${OPENLDAP_OPTION_modules}" +DEPENDS += "${OPENLDAP_DEPENDS_modules}" + +# SLAPD BACKEND +# +# The backend must be set by the configuration. This controls the +# required database, the default database, bdb, is turned off but +# can be turned back on again and it *is* below! The monitor backend +# is also disabled. If you try to change the backends but fail to +# enable a single one the build will fail in an obvious way. +# +EXTRA_OECONF += "--disable-bdb --disable-monitor" +# +# Backends="bdb dnssrv hdb ldap ldbm meta monitor null passwd perl shell sql" +# +# Note that multiple backends can be built. The ldbm backend requires a +# build-time choice of database API. The bdb backend forces this to be +# DB4. To use the gdbm (or other) API the Berkely database module must +# be removed from the build. +md = "${libexecdir}/openldap" +# +#--enable-bdb enable Berkeley DB backend no|yes|mod yes +# The Berkely DB is the standard choice. This version of OpenLDAP requires +# the version 4 implementation or better. +# To disable this set all three of the following variables to <empty> in +# a .conf file (this will allow ldbm to be build with gdbm). +OPENLDAP_OPTION_bdb ?= "--enable-bdb=mod" +OPENLDAP_DEPENDS_bdb ?= "db" +OPENLDAP_PACKAGE_bdb ?= "${PN}-backend-bdb" +FILES_${PN}-backend-bdb = "${md}/back_bdb.so ${md}/back_bdb.la ${md}/back_bdb-*.so.*" +EXTRA_OECONF += "${OPENLDAP_OPTION_bdb}" +DEPENDS += "${OPENLDAP_DEPENDS_bdb}" +PACKAGES += "${OPENLDAP_PACKAGE_bdb}" +# +#--enable-dnssrv enable dnssrv backend no|yes|mod no +# This has no dependencies. +FILES_${PN}-backend-dnssrv = "${md}/back_dnssrv.so ${md}/back_dnssrv.la ${md}/back_dnssrv-*.so.*" +EXTRA_OECONF += "--enable-dnssrv=mod" +PACKAGES += "${PN}-backend-dnssrv" +# +#--enable-hdb enable Hierarchical DB backend no|yes|mod no +# This forces ldbm to use Berkeley too, remove to use gdbm +OPENLDAP_OPTION_hdb ?= "--enable-hdb=mod" +OPENLDAP_DEPENDS_hdb ?= "db" +OPENLDAP_PACKAGE_hdb ?= "${PN}-backend-hdb" +FILES_${PN}-backend-hdb = "${md}/back_hdb.so ${md}/back_hdb.la ${md}/back_hdb-*.so.*" +EXTRA_OECONF += "${OPENLDAP_OPTION_hdb}" +DEPENDS += ${OPENLDAP_DEPENDS_hdb} +PACKAGES += "${OPENLDAP_PACKAGE_hdb}" +# +#--enable-ldap enable ldap backend no|yes|mod no +# This has no dependencies +EXTRA_OECONF += "--enable-ldap=mod" +FILES_${PN}-backend-ldap = "${md}/back_ldap.so ${md}/back_ldap.la ${md}/back_ldap-*.so.*" +PACKAGES += "${PN}-backend-ldap" +# +#--enable-ldbm enable ldbm backend no|yes|mod no +# ldbm requires further specification of the underlying database API, because +# bdb is enabled above this must be set to berkeley, however the config +# defaults this correctly so --with-ldbm-api is *not* set. The build will +# fail if bdb is removed (above) but not database is built to provide the +# support for ldbm (because the 'DEPENDS_ldbm' is empty below.) +# +# So to use gdbm set: +#OPENLDAP_OPTION_ldbm = "--enable-ldbm=mod --with-ldbm-api=gdbm" +#OPENLDAP_DEPENDS_ldbm = gdbm +# And clear the bdb and hdb settings. +OPENLDAP_OPTION_ldbm ?= "--enable-ldbm=mod" +OPENLDAP_DEPENDS_ldbm ?= "" +OPENLDAP_PACKAGES_ldbm ?= "${PN}-backend-ldbm" +FILES_${PN}-backend-ldbm = "${md}/back_ldbm.so ${md}/back_ldbm.la ${md}/back_ldbm-*.so.*" +EXTRA_OECONF += "${OPENLDAP_OPTION_ldbm}" +DEPENDS += "${OPENLDAP_DEPENDS_ldbm}" +PACKAGES += "${PN}-backend-ldbm" +# +#--enable-meta enable metadirectory backend no|yes|mod no +# No dependencies +EXTRA_OECONF += "--enable-meta=mod" +FILES_${PN}-backend-meta = "${md}/back_meta.so ${md}/back_meta.la ${md}/back_meta-*.so.*" +PACKAGES += "${PN}-backend-meta" +# +#--enable-monitor enable monitor backend no|yes|mod yes +EXTRA_OECONF += "--enable-monitor=mod" +FILES_${PN}-backend-monitor = "${md}/back_monitor.so ${md}/back_monitor.la ${md}/back_monitor-*.so.*" +PACKAGES += "${PN}-backend-monitor" +# +#--enable-null enable null backend no|yes|mod no +EXTRA_OECONF += "--enable-null=mod" +FILES_${PN}-backend-null = "${md}/back_null.so ${md}/back_null.la ${md}/back_null-*.so.*" +PACKAGES += "${PN}-backend-null" +# +#--enable-passwd enable passwd backend no|yes|mod no +EXTRA_OECONF += " --enable-passwd=mod" +FILES_${PN}-backend-passwd = "${md}/back_passwd.so ${md}/back_passwd.la ${md}/back_passwd-*.so.*" +PACKAGES += "${PN}-backend-passwd" +# +#--enable-perl enable perl backend no|yes|mod no +# This requires a loadable perl dynamic library, if enabled without +# doing something appropriate (building perl?) the build will pick +# up the build machine perl - not good. +OPENLDAP_OPTION_perl ?= "--enable-perl=mod" +OPENLDAP_DEPENDS_perl ?= "perl" +OPENLDAP_PACKAGES_perl ?= "${PN}-backend-perl" +FILES_${PN}-backend-perl = "${md}/back_perl.so ${md}/back_perl.la ${md}/back_perl-*.so.*" +#EXTRA_OECONF += "${OPENLDAP_OPTION_perl}" +#DEPENDS += "${OPENLDAP_DEPENDS_perl}" +#PACKAGES += "${PN}-backend-perl" +# +#--enable-shell enable shell backend no|yes|mod no +EXTRA_OECONF += "--enable-shell=mod" +FILES_${PN}-backend-shell = "${md}/back_shell.so ${md}/back_shell.la ${md}/back_shell-*.so.*" +PACKAGES += "${PN}-backend-shell" +# +#--enable-sql enable sql backend no|yes|mod no +# sql requires some sql backend which provides sql.h, sqlite* provides +# sqlite.h (which may be compatible but hasn't been tried.) +OPENLDAP_OPTION_sql ?= "--enable-sql=mod" +OPENLDAP_DEPENDS_sql ?= "sql" +OPENLDAP_PACKAGES_sql ?= "${PN}-backend-sql" +FILES_${PN}-backend-sql = "${md}/back_sql.so ${md}/back_sql.la ${md}/back_sql-*.so.*" +#EXTRA_OECONF += "${OPENLDAP_OPTION_sql}" +#DEPENDS += "${OPENLDAP_DEPENDS_sql}" +#PACKAGES += "${PN}-backend-sql" +# +#--enable-dyngroup Dynamic Group overlay no|yes|mod no +# This is a demo, Proxy Cache defines init_module which conflicts with the +# same symbol in dyngroup +#EXTRA_OECONF += "--enable-dyngroup=mod" +#FILES_${PN}-overlay-dyngroup = "${md}/back_dyngroup.so ${md}/back_dyngroup.la ${md}/back_dyngroup-*.so.*" +#PACKAGES += "${PN}-overlay-dyngroup" +# +#--enable-proxycache Proxy Cache overlay no|yes|mod no +EXTRA_OECONF += "--enable-proxycache=mod" +FILES_${PN}-overlay-proxycache = "${md}/pcache.so ${md}/pcache.la ${md}/pcache-*.so.*" +PACKAGES += "${PN}-overlay-proxycache" +# +# LOCAL OPTION OVERRIDES +# The distro/lcoal options must be added in *last* +EXTRA_OECONF += "${OPENLDAP_OPTIONS}" +DEPENDS += "${OPENLDAP_DEPENDS}" + +#FIXME: this is a hack, at present an openldap build will pick up the header +# files from staging rather than the local ones (bad -I order), so remove +# the headers (from openldap-old.x) before compiling... +do_compile_prepend() { + ( cd ${STAGING_INCDIR} + rm -f ldap.h ldap_*.h + ) + ( cd ${STAGING_LIBDIR} + rm -f libldap* liblber* + ) +} + +do_stage() { + echo "staging libldap-${LDAP_VER}" >&2 + # + autotools_stage_includes + # Install the -${LDAP_VER} versions, but link foo.so to foo-x.y.so ONLY + # if they do not exist! + oe_libinstall -so -C libraries/libldap/.libs libldap-${LDAP_VER} ${STAGING_LIBDIR} + test -e ${STAGING_LIBDIR}/libldap.so || + ln -s $(basename ${STAGING_LIBDIR}/libldap-${LDAP_VER}.so.*.*.*) ${STAGING_LIBDIR}/libldap.so + oe_libinstall -so -C libraries/libldap_r/.libs libldap_r-${LDAP_VER} ${STAGING_LIBDIR} + test -e ${STAGING_LIBDIR}/libldap_r.so || + ln -s $(basename ${STAGING_LIBDIR}/libldap_r-${LDAP_VER}.so.*.*.*) ${STAGING_LIBDIR}/libldap_r.so + oe_libinstall -so -C libraries/liblber/.libs liblber-${LDAP_VER} ${STAGING_LIBDIR} + test -e ${STAGING_LIBDIR}/liblber.so || + ln -s $(basename ${STAGING_LIBDIR}/liblber-${LDAP_VER}.so.*.*.*) ${STAGING_LIBDIR}/liblber.so +} + +LEAD_SONAME = "libldap-${LDAP_VER}.so.*" + +# The executables go in a separate package. This allows the +# installation of the libraries with no daemon support. +# Each module also has its own package - see above. +PACKAGES += "${PN}-slapd ${PN}-slurpd ${PN}-bin" + +# Package contents - shift most standard contents to -bin +FILES_${PN} = "${libdir}/lib*.so.* ${sysconfdir}/openldap/ldap.* ${localstatedir}/openldap-data" +FILES_${PN}-slapd = "${libexecdir}/slapd ${sbindir} ${datadir}/openldap/ucdata \ + ${localstatedir}/run ${sysconfdir}/openldap/slapd.* ${sysconfdir}/openldap/schema" +FILES_${PN}-slurpd = "${libexecdir}/slurpd ${localstatedir}/openldap-slurp ${localstatedir}/run" +FILES_${PN}-bin = "${bindir}" +FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la ${libdir}/*.a ${libexecdir}/openldap/*.a" + +# Run ucgendat, and remove it. +# This is a painful and annoying way around the use of machine-generated +# tables within the build. The alternative is to rewrite the ucgendat +# stuff and associated liblunicode code to use machine-independent data +# files - the current code seems to at least assume byte sex. +DATFILES = "case.dat cmbcl.dat comp.dat ctype.dat decomp.dat num.dat kdecomp.dat" +pkg_postinst_openldap-slapd() { +test -n "${DESTDIR}" -o "${BUILD_ARCH}" = "${HOST_ARCH}" || ( + cd "${datadir}/${PN}/ucdata" && + ./ucgendat UnicodeData.txt -x CompositionExclusions.txt && + # This saves about 1MByte + rm ucgendat UnicodeData.txt CompositionExclusions.txt +) +} +pkg_prerm_openldap-slapd() { +test "${BUILD_ARCH}" = "${HOST_ARCH}" || ( + cd "${datadir}/${PN}/ucdata" && rm ${DATFILES} +) +} |