[arch-commits] Commit in hplip/trunk (PKGBUILD cups-1.6-buildfix.diff)

andyrtr at archlinux.org andyrtr at archlinux.org
Sat Sep 8 12:03:11 UTC 2012


    Date: Saturday, September 8, 2012 @ 08:03:10
  Author: andyrtr
Revision: 166497

upgpkg: hplip 3.12.9-1

upstream update 3.12.9

Added:
  hplip/trunk/cups-1.6-buildfix.diff
Modified:
  hplip/trunk/PKGBUILD

------------------------+
 PKGBUILD               |   18 +-
 cups-1.6-buildfix.diff |  392 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 404 insertions(+), 6 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-09-08 11:35:07 UTC (rev 166496)
+++ PKGBUILD	2012-09-08 12:03:10 UTC (rev 166497)
@@ -4,8 +4,8 @@
 # Contributor: Morgan LEFIEUX <comete at archlinuxfr.org>
 
 pkgname=hplip
-pkgver=3.12.6
-pkgrel=3
+pkgver=3.12.9
+pkgrel=1
 pkgdesc="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet"
 arch=('i686' 'x86_64')
 url="http://hplipopensource.com"
@@ -25,16 +25,22 @@
             'libusbx: for advanced usb support')
 options=('!libtool')
 install=hplip.install
-source=(http://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz{,.asc})
-md5sums=('5303938e8630775ea6fb383af85775e5'
-         'b562457e4c713d8609b3d6dd2be10baf')
+source=(http://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz{,.asc}
+        cups-1.6-buildfix.diff)
+md5sums=('843a089fb4f113e6a65312094aeab8aa'
+         '9b8595e9480db11e6acf1aff0ec978b1'
+         'ef64578c6cb3ce252dbdcb0f1c2f4a47')
 
 build() {
  cd "$srcdir/$pkgname-$pkgver"
+
+ # fix build with cups 1.6 - FC hplip-ipp-accessors.patch
+ patch -Np1 -i ${srcdir}/cups-1.6-buildfix.diff
+ 
  export PYTHON=python2
  
  find . -type f -exec sed -i 's~^#.*env python~#!/usr/bin/env python2~' {} +
- sed -i '1s|#!/usr/bin/python|#!/usr/bin/python2|' setup.py makeuri.py base/magic.py
+ sed -i '1s|#!/usr/bin/python|#!/usr/bin/python2|' setup.py makeuri.py logcapture.py base/magic.py
  sed -i '1s|#!/usr/bin/python|#!/usr/bin/python2|' ui/upgradeform.py uninstall.py upgrade.py config_usb_printer.py
  sed -i 's|python ./print.py|python2 ./print.py|' scan.py
  sed -i 's|python ./testpage.py|python2 ./testpage.py|' setup.py

Added: cups-1.6-buildfix.diff
===================================================================
--- cups-1.6-buildfix.diff	                        (rev 0)
+++ cups-1.6-buildfix.diff	2012-09-08 12:03:10 UTC (rev 166497)
@@ -0,0 +1,392 @@
+diff -up hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors hplip-3.12.6/prnt/cupsext/cupsext.c
+--- hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors	2012-06-18 12:41:19.000000000 +0200
++++ hplip-3.12.6/prnt/cupsext/cupsext.c	2012-07-19 17:11:47.606524137 +0200
+@@ -87,6 +87,46 @@ typedef int Py_ssize_t;
+ #define PY_SSIZE_T_MIN INT_MIN
+ #endif
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetCount(attr)     attr->num_values
++#define ippGetGroupTag(attr)  attr->group_tag
++#define ippGetValueTag(attr)  attr->value_tag
++#define ippGetName(attr)      attr->name
++#define ippGetBoolean(attr, element) attr->values[element].boolean
++#define ippGetInteger(attr, element) attr->values[element].integer
++#define ippGetStatusCode(ipp) ipp->request.status.status_code
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )
++{
++    if (!ipp)
++        return (NULL);
++    return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )
++{
++    if (!ipp || !ipp->current)
++        return (NULL);
++    return (ipp->current = ipp->current->next);
++}
++
++static int ippSetOperation( ipp_t *ipp, ipp_op_t op )
++{
++    ipp->request.op.operation_id = op;
++    return (1);
++}
++
++static int ippSetRequestId( ipp_t *ipp, int request_id )
++{
++    ipp->request.any.request_id = request_id;
++    return (1);
++}
++#endif
+ 
+ int g_num_options = 0;
+ cups_option_t * g_options;
+@@ -333,8 +373,8 @@ PyObject * getPrinters( PyObject * self,
+     request = ippNew();
+     language = cupsLangDefault();
+ 
+-    request->request.op.operation_id = CUPS_GET_PRINTERS;
+-    request->request.any.request_id = 1;
++    ippSetOperation( request, CUPS_GET_PRINTERS );
++    ippSetRequestId ( request, 1);
+ 
+     ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
+                   "attributes-charset", NULL, cupsLangEncoding( language ) );
+@@ -378,10 +418,10 @@ PyObject * getPrinters( PyObject * self,
+         ipp_pstate_t state;
+         int i = 0;
+ 
+-        for ( attr = response->attrs; attr != NULL; attr = attr->next )
++        for ( attr = ippFirstAttribute( response ); attr != NULL; attr = ippNextAttribute( response ) )
+         {
+-            while ( attr != NULL && attr->group_tag != IPP_TAG_PRINTER )
+-                attr = attr->next;
++            while ( attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER )
++                attr = ippNextAttribute( response );
+ 
+             if ( attr == NULL )
+                 break;
+@@ -390,41 +430,41 @@ PyObject * getPrinters( PyObject * self,
+             state = IPP_PRINTER_IDLE;
+             accepting = 0;
+ 
+-            while ( attr != NULL && attr->group_tag == IPP_TAG_PRINTER )
++            while ( attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER )
+             {
+-                if ( strcmp( attr->name, "printer-name" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_NAME )
+-                    name = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "device-uri" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_URI )
+-                    device_uri = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "printer-uri-supported" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_URI )
+-                    printer_uri = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "printer-info" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_TEXT )
+-                    info = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "printer-location" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_TEXT )
+-                    location = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "printer-make-and-model" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_TEXT )
+-                    make_model = attr->values[ 0 ].string.text;
+-
+-                else if ( strcmp( attr->name, "printer-state" ) == 0 &&
+-                        attr->value_tag == IPP_TAG_ENUM )
+-                    state = ( ipp_pstate_t ) attr->values[ 0 ].integer;
+-
+-                else if (!strcmp(attr->name, "printer-is-accepting-jobs") &&
+-                        attr->value_tag == IPP_TAG_BOOLEAN)
+-                    accepting = attr->values[ 0 ].boolean;
++                if ( strcmp( ippGetName( attr ), "printer-name" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_NAME )
++                    name = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "device-uri" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_URI )
++                    device_uri = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "printer-uri-supported" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_URI )
++                    printer_uri = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "printer-info" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )
++                    info = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "printer-location" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )
++                    location = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "printer-make-and-model" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )
++                    make_model = ippGetString( attr, 0, NULL );
++
++                else if ( strcmp( ippGetName( attr ), "printer-state" ) == 0 &&
++                        ippGetValueTag( attr ) == IPP_TAG_ENUM )
++                    state = ( ipp_pstate_t ) ippGetInteger( attr, 0 );
++
++                else if (!strcmp(ippGetName( attr ), "printer-is-accepting-jobs") &&
++                        ippGetValueTag( attr ) == IPP_TAG_BOOLEAN)
++                    accepting = ippGetBoolean( attr, 0 );
+ 
+-                attr = attr->next;
++                attr = ippNextAttribute( response );
+             }
+ 
+             if ( device_uri == NULL )
+@@ -522,8 +562,8 @@ PyObject * addPrinter( PyObject * self,
+     request = ippNew();
+     language = cupsLangDefault();
+ 
+-    request->request.op.operation_id = CUPS_ADD_PRINTER;
+-    request->request.any.request_id = 1;
++    ippSetOperation( request, CUPS_ADD_PRINTER );
++    ippSetRequestId ( request, 1 );
+ 
+     ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
+                   "attributes-charset", NULL, cupsLangEncoding( language ) );
+@@ -568,7 +608,7 @@ PyObject * addPrinter( PyObject * self,
+     }
+     else
+     {
+-        status = response->request.status.status_code;
++        status = ippGetStatusCode( response );
+         //ippDelete( response );
+         r = 1;
+     }
+@@ -631,8 +671,8 @@ PyObject * delPrinter( PyObject * self,
+        */
+     request = ippNew();
+ 
+-    request->request.op.operation_id = CUPS_DELETE_PRINTER;
+-    request->request.op.request_id = 1;
++    ippSetOperation( request, CUPS_DELETE_PRINTER );
++    ippSetRequestId ( request, 1 );
+ 
+     language = cupsLangDefault();
+ 
+@@ -650,7 +690,7 @@ PyObject * delPrinter( PyObject * self,
+      */
+     response = cupsDoRequest( http, request, "/admin/" );
+ 
+-    if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )
++    if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )
+     {
+         r = 1;
+     }
+@@ -721,8 +761,8 @@ PyObject * setDefaultPrinter( PyObject *
+ 
+     request = ippNew();
+ 
+-    request->request.op.operation_id = CUPS_SET_DEFAULT;
+-    request->request.op.request_id = 1;
++    ippSetOperation( request, CUPS_SET_DEFAULT );
++    ippSetRequestId ( request, 1 );
+ 
+     language = cupsLangDefault();
+ 
+@@ -743,7 +783,7 @@ PyObject * setDefaultPrinter( PyObject *
+ 
+     response = cupsDoRequest( http, request, "/admin/" );
+ 
+-    if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )
++    if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )
+     {
+         r = 1;
+     }
+@@ -797,8 +837,8 @@ PyObject * controlPrinter( PyObject * se
+ 
+     request = ippNew();
+ 
+-    request->request.op.operation_id = op;
+-    request->request.op.request_id = 1;
++    ippSetOperation( request, op );
++    ippSetRequestId ( request, 1 );
+ 
+     language = cupsLangDefault();
+ 
+@@ -822,7 +862,7 @@ PyObject * controlPrinter( PyObject * se
+ 
+     response = cupsDoRequest(http, request, "/admin/");
+ 
+-    if (( response != NULL ) && (response->request.status.status_code <= IPP_OK_CONFLICT))
++    if (( response != NULL ) && (ippGetStatusCode( response ) <= IPP_OK_CONFLICT))
+     {
+         r = 1;
+     }
+@@ -837,7 +877,7 @@ abort:
+     if ( response != NULL )
+         ippDelete( response );
+ 
+-    return Py_BuildValue( "i", r );;
++    return Py_BuildValue( "i", r );
+ }
+ 
+ 
+@@ -1116,8 +1156,8 @@ PyObject * getPPDList( PyObject * self,
+ 
+     request = ippNew();
+ 
+-    request->request.op.operation_id = CUPS_GET_PPDS;
+-    request->request.op.request_id   = 1;
++    ippSetOperation( request, CUPS_GET_PPDS );
++    ippSetRequestId ( request, 1 );
+ 
+     language = cupsLangDefault();
+ 
+@@ -1143,43 +1183,43 @@ PyObject * getPPDList( PyObject * self,
+     if ((response = cupsDoRequest(http, request, "/")) != NULL)
+     {
+ 
+-        for (attr = response->attrs; attr; attr = attr->next)
++        for (attr = ippFirstAttribute( response ); attr; attr = ippNextAttribute( response ))
+         {
+             PyObject *dict;
+             char *ppdname = NULL;
+ 
+-            while (attr && attr->group_tag != IPP_TAG_PRINTER)
+-                attr = attr->next;
++            while (attr && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
++                attr = ippNextAttribute( response );
+ 
+             if (!attr)
+                 break;
+ 
+             dict = PyDict_New ();
+ 
+-            for (; attr && attr->group_tag == IPP_TAG_PRINTER; attr = attr->next)
++            for (; attr && ippGetGroupTag( attr ) == IPP_TAG_PRINTER; attr = ippNextAttribute( response ))
+             {
+                 PyObject *val = NULL;
+ 
+-                if (!strcmp (attr->name, "ppd-name") && attr->value_tag == IPP_TAG_NAME)
++                if (!strcmp (ippGetName( attr ), "ppd-name") && ippGetValueTag( attr ) == IPP_TAG_NAME)
+                 {
+-                    ppdname = attr->values[0].string.text;
++                    ppdname = ippGetString( attr, 0, NULL );
+ 
+                     //sprintf( buf, "print '%s'", ppdname);
+                     //PyRun_SimpleString( buf );
+                 }
+ 
+-                else if (attr->value_tag == IPP_TAG_TEXT || attr->value_tag == IPP_TAG_NAME || attr->value_tag == IPP_TAG_KEYWORD)
+-                //else if ((!strcmp (attr->name, "ppd-natural-language") && attr->value_tag == IPP_TAG_LANGUAGE) ||
+-                //    (!strcmp (attr->name, "ppd-make-and-model") && attr->value_tag == IPP_TAG_TEXT) ||
+-                //    (!strcmp (attr->name, "ppd-make") && attr->value_tag == IPP_TAG_TEXT) ||
+-                //    (!strcmp (attr->name, "ppd-device-id") && attr->value_tag == IPP_TAG_TEXT))
++                else if (ippGetValueTag( attr ) == IPP_TAG_TEXT || ippGetValueTag( attr ) == IPP_TAG_NAME || ippGetValueTag( attr ) == IPP_TAG_KEYWORD)
++                //else if ((!strcmp (ippGetName( attr ), "ppd-natural-language") && ippGetValueTag( attr ) == IPP_TAG_LANGUAGE) ||
++                //    (!strcmp (ippGetName( attr ), "ppd-make-and-model") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||
++                //    (!strcmp (ippGetName( attr ), "ppd-make") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||
++                //    (!strcmp (ippGetName( attr ), "ppd-device-id") && ippGetValueTag( attr ) == IPP_TAG_TEXT))
+                 {
+-                    val = PyObj_from_UTF8(attr->values[0].string.text);
++                    val = PyObj_from_UTF8(ippGetString( attr, 0, NULL ));
+                 }
+ 
+                 if (val)
+                 {
+-                    PyDict_SetItemString (dict, attr->name, val);
++                    PyDict_SetItemString (dict, ippGetName( attr ), val);
+                     Py_DECREF (val);
+                 }
+             }
+diff -up hplip-3.12.6/scan/sane/hpaio.c.ipp_accessors hplip-3.12.6/scan/sane/hpaio.c
+--- hplip-3.12.6/scan/sane/hpaio.c.ipp_accessors	2012-06-18 12:42:51.000000000 +0200
++++ hplip-3.12.6/scan/sane/hpaio.c	2012-07-19 17:12:34.557848760 +0200
+@@ -47,6 +47,43 @@
+ #define DEBUG_DECLARE_ONLY
+ #include "sanei_debug.h"
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetGroupTag(attr)  attr->group_tag
++#define ippGetValueTag(attr)  attr->value_tag
++#define ippGetName(attr)      attr->name
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )
++{
++    if (!ipp)
++        return (NULL);
++    return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )
++{
++    if (!ipp || !ipp->current)
++        return (NULL);
++    return (ipp->current = ipp->current->next);
++}
++
++static int ippSetOperation( ipp_t *ipp, ipp_op_t op )
++{
++    ipp->request.op.operation_id = op;
++    return (1);
++}
++
++static int ippSetRequestId( ipp_t *ipp, int request_id )
++{
++    ipp->request.any.request_id = request_id;
++    return (1);
++}
++#endif
++
+ static SANE_Device **DeviceList = NULL;
+ 
+ static int AddDeviceList(char *uri, char *model, SANE_Device ***pd)
+@@ -186,8 +223,8 @@ static int GetCupsPrinters(char ***print
+    /* Assemble the IPP request */
+    request = ippNew();
+ 
+-   request->request.op.operation_id = CUPS_GET_PRINTERS;
+-   request->request.any.request_id  = 1;
++   ippSetOperation( request, CUPS_GET_PRINTERS );
++   ippSetRequestId( request, 1 );
+ 
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8");
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en");
+@@ -197,20 +234,20 @@ static int GetCupsPrinters(char ***print
+    if ((response = cupsDoRequest(http, request, "/")) == NULL)
+       goto bugout;
+ 
+-   for (attr = response->attrs; attr != NULL; attr = attr->next)
++   for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response ))
+    {
+       /* Skip leading attributes until we hit a printer. */
+-      while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
+-         attr = attr->next;
++      while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
++         attr = ippNextAttribute( response );
+ 
+       if (attr == NULL)
+          break;
+ 
+-      while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
++      while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER)
+       {
+-         if (strcmp(attr->name, "device-uri") == 0 && attr->value_tag == IPP_TAG_URI && AddCupsList(attr->values[0].string.text, printer) == 0)
++         if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0)
+             cnt++;
+-         attr = attr->next;
++         attr = ippNextAttribute( response );
+       }
+ 
+       if (attr == NULL)




More information about the arch-commits mailing list