diff options
author | Graeme Gregory <dp@xora.org.uk> | 2009-07-10 21:45:15 +0100 |
---|---|---|
committer | Graeme Gregory <dp@xora.org.uk> | 2009-07-10 21:45:15 +0100 |
commit | 8b0c5558ac548345d6ae363c4105488d5f1e4900 (patch) | |
tree | c3150f54cd8e99cde963360e32ec3d14637ca501 /recipes | |
parent | 071dafded971a297dd50694595fa4455281ceb49 (diff) | |
parent | 9756c8d5940e5f067c97dd37e2f30704eaa0927f (diff) |
Merge branch 'org.openembedded.dev' of git+ssh://git@git.openembedded.org/openembedded into org.openembedded.dev
Diffstat (limited to 'recipes')
24 files changed, 675 insertions, 13 deletions
diff --git a/recipes/dri/libdrm_2.4.11.bb b/recipes/dri/libdrm_2.4.11.bb new file mode 100644 index 0000000000..0ea2396372 --- /dev/null +++ b/recipes/dri/libdrm_2.4.11.bb @@ -0,0 +1,11 @@ +SECTION = "x11/base" +DEPENDS = "libpthread-stubs" +LICENSE = "MIT" +SRC_URI = "http://dri.freedesktop.org/libdrm/libdrm-${PV}.tar.bz2" +PROVIDES = "drm" + +inherit autotools pkgconfig + +do_stage() { + autotools_stage_all +} diff --git a/recipes/glibc/files/tls_i486.patch b/recipes/glibc/files/tls_i486.patch new file mode 100644 index 0000000000..69a1fdf91d --- /dev/null +++ b/recipes/glibc/files/tls_i486.patch @@ -0,0 +1,14 @@ +Index: glibc-2.9/sysdeps/i386/dl-tlsdesc.S +=================================================================== +--- glibc-2.9.orig/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:11.647664128 +0200 ++++ glibc-2.9/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:32.802555992 +0200 +@@ -128,8 +128,7 @@ + .Lslow: + cfi_adjust_cfa_offset (28) + movl %ebx, 16(%esp) +- call __i686.get_pc_thunk.bx +- addl $_GLOBAL_OFFSET_TABLE_, %ebx ++ LOAD_PIC_REG (bx) + call ___tls_get_addr@PLT + movl 16(%esp), %ebx + jmp .Lret diff --git a/recipes/glibc/glibc_2.9.bb b/recipes/glibc/glibc_2.9.bb index be66e2b727..b0ba738477 100644 --- a/recipes/glibc/glibc_2.9.bb +++ b/recipes/glibc/glibc_2.9.bb @@ -5,7 +5,7 @@ ARM_INSTRUCTION_SET = "arm" PACKAGES_DYNAMIC = "libc6*" RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" -PR = "r1" +PR = "r2" # the -isystem in bitbake.conf screws up glibc do_stage BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" @@ -64,6 +64,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \ file://etc/ld.so.conf \ file://generate-supported.mk \ file://march-i686.patch;patch=1;pnum=0 \ + file://tls_i486.patch;patch=1 \ " diff --git a/recipes/i2c-tools/read-edid_1.4.1.bb b/recipes/i2c-tools/read-edid_1.4.1.bb index e1f10ca48d..3fa98b3223 100644 --- a/recipes/i2c-tools/read-edid_1.4.1.bb +++ b/recipes/i2c-tools/read-edid_1.4.1.bb @@ -1,5 +1,6 @@ DESCRIPTION = "read-edid elucidates various very useful informations from a conforming PnP monitor" LICENSE = "GPL" +PR = "r1" SRC_URI = "http://john.fremlin.de/programs/linux/read-edid/read-edid-${PV}.tar.gz \ http://ftp.de.debian.org/debian/pool/main/r/read-edid/read-edid_1.4.1-2.1.diff.gz;patch=1 " @@ -7,13 +8,15 @@ SRC_URI = "http://john.fremlin.de/programs/linux/read-edid/read-edid-${PV}.tar.g inherit autotools do_compile() { - oe_runmake parse-edid + oe_runmake parse-edid get-edid } do_install() { install -d ${D}/${sbindir} install -m 0755 parse-edid ${D}/${sbindir}/ + install -m 0755 get-edid ${D}/${sbindir}/ } -PACKAGES =+ "parse-edid" +PACKAGES =+ "parse-edid get-edid" FILES_parse-edid = "${sbindir}/parse-edid" +FILES_get-edid = "${sbindir}/parse-edid" diff --git a/recipes/libgpg-error/libgpg-error.inc b/recipes/libgpg-error/libgpg-error.inc index 6fcc9202b2..400c1668a6 100644 --- a/recipes/libgpg-error/libgpg-error.inc +++ b/recipes/libgpg-error/libgpg-error.inc @@ -8,6 +8,8 @@ DEPENDS += "virtual/libiconv" SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-${PV}.tar.gz \ file://pkgconfig.patch;patch=1" +INC_PR = "r6" + # move libgpg-error-config into -dev package FILES_${PN} = "${libdir}/lib*.so.*" FILES_${PN}-dev += "${bindir}/*" diff --git a/recipes/libgpg-error/libgpg-error_0.6.bb b/recipes/libgpg-error/libgpg-error_0.6.bb index 4929121167..69577e003a 100644 --- a/recipes/libgpg-error/libgpg-error_0.6.bb +++ b/recipes/libgpg-error/libgpg-error_0.6.bb @@ -2,7 +2,7 @@ DESCRIPTION = "GPG-Error library" SECTION = "libs" PRIORITY = "optional" LICENSE = "GPL LGPL FDL" -PR = "r1" +PR = "${INC_PR}.1" SRC_URI = "ftp://ftp.gnupg.org/gcrypt/alpha/libgpg-error/libgpg-error-${PV}.tar.gz" diff --git a/recipes/libgpg-error/libgpg-error_0.7.bb b/recipes/libgpg-error/libgpg-error_0.7.bb index 0f28ed00d4..526a2a401b 100644 --- a/recipes/libgpg-error/libgpg-error_0.7.bb +++ b/recipes/libgpg-error/libgpg-error_0.7.bb @@ -1,6 +1,6 @@ require libgpg-error.inc -PR = "r5" +PR = "${INC_PR}.1" SRC_URI = "ftp://ftp.gnupg.org/gcrypt/alpha/libgpg-error/libgpg-error-${PV}.tar.gz \ file://pkgconfig.patch;patch=1" diff --git a/recipes/libgpg-error/libgpg-error_1.0.bb b/recipes/libgpg-error/libgpg-error_1.0.bb index b81d4b9da7..6e7c0e6adb 100644 --- a/recipes/libgpg-error/libgpg-error_1.0.bb +++ b/recipes/libgpg-error/libgpg-error_1.0.bb @@ -1,3 +1,3 @@ require libgpg-error.inc -PR = "r2" +PR = "${INC_PR}.1" diff --git a/recipes/libgpg-error/libgpg-error_1.3.bb b/recipes/libgpg-error/libgpg-error_1.3.bb index b81d4b9da7..6e7c0e6adb 100644 --- a/recipes/libgpg-error/libgpg-error_1.3.bb +++ b/recipes/libgpg-error/libgpg-error_1.3.bb @@ -1,3 +1,3 @@ require libgpg-error.inc -PR = "r2" +PR = "${INC_PR}.1" diff --git a/recipes/libgpg-error/libgpg-error_1.4.bb b/recipes/libgpg-error/libgpg-error_1.4.bb index b81d4b9da7..6e7c0e6adb 100644 --- a/recipes/libgpg-error/libgpg-error_1.4.bb +++ b/recipes/libgpg-error/libgpg-error_1.4.bb @@ -1,3 +1,3 @@ require libgpg-error.inc -PR = "r2" +PR = "${INC_PR}.1" diff --git a/recipes/mesa/mesa-dri_7.4.bb b/recipes/mesa/mesa-dri_7.4.bb new file mode 100644 index 0000000000..296a254841 --- /dev/null +++ b/recipes/mesa/mesa-dri_7.4.bb @@ -0,0 +1,28 @@ +include mesa-common.inc + +PROTO_DEPS = "xf86driproto glproto dri2proto expat" +LIB_DEPS = "libdrm virtual/libx11 libxext libxxf86vm libxdamage libxfixes" + +DEPENDS = "${PROTO_DEPS} ${LIB_DEPS}" + +PE = "1" +PR = "r6" + +# most of our targets do not have DRI so will use mesa-xlib +DEFAULT_PREFERENCE = "-1" + +# ASUS EeePC 901 has DRI support so use mesa-dri by default +DEFAULT_PREFERENCE_eee901 = "1" + +PACKAGES =+ "${PN}-xprogs" + +FILES_${PN} += "${libdir}/dri/*.so" +FILES_${PN}-dbg += "${libdir}/dri/.debug/*" +FILES_${PN}-xprogs = "${bindir}/glxdemo ${bindir}/glxgears ${bindir}/glxheads ${bindir}/glxinfo" + +EXTRA_OECONF += "--with-driver=dri --with-dri-drivers=swrast,${MACHINE_DRI_MODULES}" + +do_install_append () { + install -d ${D}/usr/bin + install -m 0755 ${S}/progs/xdemos/{glxdemo,glxgears,glxheads,glxinfo} ${D}/usr/bin/ +} diff --git a/recipes/mesa/mesa_7.4.bb b/recipes/mesa/mesa_7.4.bb new file mode 100644 index 0000000000..43cde679a1 --- /dev/null +++ b/recipes/mesa/mesa_7.4.bb @@ -0,0 +1,2 @@ +# This is a dummy package so OE can use the poky mesa files +require mesa-dri_${PV}.bb diff --git a/recipes/opkg/files/opkg-libdir.patch b/recipes/opkg/files/opkg-libdir.patch new file mode 100644 index 0000000000..1d48b9a6bf --- /dev/null +++ b/recipes/opkg/files/opkg-libdir.patch @@ -0,0 +1,11 @@ +--- trunk/utils/update-alternatives.orig 2009-06-23 15:33:56.000000000 -0300 ++++ trunk/utils/update-alternatives 2009-06-23 15:34:10.000000000 -0300 +@@ -21,7 +21,7 @@ + set -e + + # admin dir +-ad="$OPKG_OFFLINE_ROOT/usr/lib/opkg/alternatives" ++ad="$OPKG_OFFLINE_ROOT/${libdir}/opkg/alternatives" + + usage() { + echo "update-alternatives: $* diff --git a/recipes/opkg/opkg-native_svn.bb b/recipes/opkg/opkg-native_svn.bb index 82c74e0b86..acd681cb35 100644 --- a/recipes/opkg/opkg-native_svn.bb +++ b/recipes/opkg/opkg-native_svn.bb @@ -3,6 +3,8 @@ require opkg.inc DEPENDS = "curl-native" PR = "r3" +SRC_URI += "file://opkg-libdir.patch;patch=1" + target_libdir := "${libdir}" inherit native diff --git a/recipes/rdesktop/rdesktop-1.6.0/audio-2008.patch b/recipes/rdesktop/rdesktop-1.6.0/audio-2008.patch new file mode 100644 index 0000000000..57052a78a4 --- /dev/null +++ b/recipes/rdesktop/rdesktop-1.6.0/audio-2008.patch @@ -0,0 +1,22 @@ +--- a/rdpdr.c (revisão 1505) ++++ b/rdpdr.c (cópia de trabalho) +@@ -841,14 +841,11 @@ + RD_BOOL + rdpdr_init() + { +- if (g_num_devices > 0) +- { +- rdpdr_channel = +- channel_register("rdpdr", +- CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_COMPRESS_RDP, +- rdpdr_process); +- } +- ++ rdpdr_channel = ++ channel_register("rdpdr", ++ CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_COMPRESS_RDP, ++ rdpdr_process); ++ + return (rdpdr_channel != NULL); + } + diff --git a/recipes/rdesktop/rdesktop-1.6.0/rdesktop-addin.patch b/recipes/rdesktop/rdesktop-1.6.0/rdesktop-addin.patch new file mode 100644 index 0000000000..ffd942a6bd --- /dev/null +++ b/recipes/rdesktop/rdesktop-1.6.0/rdesktop-addin.patch @@ -0,0 +1,534 @@ +diff -ur rdesktop-1.6.0-orig/channels.c rdesktop-1.6.0/channels.c +--- rdesktop-1.6.0-orig/channels.c 2007-01-08 07:47:05.000000000 +0300 ++++ rdesktop-1.6.0/channels.c 2008-12-05 18:58:00.000000000 +0300 +@@ -19,6 +19,9 @@ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + ++#include <sys/types.h> ++#include <sys/wait.h> ++#include <unistd.h> + #include "rdesktop.h" + + #define MAX_CHANNELS 6 +@@ -44,7 +47,7 @@ + */ + + VCHANNEL * +-channel_register(char *name, uint32 flags, void (*callback) (STREAM)) ++channel_register(char *name, uint32 flags, void (*callback) (STREAM,char*)) + { + VCHANNEL *channel; + +@@ -159,7 +162,7 @@ + if ((flags & CHANNEL_FLAG_FIRST) && (flags & CHANNEL_FLAG_LAST)) + { + /* single fragment - pass straight up */ +- channel->process(s); ++ channel->process(s, channel->name); + } + else + { +@@ -183,7 +186,109 @@ + { + in->end = in->p; + in->p = in->data; +- channel->process(in); ++ channel->process(in, channel->name); + } + } + } ++ ++/* Generic callback for delivering data to third party add-ins */ ++void addin_callback(STREAM s, char *name) ++{ ++ pid_t pid; ++ int pipe_read; ++ int pipe_write; ++ uint32 blocksize; ++ ++ blocksize = s->end - s->p; ++ ++ lookup_addin(name, &pid, &pipe_read, &pipe_write); ++ if (pid > 0) { ++ /* Prepend the block with the block size so the ++ add-in can identify blocks */ ++ write(pipe_write, &blocksize, sizeof(uint32)); ++ write(pipe_write, s->p, blocksize); ++ } ++} ++ ++void addin_add_fds(int *n, fd_set *rfds, fd_set *wfds, struct timeval *tv) ++{ ++ extern ADDIN_DATA addin_data[]; ++ extern int addin_count; ++ int i; ++ ++ for (i = 0; i < addin_count; i++) { ++ /* Take in account only live addins. */ ++ if (addin_data[i].pid > 0) { ++ int addin_fd = addin_data[i].pipe_read; ++ ++ FD_SET(addin_fd, rfds); ++ if (*n < addin_fd) ++ *n = addin_fd; ++ } ++ } ++} ++ ++/* Process outgoing addin data */ ++void addin_check_fds(fd_set *rfds, fd_set *wfds) ++{ ++ extern ADDIN_DATA addin_data[]; ++ extern int addin_count; ++ int i; ++ unsigned int block_len; ++ ssize_t bytes_read; ++ STREAM s; ++ ++ for (i = 0; i < addin_count; i++) { ++ int addin_fd = addin_data[i].pipe_read; ++ ++ if (!FD_ISSET(addin_fd, rfds)) { ++ continue; ++ } ++ ++ bytes_read = read(addin_fd, &block_len, sizeof(block_len)); ++ if (bytes_read <= 0) { ++ addin_check_terminated(&addin_data[i]); ++ continue; ++ } ++ ++ if (block_len > 0xffff) { ++ warning("received too much data (%d) from addin %s\n", ++ block_len, addin_data[i].name); ++ addin_check_terminated(&addin_data[i]); ++ continue; ++ } ++ ++ if (block_len > addin_data[i].buf_len) { ++ addin_data[i].buf = (unsigned char *)xrealloc( ++ addin_data[i].buf, ++ block_len); ++ addin_data[i].buf_len = block_len; ++ } ++ ++ bytes_read = read(addin_fd, addin_data[i].buf, block_len); ++ if (bytes_read > 0) { ++ s = channel_init(addin_data[i].vchannel, bytes_read); ++ memcpy(s->p, addin_data[i].buf, bytes_read); ++ s->p += bytes_read; ++ s->end = s->p; ++ ++ channel_send(s, addin_data[i].vchannel); ++ } ++ } ++} ++ ++void addin_check_terminated(ADDIN_DATA *addin) ++{ ++ int status = 0; ++ ++ pid_t result = waitpid(addin->pid, &status, WNOHANG); ++ if (result <= 0) ++ return; ++ ++ if (WIFEXITED(status) || WIFSIGNALED(status)) { ++ warning("Addin %s is suddenly terminated\n", addin->name); ++ /* Mark this addin as terminated to exclude ++ it from processing. */ ++ addin->pid = 0; ++ } ++} +diff -ur rdesktop-1.6.0-orig/cliprdr.c rdesktop-1.6.0/cliprdr.c +--- rdesktop-1.6.0-orig/cliprdr.c 2007-01-08 07:47:05.000000000 +0300 ++++ rdesktop-1.6.0/cliprdr.c 2008-12-05 18:42:40.000000000 +0300 +@@ -111,7 +111,7 @@ + } + + static void +-cliprdr_process(STREAM s) ++cliprdr_process(STREAM s, char *name) + { + uint16 type, status; + uint32 length, format; +Only in rdesktop-1.6.0/doc: .svn +Only in rdesktop-1.6.0/keymaps: .svn +diff -ur rdesktop-1.6.0-orig/lspci.c rdesktop-1.6.0/lspci.c +--- rdesktop-1.6.0-orig/lspci.c 2007-01-08 07:47:05.000000000 +0300 ++++ rdesktop-1.6.0/lspci.c 2008-12-05 18:42:40.000000000 +0300 +@@ -128,7 +128,7 @@ + + /* Process new data from the virtual channel */ + static void +-lspci_process(STREAM s) ++lspci_process(STREAM s, char *name) + { + unsigned int pkglen; + static char *rest = NULL; +diff -ur rdesktop-1.6.0-orig/proto.h rdesktop-1.6.0/proto.h +--- rdesktop-1.6.0-orig/proto.h 2008-04-02 15:13:22.000000000 +0400 ++++ rdesktop-1.6.0/proto.h 2008-12-05 18:58:00.000000000 +0300 +@@ -45,7 +45,7 @@ + RD_HCURSOR cache_get_cursor(uint16 cache_idx); + void cache_put_cursor(uint16 cache_idx, RD_HCURSOR cursor); + /* channels.c */ +-VCHANNEL *channel_register(char *name, uint32 flags, void (*callback) (STREAM)); ++VCHANNEL *channel_register(char *name, uint32 flags, void (*callback) (STREAM,char *)); + STREAM channel_init(VCHANNEL * channel, uint32 length); + void channel_send(STREAM s, VCHANNEL * channel); + void channel_process(STREAM s, uint16 mcs_channel); +@@ -314,6 +314,21 @@ + void scard_lock(int lock); + void scard_unlock(int lock); + ++/* External addins */ ++void init_external_addin(char * addin_name, char * addin_path, char * args, ADDIN_DATA * addin_data); ++ ++/* Generic callback for delivering data to third party add-ins */ ++void addin_callback(STREAM s, char *name); ++ ++/* Find an external add-in registration by virtual channel name */ ++void lookup_addin(char *name, pid_t * pid, int * pipe_read, int * pipe_write); ++ ++void addin_add_fds(int *n, fd_set *rfds, fd_set *wfds, struct timeval *tv); ++ ++void addin_check_fds(fd_set *rfds, fd_set *wfds); ++ ++void addin_check_terminated(ADDIN_DATA *addin); ++ + /* *INDENT-OFF* */ + #ifdef __cplusplus + } +diff -ur rdesktop-1.6.0-orig/rdesktop.c rdesktop-1.6.0/rdesktop.c +--- rdesktop-1.6.0-orig/rdesktop.c 2008-04-05 09:22:26.000000000 +0400 ++++ rdesktop-1.6.0/rdesktop.c 2008-12-05 18:58:00.000000000 +0300 +@@ -28,6 +28,7 @@ + #include <sys/times.h> /* times */ + #include <ctype.h> /* toupper */ + #include <errno.h> ++#include <signal.h> /* kill */ + #include "rdesktop.h" + + #ifdef HAVE_LOCALE_H +@@ -115,6 +116,9 @@ + extern uint32 g_num_devices; + extern char *g_rdpdr_clientname; + ++ADDIN_DATA addin_data[MAX_ADDINS]; ++int addin_count = 0; ++ + #ifdef RDP2VNC + extern int rfb_port; + extern int defer_time; +@@ -208,6 +212,9 @@ + fprintf(stderr, + " \"AKS\" -> Device vendor name \n"); + #endif ++ fprintf(stderr, ++ " '-r addin:<channelname>:</path/to/executable>[:arg1[:arg2:]...]': enable third\n"); ++ fprintf(stderr, " party virtual channel add-in.\n"); + fprintf(stderr, " -0: attach to console\n"); + fprintf(stderr, " -4: use RDP version 4\n"); + fprintf(stderr, " -5: use RDP version 5 (default)\n"); +@@ -417,6 +424,8 @@ + struct passwd *pw; + uint32 flags, ext_disc_reason = 0; + char *p; ++ char *addin_name; ++ char *addin_path; + int c; + char *locale = NULL; + int username_option = 0; +@@ -672,8 +681,58 @@ + break; + + case 'r': ++ if (str_startswith(optarg, "addin")) ++ { ++ if (addin_count >= MAX_ADDINS) ++ { ++ error("Add-ins data table full, increase MAX_ADDINS\n"); ++ return 1; ++ } ++ ++ optarg += 5; + +- if (str_startswith(optarg, "sound")) ++ if (*optarg == ':') ++ { ++ addin_name = optarg + 1; ++ if (*addin_name != '\0') ++ { ++ addin_path = next_arg(addin_name, ':'); ++ } ++ else ++ { ++ addin_path = 0; ++ } ++ if (addin_path != 0) ++ { ++ p = next_arg(addin_path, ':'); ++ } ++ if (*addin_name != '\0' && addin_path != 0 && *addin_path != '\0') ++ { ++ init_external_addin(addin_name, addin_path, ++ p, &addin_data[addin_count]); ++ if (addin_data[addin_count].pid != 0) ++ { ++ addin_count++; ++ } ++ else ++ { ++ error("Failed to initialise add-in [%s]\n", addin_name); ++ return 1; ++ } ++ } ++ else ++ { ++ usage(argv[0]); ++ return(1); ++ } ++ } ++ else ++ { ++ usage(argv[0]); ++ return(1); ++ } ++ } ++ else if (str_startswith(optarg, "sound")) + { + optarg += 5; + +@@ -982,6 +1041,17 @@ + cache_save_state(); + ui_deinit(); + ++ /* Send a SIGUSR1 to all addins to close and sleep for a couple of secs ++ to give them a chance to stop */ ++ for (c = 0; c < addin_count; c++) ++ { ++ if (addin_data[c].pid != 0) ++ { ++ kill(addin_data[c].pid,SIGUSR1); ++ sleep(2); ++ } ++ } ++ + if (ext_disc_reason >= 2) + print_disconnect_reason(ext_disc_reason); + +@@ -1625,3 +1695,105 @@ + return False; + return True; + } ++ ++/* Initialise external addin */ ++void init_external_addin(char * addin_name, char * addin_path, char * args, ADDIN_DATA * addin_data) ++{ ++ char *p; ++ char *current_arg; ++ char * argv[256]; ++ char argv_buffer[256][256]; ++ int i; ++ int readpipe[2],writepipe[2]; ++ pid_t child; ++ ++ /* Initialise addin structure */ ++ memset(addin_data, 0, sizeof(ADDIN_DATA)); ++ /* Go through the list of args, adding each to argv */ ++ argv[0] = addin_path; ++ i = 1; ++ p=current_arg=args; ++ while (current_arg != 0 && current_arg[0] != '\0') ++ { ++ p=next_arg(p, ':');; ++ if (p != 0 && *p != '\0') ++ *(p - 1) = '\0'; ++ strcpy(argv_buffer[i], current_arg); ++ argv[i]=argv_buffer[i]; ++ i++; ++ current_arg=p; ++ } ++ argv[i] = NULL; ++ ++ ++ /* Create pipes */ ++ if (pipe(readpipe) < 0 || pipe(writepipe) < 0) ++ { ++ perror("pipes for addin"); ++ return; ++ } ++ ++ /* Fork process */ ++ if ((child = fork()) < 0) ++ { ++ perror("fork for addin"); ++ return; ++ } ++ ++ /* Child */ ++ if (child == 0) ++ { ++ /* Set stdin and stdout of child to relevant pipe ends */ ++ dup2(writepipe[0],0); ++ dup2(readpipe[1],1); ++ ++ /* Close all fds as they are not needed now */ ++ close(readpipe[0]); ++ close(readpipe[1]); ++ close(writepipe[0]); ++ close(writepipe[1]); ++ execvp((char *)argv[0], (char **)argv); ++ perror("Error executing child"); ++ _exit(128); ++ } ++ else ++ { ++ strcpy(addin_data->name, addin_name); ++ /* Close child end fd's */ ++ close(readpipe[1]); ++ close(writepipe[0]); ++ addin_data->pipe_read=readpipe[0]; ++ addin_data->pipe_write=writepipe[1]; ++ addin_data->vchannel=channel_register(addin_name, ++ CHANNEL_OPTION_INITIALIZED | ++ CHANNEL_OPTION_ENCRYPT_RDP | ++ CHANNEL_OPTION_COMPRESS_RDP, ++ addin_callback); ++ if (!addin_data->vchannel) ++ { ++ perror("Channel register failed"); ++ return; ++ } ++ else ++ addin_data->pid=child; ++ ++ } ++ ++} ++ ++/* Find an external add-in registration by virtual channel name */ ++void lookup_addin(char *name, pid_t * pid, int * pipe_read, int * pipe_write) ++{ ++ int i; ++ ++ *pid = 0; ++ ++ for (i = 0; i < addin_count; i++) { ++ if (!strcmp(name,addin_data[i].name)) { ++ *pid=addin_data[i].pid; ++ *pipe_read=addin_data[i].pipe_read; ++ *pipe_write=addin_data[i].pipe_write; ++ break; ++ } ++ } ++} +diff -ur rdesktop-1.6.0-orig/rdesktop.h rdesktop-1.6.0/rdesktop.h +--- rdesktop-1.6.0-orig/rdesktop.h 2008-04-05 08:54:10.000000000 +0400 ++++ rdesktop-1.6.0/rdesktop.h 2008-12-05 18:42:40.000000000 +0300 +@@ -41,6 +41,8 @@ + + #define VERSION "1.6.0" + ++#define MAX_ADDINS 20 ++ + #ifdef WITH_DEBUG + #define DEBUG(args) printf args; + #else +diff -ur rdesktop-1.6.0-orig/rdpdr.c rdesktop-1.6.0/rdpdr.c +--- rdesktop-1.6.0-orig/rdpdr.c 2008-02-14 14:37:17.000000000 +0300 ++++ rdesktop-1.6.0/rdpdr.c 2008-12-05 18:42:40.000000000 +0300 +@@ -781,7 +781,7 @@ + } + + static void +-rdpdr_process(STREAM s) ++rdpdr_process(STREAM s, char *name) + { + uint32 handle; + uint8 *magic; +diff -ur rdesktop-1.6.0-orig/rdpsnd.c rdesktop-1.6.0/rdpsnd.c +--- rdesktop-1.6.0-orig/rdpsnd.c 2008-02-14 14:37:17.000000000 +0300 ++++ rdesktop-1.6.0/rdpsnd.c 2008-12-05 18:42:40.000000000 +0300 +@@ -544,7 +544,7 @@ + } + + static void +-rdpsnd_process(STREAM s) ++rdpsnd_process(STREAM s, char *name) + { + uint16 len; + +@@ -611,7 +611,7 @@ + } + + static void +-rdpsnddbg_process(STREAM s) ++rdpsnddbg_process(STREAM s, char *name) + { + unsigned int pkglen; + static char *rest = NULL; +diff -ur rdesktop-1.6.0-orig/seamless.c rdesktop-1.6.0/seamless.c +--- rdesktop-1.6.0-orig/seamless.c 2008-04-02 15:13:22.000000000 +0400 ++++ rdesktop-1.6.0/seamless.c 2008-12-05 18:42:40.000000000 +0300 +@@ -370,7 +370,7 @@ + + + static void +-seamless_process(STREAM s) ++seamless_process(STREAM s, char *name) + { + unsigned int pkglen; + static char *rest = NULL; +Only in rdesktop-1.6.0: .svn +diff -ur rdesktop-1.6.0-orig/types.h rdesktop-1.6.0/types.h +--- rdesktop-1.6.0-orig/types.h 2007-01-08 07:47:06.000000000 +0300 ++++ rdesktop-1.6.0/types.h 2008-12-05 18:42:40.000000000 +0300 +@@ -125,7 +125,7 @@ + char name[8]; + uint32 flags; + struct stream in; +- void (*process) (STREAM); ++ void (*process) (STREAM,char *); + } + VCHANNEL; + +@@ -265,4 +265,15 @@ + } + FILEINFO; + ++typedef struct _ADDIN_DATA ++{ ++ char name[255]; ++ unsigned char *buf; ++ unsigned int buf_len; ++ pid_t pid; ++ int pipe_read; ++ int pipe_write; ++ VCHANNEL *vchannel; ++} ADDIN_DATA; ++ + typedef RD_BOOL(*str_handle_lines_t) (const char *line, void *data); +diff -ur rdesktop-1.6.0-orig/xwin.c rdesktop-1.6.0/xwin.c +--- rdesktop-1.6.0-orig/xwin.c 2008-05-11 10:14:38.000000000 +0400 ++++ rdesktop-1.6.0/xwin.c 2008-12-05 18:42:40.000000000 +0300 +@@ -2620,6 +2620,9 @@ + rdpdr_add_fds(&n, &rfds, &wfds, &tv, &s_timeout); + seamless_select_timeout(&tv); + ++ /* add addins handles */ ++ addin_add_fds(&n, &rfds, &wfds, &tv); ++ + n++; + + switch (select(n, &rfds, &wfds, NULL, &tv)) +@@ -2642,6 +2645,8 @@ + rdpsnd_check_fds(&rfds, &wfds); + #endif + ++ addin_check_fds(&rfds, &wfds); ++ + rdpdr_check_fds(&rfds, &wfds, (RD_BOOL) False); + + if (FD_ISSET(rdp_socket, &rfds)) diff --git a/recipes/rdesktop/rdesktop.inc b/recipes/rdesktop/rdesktop.inc index 4c832cae3f..8f2d587b53 100644 --- a/recipes/rdesktop/rdesktop.inc +++ b/recipes/rdesktop/rdesktop.inc @@ -4,4 +4,6 @@ DEPENDS = "virtual/libx11 openssl" SECTION = "x11/network" LICENSE = "GPL" +INC_PR = "r2" + SRC_URI = "${SOURCEFORGE_MIRROR}/rdesktop/rdesktop-${PV}.tar.gz" diff --git a/recipes/rdesktop/rdesktop_1.3.1.bb b/recipes/rdesktop/rdesktop_1.3.1.bb index d50a0c1e8c..ffb36d22a5 100644 --- a/recipes/rdesktop/rdesktop_1.3.1.bb +++ b/recipes/rdesktop/rdesktop_1.3.1.bb @@ -1,5 +1,7 @@ require rdesktop.inc +PR = "${INC_PR}.1" + SRC_URI +="file://configure.patch;patch=1" # Note - rdesktop 1.3.1 doesn't use autotools - don't make the same diff --git a/recipes/rdesktop/rdesktop_1.4.1.bb b/recipes/rdesktop/rdesktop_1.4.1.bb index 8682c8ee98..99200c6f10 100644 --- a/recipes/rdesktop/rdesktop_1.4.1.bb +++ b/recipes/rdesktop/rdesktop_1.4.1.bb @@ -1,6 +1,6 @@ require rdesktop.inc -PR = "r1" +PR = "${INC_PR}.1" SRC_URI += "file://strip.patch;patch=1" diff --git a/recipes/rdesktop/rdesktop_1.5.0.bb b/recipes/rdesktop/rdesktop_1.5.0.bb index d652dfe633..c492afa0b2 100644 --- a/recipes/rdesktop/rdesktop_1.5.0.bb +++ b/recipes/rdesktop/rdesktop_1.5.0.bb @@ -1,6 +1,6 @@ require rdesktop.inc -PR = "r0" +PR = "${INC_PR}.1" inherit autotools diff --git a/recipes/rdesktop/rdesktop_1.6.0.bb b/recipes/rdesktop/rdesktop_1.6.0.bb index d652dfe633..0f39e784cf 100644 --- a/recipes/rdesktop/rdesktop_1.6.0.bb +++ b/recipes/rdesktop/rdesktop_1.6.0.bb @@ -1,6 +1,11 @@ require rdesktop.inc -PR = "r0" +PR = "${INC_PR}.2" + +SRC_URI += " file://audio-2008.patch;patch=1" +SRC_URI_append_ossystems = " file://rdesktop-addin.patch;patch=1" + +SRC_URI += " file://audio-2008.patch;patch=1" inherit autotools diff --git a/recipes/rdesktop/rdesktop_cvs.bb b/recipes/rdesktop/rdesktop_cvs.bb index 0b76ee7535..496b6defa8 100644 --- a/recipes/rdesktop/rdesktop_cvs.bb +++ b/recipes/rdesktop/rdesktop_cvs.bb @@ -1,7 +1,7 @@ require rdesktop.inc PV = "1.6.0+cvs${SRCDATE}" -PR = "r0" +PR = "${INC_PR}.1" DEFAULT_PREFERENCE = "-1" SRC_URI = "cvs://anonymous@rdesktop.cvs.sourceforge.net/cvsroot/rdesktop;module=rdesktop" S = "${WORKDIR}/rdesktop" @@ -9,4 +9,3 @@ S = "${WORKDIR}/rdesktop" inherit autotools EXTRA_OECONF = "--with-openssl=${STAGING_LIBDIR}/.. " - diff --git a/recipes/skype/skype-static_2.0.0.72.bb b/recipes/skype/skype-static_2.0.0.72.bb new file mode 100644 index 0000000000..4bf4de3da7 --- /dev/null +++ b/recipes/skype/skype-static_2.0.0.72.bb @@ -0,0 +1,4 @@ +include skype_${PV}.bb + +SRC_URI = "http://download.skype.com/linux/skype_static-2.0.0.72.tar.bz2" +S="${WORKDIR}/skype_static-${PV}" diff --git a/recipes/skype/skype_2.0.0.72.bb b/recipes/skype/skype_2.0.0.72.bb new file mode 100644 index 0000000000..f545571877 --- /dev/null +++ b/recipes/skype/skype_2.0.0.72.bb @@ -0,0 +1,20 @@ +DEPENDS = "virtual/libx11 qt4-x11-free glibc-gconv-utf-16" +HOMEPAGE="www.skype.com" +SRC_URI = "http://download.skype.com/linux/skype-2.0.0.72.tar.bz2" + +S="${WORKDIR}/${PN}-${PV}" + +do_install() { + install -d ${D}/usr/bin + cp skype ${D}/usr/bin/ + + install -d ${D}/usr/share/skype + cp -r sounds lang avatars ${D}/usr/share/skype + + install -d ${D}/usr/share/pixmaps + cp -r icons/SkypeBlue_48x48.png ${D}/usr/share/pixmaps/skype.png +} + +FILES_${PN} += "${datadir}/skype" + +COMPATIBLE_HOST = "i.86.*-linux" |