Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Jun 2013 13:03:33 GMT
From:      Manuel <manuel.creach@icloud.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/179331: [PATCH] multimedia/libcec Update to 2.1.3
Message-ID:  <201306051303.r55D3XG8057863@oldred.freebsd.org>
Resent-Message-ID: <201306051310.r55DA138037387@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         179331
>Category:       ports
>Synopsis:       [PATCH] multimedia/libcec Update to 2.1.3
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 05 13:10:01 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Manuel
>Release:        
>Organization:
>Environment:
>Description:
Update for multimedia/libcec to version 2.1.3

Added the new patch for device detection by Mickael Maillot and added a message as he suggested (see PR: ports/177391)
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -Naur libcec.orig/Makefile libcec/Makefile
--- libcec.orig/Makefile	2013-04-23 16:20:25.000000000 +0200
+++ libcec/Makefile	2013-06-05 12:29:17.000000000 +0200
@@ -2,7 +2,7 @@
 # $FreeBSD: multimedia/libcec/Makefile 316355 2013-04-23 14:20:25Z bapt $
 
 PORTNAME=	libcec
-PORTVERSION=	2.0.4
+PORTVERSION=	2.1.3
 CATEGORIES=	multimedia
 
 MAINTAINER=	manuel.creach@icloud.com
@@ -13,7 +13,7 @@
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	Pulse-Eight
-GH_COMMIT=	178d498
+GH_COMMIT=	54be21e
 GH_TAGNAME=	${PORTNAME}-${PORTVERSION}
 
 USES=		pkgconfig
diff -Naur libcec.orig/distinfo libcec/distinfo
--- libcec.orig/distinfo	2012-12-04 18:14:34.000000000 +0100
+++ libcec/distinfo	2013-06-05 12:27:25.000000000 +0200
@@ -1,2 +1,2 @@
-SHA256 (libcec-2.0.4.tar.gz) = 652f8bddf8629eb4d14c93bc97efbeb7406482f69626302c8489df8e1fd8431f
-SIZE (libcec-2.0.4.tar.gz) = 1075334
+SHA256 (libcec-2.1.3.tar.gz) = 2aa88451b528184b02077ee8c6cd10e2f89121a6a05b1b35b4b792b03108a9d1
+SIZE (libcec-2.1.3.tar.gz) = 1087121
diff -Naur libcec.orig/files/patch-src__lib__adapter__Pulse-Eight__USBCECAdapterDetection.cpp libcec/files/patch-src__lib__adapter__Pulse-Eight__USBCECAdapterDetection.cpp
--- libcec.orig/files/patch-src__lib__adapter__Pulse-Eight__USBCECAdapterDetection.cpp	2012-12-04 18:14:34.000000000 +0100
+++ libcec/files/patch-src__lib__adapter__Pulse-Eight__USBCECAdapterDetection.cpp	2013-06-05 12:25:40.000000000 +0200
@@ -1,11 +1,93 @@
---- ./src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp.orig	2012-10-17 11:35:39.000000000 +0200
-+++ ./src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp	2012-10-17 11:35:52.000000000 +0200
-@@ -427,8 +427,6 @@
-   for (i = 0; i < 8; ++i)
+diff --git src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp
+index 35ba386..dc1c79b 100644
+--- src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp
++++ src/lib/adapter/Pulse-Eight/USBCECAdapterDetection.cpp
+@@ -63,6 +63,8 @@ extern "C" {
+ #elif defined(__FreeBSD__)
+ #include <stdio.h>
+ #include <unistd.h>
++#include <sys/types.h>
++#include <sys/sysctl.h>
+ #endif
+ 
+ #define CEC_VID  0x2548
+@@ -434,22 +436,68 @@ uint8_t CUSBCECAdapterDetection::FindAdapters(cec_adapter_descriptor *deviceList
+   }
+ #elif defined(__FreeBSD__)
+   char devicePath[PATH_MAX + 1];
++  char infos[512];
++  char sysctlname[32];
++  char ttyname[8];
++  char *pos;
++  size_t infos_size = sizeof(infos);
+   int i;
+ 
+-  for (i = 0; i < 8; ++i)
++  for (i = 0; ; ++i)
    {
-     (void)snprintf(devicePath, sizeof(devicePath), "/dev/ttyU%d", i);
+-    (void)snprintf(devicePath, sizeof(devicePath), "/dev/ttyU%d", i);
 -    if (strDevicePath && strcmp(devicePath, strDevicePath) != 0)
--      continue;
-     if (!access(devicePath, 0))
-     {
-       snprintf(deviceList[iFound].path, sizeof(deviceList[iFound].path), "%s", devicePath);
++    memset(infos, 0, sizeof(infos));
++    (void)snprintf(sysctlname, sizeof(sysctlname),
++      "dev.umodem.%d.%%pnpinfo", i);
++    if (sysctlbyname(sysctlname, infos, &infos_size,
++      NULL, 0) != 0)
++        break;
++    if (strstr(infos, "vendor=0x2548") == NULL)
+       continue;
+-    if (!access(devicePath, 0))
+-    {
+-      snprintf(deviceList[iFound].strComPath, sizeof(deviceList[iFound].strComPath), "%s", devicePath);
+-      snprintf(deviceList[iFound].strComName, sizeof(deviceList[iFound].strComName), "%s", devicePath);
+-      deviceList[iFound].iVendorId = CEC_VID;
+-      deviceList[iFound].iProductId = CEC_VID;
+-      deviceList[iFound].adapterType = ADAPTERTYPE_P8_EXTERNAL; // will be overridden when not doing a "quick scan" by the actual type
+-      iFound++;
++    if (strstr(infos, "product=0x1001") == NULL
++    && strstr(infos, "product=0x1002") == NULL)
++      continue;
++    pos = strstr(infos, "ttyname=");
++    if (pos == NULL)
++      continue;
++    sscanf(pos, "ttyname=%s ", ttyname);
++
++    (void)snprintf(devicePath, sizeof(devicePath),
++      "/dev/tty%s", ttyname);
++
++    if (strDevicePath) {
++      char currStrDevicePath[512];
++      int port = 0;
++      int devaddr = 0;
++      memset(currStrDevicePath, 0, sizeof(currStrDevicePath));
++      memset(infos, 0, sizeof(infos));
++      (void)snprintf(sysctlname, sizeof(sysctlname),
++        "dev.umodem.%d.%%location", i);
++      if (sysctlbyname(sysctlname, infos, &infos_size,
++        NULL, 0) != 0)
++          break;
++
++      pos = strstr(infos, "port=");
++      if (pos == NULL)
++        continue;
++      sscanf(pos, "port=%d ", &port);
++
++      pos = strstr(infos, "devaddr=");
++      if (pos == NULL)
++        continue;
++      sscanf(pos, "devaddr=%d ", &devaddr);
++
++      (void)snprintf(currStrDevicePath, sizeof(currStrDevicePath),
++        "/dev/ugen%d.%d", port, devaddr);
++
++      if (strcmp(currStrDevicePath, strDevicePath) != 0)
++        continue;
+     }
++    snprintf(deviceList[iFound].strComPath, sizeof(deviceList[iFound].strComPath), "%s", devicePath);
++    snprintf(deviceList[iFound].strComName, sizeof(deviceList[iFound].strComName), "%s", devicePath);
++    deviceList[iFound].iVendorId = CEC_VID;
++    deviceList[iFound].iProductId = CEC_VID;
++    deviceList[iFound].adapterType = ADAPTERTYPE_P8_EXTERNAL; // will be overridden when not doing a "quick scan" by the actual type
++    iFound++;
+   }
+ #else
+   //silence "unused" warnings
\ No newline at end of file
diff -Naur libcec.orig/pkg-message libcec/pkg-message
--- libcec.orig/pkg-message	1970-01-01 01:00:00.000000000 +0100
+++ libcec/pkg-message	2013-06-05 12:44:21.000000000 +0200
@@ -0,0 +1,8 @@
+WARNING:
+
+You need write permissions on the USB device to make it work properly.
+Consider adding a rule in /etc/devfs.rules like this one :
+
+[system=10]
+add path 'ttyU*' mode 0660 group operator 
+


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306051303.r55D3XG8057863>