diff options
-rw-r--r-- | hpoj/PKGBUILD | 58 | ||||
-rw-r--r-- | hpoj/hpoj-gcc4.patch | 194 | ||||
-rw-r--r-- | hpoj/hpoj-kernel26.patch | 86 | ||||
-rw-r--r-- | hpoj/hpoj-pack.patch | 59 | ||||
-rw-r--r-- | hpoj/hpoj.install | 7 | ||||
-rw-r--r-- | hpoj/hpoj0.91-snmp5.5.patch | 11 | ||||
-rw-r--r-- | hpoj/hpoj_gcc43.diff | 20 |
7 files changed, 435 insertions, 0 deletions
diff --git a/hpoj/PKGBUILD b/hpoj/PKGBUILD new file mode 100644 index 00000000..c2c908c2 --- /dev/null +++ b/hpoj/PKGBUILD @@ -0,0 +1,58 @@ +# Contributer : Tobias Powalowski <tpowa@archlinux.org> +# Contributer : Wesley Merkel <ooesili@gmail.com> +# Contributor : Sapphira Armageddos <shadowkyogre.public+aur@gmail.com> +# Maintainer: Erich Eckner <arch at eckner dot net> + +pkgname=hpoj +pkgver=0.91 +pkgrel=21 +pkgdesc="Hewlett-Packard OfficeJet, PSC, LaserJet, and PhotoSmart printer multi-function peripherals (MFPs) drivers" +arch=('i686' 'x86_64') +url="http://hpoj.sourceforge.net" +license=('GPL' 'custom') +depends=('perl' 'libusb-compat' 'net-snmp' 'hplip>=1.7.2') +#makedepends=('qt3') +#optdepends=('qt3: for using xojpanel') +install=hpoj.install +source=(http://downloads.sourceforge.net/sourceforge/hpoj/$pkgname-$pkgver.tgz \ + hpoj-gcc4.patch hpoj-kernel26.patch hpoj-pack.patch \ + hpoj_gcc43.diff hpoj0.91-snmp5.5.patch) +md5sums=('0e083aeab9b00495aa433fa9465456e0' '347bb155c5dde443a93d92d8e64579a2'\ + '18481d3dcf6e9cadf0a3d196ee164e37' '1c3b99f1a2178675d56ece29daba0fd7'\ + '42bb57791cacf83e4d339e3653ad003e' 'af1cf13e95ff2654b84e470d0e18f537') +sha1sums=('36785cf1a925f569ed3983b8c068620e2c9b4456' 'cd2d37c2620e29b92b96fe779d10a6635c7f31b7'\ + 'fe3328fd7a43ec83d76d0d7fb7be6c41027cddb3' '80258e3190ffb514c20386e8a7cf70ee18df95a5'\ + '22409b96d7bc67a10384a88c6b710981c0b90078' '4827cfa319bcd74ff8956e1bc69360f319a26c6a') + +prepare() { + cd "$srcdir"/$pkgname-$pkgver + # adding various patches + patch -Np1 -i ../hpoj-gcc4.patch + patch -Np1 -i ../hpoj-kernel26.patch + patch -Np1 -i ../hpoj-pack.patch + patch -Np1 -i ../hpoj_gcc43.diff + patch -Np1 -i ../hpoj0.91-snmp5.5.patch +} + +build() { + cd "$srcdir"/$pkgname-$pkgver +# ./configure --prefix=/usr + ./configure --prefix=/usr --without-qt + make +} + +package() { + cd "$srcdir"/$pkgname-$pkgver + make prefix="$pkgdir"/usr/ sbindir="$pkgdir"/usr/bin user_install + mkdir -p "$pkgdir"/etc/rc.d + mkdir -p "$pkgdir"/usr/lib/sane + mkdir -p "$pkgdir"/usr/lib/cups/backend + install -m 644 lib/sane/libsane-hpoj.so.1.0 "$pkgdir"/usr/lib/sane + install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE + install -D -m644 LICENSE.OpenSSL $pkgdir/usr/share/licenses/$pkgname/LICENSE.OpenSSL + cd "$pkgdir"/usr/lib/sane + ln -s libsane-hpoj.so.1.0 libsane-hpoj.so + ln -s libsane-hpoj.so.1.0 libsane-hpoj.so.1 + ln -s /usr/bin/ptal-init "$pkgdir"/etc/rc.d + ln -s /usr/bin/ptal-cups "$pkgdir"/usr/lib/cups/backend/ptal +} diff --git a/hpoj/hpoj-gcc4.patch b/hpoj/hpoj-gcc4.patch new file mode 100644 index 00000000..ab1c125d --- /dev/null +++ b/hpoj/hpoj-gcc4.patch @@ -0,0 +1,194 @@ +--- hpoj-0.91/lib/hpojip/xjpg_fix.c.gcc4 2002-07-25 11:01:24.000000000 +0200 ++++ hpoj-0.91/lib/hpojip/xjpg_fix.c 2005-03-01 23:05:52.905482223 +0100 +@@ -389,7 +389,7 @@ + \*****************************************************************************/ + + +-#define MYLOCATE(p) (void *)(p)=(g->headerBuffer+lenAddedHeader) ++#define MYLOCATE(p) (p)=(typeof(p))(g->headerBuffer+lenAddedHeader) + #define MYWRITE(p) lenAddedHeader+=sizeof(*(p)) + #define MYWRITEBUF(data,datalen) \ + do { \ +--- hpoj-0.91/mlcd/ExMgr.h.gcc4 2003-11-04 02:03:18.000000000 +0100 ++++ hpoj-0.91/mlcd/ExMgr.h 2005-03-01 23:38:34.297977986 +0100 +@@ -127,8 +127,8 @@ + QueueEntry(): prev(0),next(0) { } + #ifdef JD_DEBUGLITE + void dump(void) { +- printf("QueueEntry(0x%8.8X): prev=0x%8.8X, next=0x%8.8X\n", +- (int)this,(int)prev,(int)next); ++ printf("QueueEntry(%p): prev=%p, next=%p\n", ++ this,prev,next); + } + #endif + int isEnqueued(void) { return (prev || next); } +--- hpoj-0.91/mlcd/ExMgr.cpp.gcc4 2003-11-04 02:03:18.000000000 +0100 ++++ hpoj-0.91/mlcd/ExMgr.cpp 2005-03-01 23:41:49.408864110 +0100 +@@ -248,8 +248,8 @@ + + #ifdef JD_DEBUGLITE + void ExWatchdogTimer::dump(void) { +- printf("pMsgHandler=0x%8.8X\n",(int)pMsgHandler); +- printf("pMsg=0x%8.8X\n",(int)pMsg); ++ printf("pMsgHandler=%p\n",pMsgHandler); ++ printf("pMsg=%p\n",pMsg); + printf("delay=%d seconds, %d usec\n", + (int)delay.tv_sec,(int)delay.tv_usec); + printf("cancelled=%d\n",cancelled); +@@ -1307,13 +1307,13 @@ + printf("\tstate=%d\n",session[scd].state); + printf("\tfd=%d\n",session[scd].fd); + printf("\tscdlink=%d\n",session[scd].scdlink); +- printf("\tpLookup=0x%8.8X\n",(int)session[scd].pLookup); ++ printf("\tpLookup=%p\n",session[scd].pLookup); + printf("\toutstandingForwardBdrCount=%d\n", + session[scd].outstandingForwardBdrCount); + printf("\tpReverseBdrQueue: depth=%d\n", + session[scd].pReverseBdrQueue->depth()); +- printf("\ttcd=0x%8.8X\n",(int)session[scd].tcd); +- printf("\tpCommandBdr=0x%8.8X\n",(int)session[scd].pCommandBdr); ++ printf("\ttcd=%p\n",session[scd].tcd); ++ printf("\tpCommandBdr=%p\n",session[scd].pCommandBdr); + printf("\tpmlTrapsRegistered=%d\n",session[scd].pmlTrapsRegistered); + printf("\tbitbucketSocket=%d\n",session[scd].bitbucketSocket); + +@@ -2407,8 +2407,8 @@ + } + printf("llioPossibleNameCount=%d\n",llioPossibleNameCount); + printf("llioName=<%s>\n",SAFE_STRING(llioName)); +- printf("llioGlobBuffer.gl_pathc=%d\n",llioGlobBuffer.gl_pathc); +- printf("llioGlobBuffer.gl_offs=%d\n",llioGlobBuffer.gl_offs); ++ printf("llioGlobBuffer.gl_pathc=%lu\n",(unsigned long)llioGlobBuffer.gl_pathc); ++ printf("llioGlobBuffer.gl_offs=%lu\n",(unsigned long)llioGlobBuffer.gl_offs); + printf("llioGlobFlags=%d\n",llioGlobFlags); + for (i=0;i<llioMatchDeviceIDCount;i++) { + printf("llioMatchDeviceID[%d]=<%s>\n",i, +--- hpoj-0.91/mlcd/transport/ExTransport.cpp.gcc4 2005-03-04 14:00:57.000000000 +0000 ++++ hpoj-0.91/mlcd/transport/ExTransport.cpp 2005-03-04 14:03:37.000000000 +0000 +@@ -70,6 +70,7 @@ + + #ifdef JD_DEBUGLITE + void ExLookup::dump(void) { ++#if 0 + printf("sizeof(ExLookup)=%d, this=0x%8.8X\n", + sizeof(ExLookup),(int)this); + printf("pService=0x%8.8X\n", +@@ -82,6 +83,7 @@ + lastSet); + printf("status=%d\n", + status); ++#endif + } + void ExLookup__dump(ExLookup *_this) { + return _this->dump(); +@@ -316,6 +318,7 @@ + + #ifdef JD_DEBUGLITE + void ExTransportChannel::dump(void) { ++#if 0 + printf("this=0x%8.8X\n", + (int)this); + printf("port=%d\n", +@@ -378,6 +381,7 @@ + currentGrabbedCredit); + printf("currentGrabbedTransaction=%d\n", + currentGrabbedTransaction); ++#endif + } + #endif + +@@ -922,6 +926,7 @@ + #ifdef JD_DEBUGLITE + + void ExTransport::dump(void) { ++#if 0 + int channel; + + printf("this=0x%8.8X\n", +@@ -971,6 +976,7 @@ + if (pLookupRequest) { + pLookupRequest->dump(); + } ++#endif + } + + void ExTransport::dumpall(void) { +@@ -1101,7 +1107,7 @@ + ExMsg *pMsg=pMgr->getFreeMsg(); + + pMsg->setType(eEXMSG_ACTIVATE_WAIT); +- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this); ++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this); // HACK + pMsg->send(pMgr); + } + +@@ -1248,7 +1254,7 @@ + ExMsg *pMsg=pMgr->getFreeMsg(); + + pMsg->setType(eEXMSG_ACTIVATE_RESPONSE); +- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this,status); ++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this,status); // HACK + pMsg->send(pMgr); + } + +@@ -1282,7 +1288,7 @@ + ExMsg *pMsg=pMgr->getFreeMsg(); + + pMsg->setType(eEXMSG_DEACTIVATE_RESPONSE); +- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this,status); ++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this,status); // HACK + pMsg->send(pMgr); + } + +--- hpoj-0.91/mlcd/transport/ExMlcTransport.cpp.gcc4 2005-03-04 14:28:28.000000000 +0000 ++++ hpoj-0.91/mlcd/transport/ExMlcTransport.cpp 2005-03-04 14:29:40.000000000 +0000 +@@ -409,6 +409,7 @@ + + #ifdef JD_DEBUGLITE + void ExMlcTransportChannel::dump(void) { ++#if 0 + ExTransportChannel::dump(); + printf("----------------\n"); + printf("pMlcTransport=0x%8.8X\n", +@@ -487,6 +488,7 @@ + countHandleEmptyCreditRequestReply.get()); + printf("isGusher=%d\n", + isGusher()); ++#endif + } + #endif + +@@ -1597,6 +1599,7 @@ + + #ifdef JD_DEBUGLITE + void ExMlcTransport::dump(void) { ++#if 0 + int i; + + ExTransport::dump(); +@@ -1631,6 +1634,7 @@ + remoteSocketArray[i].maxForwardPacketSize, + remoteSocketArray[i].maxReversePacketSize); + } ++#endif + } + #endif + +--- hpoj-0.91/mlcd/transport/ExMlcCommandChannel.cpp.gcc4 2005-03-04 14:37:19.000000000 +0000 ++++ hpoj-0.91/mlcd/transport/ExMlcCommandChannel.cpp 2005-03-04 14:37:46.000000000 +0000 +@@ -214,6 +214,7 @@ + + #ifdef JD_DEBUGLITE + void ExMlcCommandChannel::dump(void) { ++#if 0 + ExMlcTransportChannel::dump(); + printf("----------------\n"); + printf("pForwardCommandPool=0x%8.8X\n", +@@ -238,6 +239,7 @@ + lastPsid); + printf("lastSsid=%d\n", + lastSsid); ++#endif + } + #endif + diff --git a/hpoj/hpoj-kernel26.patch b/hpoj/hpoj-kernel26.patch new file mode 100644 index 00000000..38b8d046 --- /dev/null +++ b/hpoj/hpoj-kernel26.patch @@ -0,0 +1,86 @@ +--- hpoj-0.91/scripts/ptal-init.in.kernel26 2004-03-03 17:30:47.000000000 +0000 ++++ hpoj-0.91/scripts/ptal-init.in 2004-03-03 17:30:59.000000000 +0000 +@@ -90,6 +90,11 @@ + my $varLock="/var/lock"; + my $varLockSubsys="$varLock/subsys"; + my $osPlatform=`uname -s 2>/dev/null`; ++chomp $osPlatform; ++my $linuxVersion=($osPlatform eq 'Linux' ? `uname -r 2>/dev/null` : ''); ++$linuxVersion=~s/^(\s*)(\d+\.\d+)(\..*)$/$2/; ++chomp $linuxVersion; ++my $usbprintermodule = ($linuxVersion eq '2.6' ? "usblp" : "printer"); + my %devnames; + my %obsoleteDevnames; + my %configInfo; +@@ -1222,12 +1227,12 @@ + # undef -- skip USB probe + # 0 -- do nothing, proceed with USB probe + # >0 -- load printer.o +-# <0 -- disable and unload printer.o ++# <0 -- disable and unload printer.o/usblp.o + sub linuxWhatShouldWeDoAboutUsbPrinterModule { + my $isSmp=&linuxIsSmp; + my $libusbSupported=&ptalMlcdSupportsLibusb; + my $usblpIsLoaded=&linuxUsblpIsLoaded; +- my $printerIsLoaded=&linuxModuleIsLoaded("printer"); ++ my $printerIsLoaded=&linuxModuleIsLoaded($usbprintermodule); + + # non-SMP: + if (!$isSmp) { +@@ -1261,9 +1266,10 @@ + } + goto allowInsmodPrinter; + +- # SMP, libusb support, some sort of printer.c functionality loaded: ++ # SMP, libusb support, some sort of printer.c/usblp.c ++ # functionality loaded: + } elsif ($usblpIsLoaded) { +- # printer.c compiled into the kernel: ++ # printer.c/usblp.c compiled into the kernel: + if (!$printerIsLoaded) { + if (!&askYN( + "\n". +@@ -1280,7 +1286,7 @@ + return undef; + } + +- # printer.c compiled and loaded as a module: ++ # printer.c/usblp.c compiled and loaded as a module: + } else { + promptDisableRmmodPrinter: + my $r=&askYN( +@@ -1301,8 +1307,9 @@ + } + } + +- # SMP, libusb support, printer.c enabled although not loaded: +- } elsif (!&linuxModuleIsDisabled("printer")) { ++ # SMP, libusb support, printer.c/usblp.c enabled although not ++ # loaded: ++ } elsif (!&linuxModuleIsDisabled($usbprintermodule)) { + goto promptDisableRmmodPrinter; + } + +@@ -1326,11 +1333,11 @@ + return 1; + } + if ($r<0) { +- $r=&linuxDisableAndUnloadModule("printer", ++ $r=&linuxDisableAndUnloadModule($usbprintermodule, + "to prevent possible system instability due to SMP+USB"); + } else { + linuxJustLoad: +- $r=&linuxInsmod("printer",$quiet); ++ $r=&linuxInsmod($usbprintermodule,$quiet); + } + if (!$r && !$quiet && + &askYN("\n*** Continue with the USB probe anyway".$msg,0)) { +@@ -1601,7 +1608,7 @@ + + } else { + my $parModulesLoaded=0; +- # Don't "modprobe printer" on SMP Linux with libusb support: ++ # Don't "modprobe printer/usblp" on SMP Linux with libusb support: + my $usbModulesLoaded= + (&ptalMlcdSupportsLibusb && + $osPlatform=~/Linux/ && &linuxIsSmp); diff --git a/hpoj/hpoj-pack.patch b/hpoj/hpoj-pack.patch new file mode 100644 index 00000000..beb7040d --- /dev/null +++ b/hpoj/hpoj-pack.patch @@ -0,0 +1,59 @@ +There is a rather scary and longstanding GCC bug [1] which causes +instant crashes if a program defines a struct with function-pointers +and that structure happens to be "packed". Why anybody would want to +do such a thing is beyond me, but suffice it to say that hpoj v0.91 is +doing precisely that. The current Debian/sarge package for hpoj is +definitely affected (any attempt to scan an image results in an +instant crash). + +A patch to work around the problem is attached. + +Perhaps the hpoj developers can tell us whether it was really +intentional to have the #pragma pack(1) span all of <stdlib.h> and +<xform.h>? + +Thanks, + + --david + +[1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1844 + +--- hpoj-0.91/include/hpojip.h 2002-07-25 02:01:24.000000000 -0700 ++++ hpoj-0.91-davidm/include/hpojip.h 2004-11-11 21:19:58.775236374 -0800 +@@ -131,12 +132,15 @@ + float fl; + } DWORD_OR_PVOID; + ++#pragma pack () ++ + #ifdef HPOJIP_INTERNAL + #include "../lib/hpojip/xform.h" // this file uses the above definitions + #else + typedef struct IP_XFORM_TBL_s FAR *LPIP_XFORM_TBL; + #endif + ++#pragma pack (1) + + /****************************************************************************\ + **************************************************************************** +@@ -587,8 +591,6 @@ + + EXPORT(WORD) ipGetFuncPtrs (LPIP_JUMP_TBL lpJumpTbl); + +-#pragma pack () +- + /****************************************************************************\ + **************************************************************************** + * + + +------------------------------------------------------- +This SF.Net email is sponsored by: +Sybase ASE Linux Express Edition - download now for FREE +LinuxWorld Reader's Choice Award Winner for best database on Linux. +http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click + +_______________________________________________ +hpoj-devel mailing list +hpoj-devel@lists.sourceforge.net +https://lists.sourceforge.net/lists/listinfo/hpoj-devel diff --git a/hpoj/hpoj.install b/hpoj/hpoj.install new file mode 100644 index 00000000..acce9b03 --- /dev/null +++ b/hpoj/hpoj.install @@ -0,0 +1,7 @@ +post_install() { +cat << EOF +==> To get the HP-Officejet working run as root: ptal-init setup +==> Add ptal-init to /etc/rc.conf daemon list and place it before cups is started! +==> To access scanner enable in /etc/sane.d/dll.conf hpoj line. +EOF +} diff --git a/hpoj/hpoj0.91-snmp5.5.patch b/hpoj/hpoj0.91-snmp5.5.patch new file mode 100644 index 00000000..2042d6f1 --- /dev/null +++ b/hpoj/hpoj0.91-snmp5.5.patch @@ -0,0 +1,11 @@ +diff -Naur hpoj-0.91-orig/lib/ptal/ptal-hpjd.c hpoj-0.91/lib/ptal/ptal-hpjd.c +--- hpoj-0.91-orig/lib/ptal/ptal-hpjd.c 2010-02-19 22:33:54.000000000 -0500 ++++ hpoj-0.91/lib/ptal/ptal-hpjd.c 2010-02-19 22:34:45.000000000 -0500 +@@ -45,6 +45,7 @@ + #include <stdlib.h> + + #ifdef HAVE_SNMP ++#include <net-snmp/net-snmp-config.h> + #include <asn1.h> + #include <snmp.h> + #include <snmp_api.h> diff --git a/hpoj/hpoj_gcc43.diff b/hpoj/hpoj_gcc43.diff new file mode 100644 index 00000000..099c9d75 --- /dev/null +++ b/hpoj/hpoj_gcc43.diff @@ -0,0 +1,20 @@ +diff -Nru --exclude changelog hpoj-0.91/mlcd/transport/ExMlcTransport.h hpoj-0.91/mlcd/transport/ExMlcTransport.h +--- hpoj-0.91/mlcd/transport/ExMlcTransport.h 2003-11-04 06:33:19.000000000 +0530 ++++ hpoj-0.91/mlcd/transport/ExMlcTransport.h 2008-03-20 10:14:02.000000000 +0530 +@@ -888,14 +888,14 @@ + void remsockReset(void); + public: + STATUS remsockLookup(int socketID,int *pState, +- int *pMaxForwardPacketSize,int *pMaxForwardPacketSize); ++ int *pMaxForwardPacketSize,int *pMaxForwardPacketSize2); + STATUS remsockAdd(int socketID); + void handleConfigSocketReply(int result,int socketID, + int maxPriToSecPacketSize,int maxSecToPriPacketSize, + int statusLevel); + protected: + STATUS remsockUpdate(int socketID, +- int maxForwardPacketSize,int maxForwardPacketSize); ++ int maxForwardPacketSize,int maxForwardPacketSize2); + STATUS remsockDelete(int socketID); + + // Peripheral-initiated opens (not supported): |