GithubHelp home page GithubHelp logo

MacOSX install about luahpdf HOT 16 OPEN

arnodick avatar arnodick commented on August 18, 2024
MacOSX install

from luahpdf.

Comments (16)

jung-kurt avatar jung-kurt commented on August 18, 2024

I'll look into this when I have access to a Mac, possibly tomorrow.

How did you install your version of the HPDF library? Direct from source, homebrew, or some other means? What version os OSX are you running?

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Thanks for the response, Kurt.

I tried installing HPDF from source but had issues, so I ended up using homebrew.
Running OSX 10.12.6

This was my best stab at modifying the Makefile:

PREFIX ?= /usr/local
MODDIR ?= $(PREFIX)/bin/lua-5.3.4
LUALIB ?= -liblua
HPDFLIB ?= -libhpdf
LUA ?= lua
LUAC ?= luac
PLATFORM=macosx

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Oh and I forgot to mention it's libharu version 2.3.0

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

I tried installing HPDF from source but had issues, so I ended up using homebrew.

Whew! These fussy build scripts make me realize why I like go so much. lua builds easily as do libpng and zlib, but the libharu build is one frustration after another. And I'm having trouble getting the antiquated homebrew installation on the Mac I borrowed to update properly. I'll chip away a bit more on this and will report back.

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

I am unable to install homebrew on the Mac (version 10.7.5 from 2012) to which I have access, and I can't get past the configuration step when trying to build libharu from source.

hpdf.c:257:4 error: use of undeclared identifier 'HPDF_ARRAY_COUNT_ERR'

This looks to me like the compiler is unable to find the libhpdf header files. You can use the HPDFINC setting in the luahpdf Makefile to set the location. I think homebrew puts its file into the /usr/local tree. Try something like find /usr/local -name "*hpdf*h" to pinpoint the directory to specify.

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Thanks for the response, Kurt!

I'll try these suggestions out as soon as I get a chance and let you now how it goes.

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Hi Kurt,

I ended up not having to use luahpdf on my mac, but I'm now very close to having it working on my web host. It's a freeBSD system, and with some messing around with the Makefile I was able to get luahpdf to make and install.

Unfortunately, when I runt the test command
lua52 -l hpdf -e "print(hpdf.VERSION_TEXT)"

I get this error

lua52: error loading module 'hpdf' from file './hpdf.so':
Undefined symbol "luaopen_hpdf"
stack traceback:
[C]: in ?
[C]: in function '_G.require'
[C]: in ?

I think this may have something to do with luahpdf requiring haru to be a shared library, but I'm not sure. Thought I'd ask and see if you had any insight.

Thanks!

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

Hi @arnodick,

I ended up not having to use luahpdf on my mac

I'd still like to get it working on Macs, but I'll definitely need to get access to a newer one before I can proceed. libhpdf seems to build a lot more easily on Linux and BSD.

I think this may have something to do with luahpdf requiring haru to be a shared library, but I'm not sure.

Yes, the ".so" indicates a shared object. After make completes, do you have a file called hpdf.so in the same directory as the Makefile? If so, what do you get when you run ldd ./hpdf.so? If not, does make report errors during the build?

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Yup, hpdf.so is in the directory after make and install. No errors, but I do get a warning:

cc: warning: argument unused during compilation: '-shared' [-Wunused-command-line-argument]

The output of ldd ./hpdf.so is:

./hpdf.so:
libhpdf.so => /usr/local/lib/libhpdf.so (0x21201000)
libz.so.6 => /lib/libz.so.6 (0x214bf000)
libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x216d8000)
libm.so.5 => /lib/libm.so.5 (0x21910000)
libc.so.7 => /lib/libc.so.7 (0x20824000)

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

Good. Instead of

lua52 -l hpdf -e "print(hpdf.VERSION_TEXT)"

try

lua52 -e "package.path=[[]] package.cpath=[[./?.so]] local hpdf = require [[hpdf]] print(hpdf.VERSION_TEXT)"

This will make sure that Lua looks for your hpdf.so in the current directory.

If that works, then the problem with the first command is likely something to do with Lua finding the module where it was installed.

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Hi Kurt,

I tried the modified command but it resulted in the same error.

I did find this which seems to mention a very similar problem: #4

It mentions a pull request but I'm not which one they're referring to. #4 (comment)

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

That pull request was already merged into the repository, so you're making use of it.

Let's take a look at what the exports in the module you compiled. On Linux, the command is

nm -g ./hpdf.so

If that doesn't work on FreeBSD, try man nm to read up on what switches apply. On my system (Debian Linux) the output includes

                 U luaL_error
                 U luaL_optlstring
                 U luaL_setfuncs
000000000000ec90 T luaopen_hpdf
                 U lua_pushboolean
                 U lua_pushfstring
                 U lua_pushinteger

We're specifically looking for that luaopen_hpdf.

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Ah, I'm getting very different results.

                 w _Jv_RegisterClasses
00000000002006f9 A __bss_start
                 w __cxa_finalize@@FBSD_1.0
00000000002006f9 A _edata
0000000000200700 A _end
00000000000004a8 T _fini
00000000000003a0 T _init

The nm command for freeBSD seems to be the same as Debian. -g writes only global symbols.

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

Do you get the same results with nm -g hpdf.o?

I just looked at the FreeBSD target in the Lua makefile as well as the makefiles in some other Lua modules on GitHub that build on FreeBSD. I have not found any flags that look out of place in luahpdf's makefile.

I suggest starting as simply as possible and adding flags as needed, checking the generated object file (hpdf.o) each time with nm -g ./hpdf.o. For example,

cc -I/usr/include/lua5.2 -c -o hpdf.o hpdf.c
nm -g ./hpdf.o

Incrementally add the compiler flags -shared, -fPIC, etc from Makefile.

from luahpdf.

arnodick avatar arnodick commented on August 18, 2024

Ah, I used a much simplified compile command cc -I/usr/local/include/lua52 -I/usr/local/include -c -o hpdf.o hpdf.c

The results were promising!

00000000000001b0 D CnAnnotHighlightMode
00000000000001e0 D CnAnnotIcon
0000000000000320 D CnBlendMode
0000000000000160 D CnByteType
0000000000000230 D CnColorSpace
0000000000000130 D CnEncoderType
00000000000002f0 D CnEncryptMode
0000000000000000 R CnErrorMessages
00000000000002a0 D CnInfoType
0000000000000390 D CnLineCap
00000000000003c0 D CnLineJoin
00000000000000d0 D CnPageDirection
0000000000000000 D CnPageLayout
0000000000000030 D CnPageMode
00000000000000f0 D CnPageNumStyle
0000000000000060 D CnPageSizes
0000000000000440 D CnTextAlignment
00000000000003f0 D CnTextRenderingMode
0000000000000470 D CnTransitionStyle
0000000000000190 D CnWritingMode
                 U HPDF_AddPage
                 U HPDF_AddPageLabel
                 U HPDF_CreateExtGState
                 U HPDF_CreateOutline
                 U HPDF_Destination_SetFit
                 U HPDF_Destination_SetFitB
                 U HPDF_Destination_SetFitBH
                 U HPDF_Destination_SetFitBV
                 U HPDF_Destination_SetFitH
                 U HPDF_Destination_SetFitR
                 U HPDF_Destination_SetFitV
                 U HPDF_Destination_SetXYZ
                 U HPDF_Encoder_GetByteType
                 U HPDF_Encoder_GetType
                 U HPDF_Encoder_GetUnicode
                 U HPDF_Encoder_GetWritingMode
                 U HPDF_ExtGState_SetAlphaFill
                 U HPDF_ExtGState_SetAlphaStroke
                 U HPDF_ExtGState_SetBlendMode
                 U HPDF_Font_GetAscent
                 U HPDF_Font_GetBBox
                 U HPDF_Font_GetCapHeight
                 U HPDF_Font_GetDescent
                 U HPDF_Font_GetEncodingName
                 U HPDF_Font_GetFontName
                 U HPDF_Font_GetUnicodeWidth
                 U HPDF_Font_GetXHeight
                 U HPDF_Font_MeasureText
                 U HPDF_Font_TextWidth
                 U HPDF_Free
                 U HPDF_FreeDoc
                 U HPDF_FreeDocAll
                 U HPDF_GetCurrentEncoder
                 U HPDF_GetCurrentPage
                 U HPDF_GetEncoder
                 U HPDF_GetError
                 U HPDF_GetErrorDetail
                 U HPDF_GetFont
                 U HPDF_GetInfoAttr
                 U HPDF_GetPageByIndex
                 U HPDF_GetPageLayout
                 U HPDF_GetPageMode
                 U HPDF_GetStreamSize
                 U HPDF_GetVersion
                 U HPDF_GetViewerPreference
                 U HPDF_HasDoc
                 U HPDF_Image_GetBitsPerComponent
                 U HPDF_Image_GetColorSpace
                 U HPDF_Image_GetHeight
                 U HPDF_Image_GetSize
                 U HPDF_Image_GetSize2
                 U HPDF_Image_GetWidth
                 U HPDF_Image_SetColorMask
                 U HPDF_Image_SetMaskImage
                 U HPDF_InsertPage
                 U HPDF_LinkAnnot_SetBorderStyle
                 U HPDF_LinkAnnot_SetHighlightMode
                 U HPDF_LoadJpegImageFromFile
                 U HPDF_LoadPngImageFromFile
                 U HPDF_LoadPngImageFromFile2
                 U HPDF_LoadRawImageFromFile
                 U HPDF_LoadRawImageFromMem
                 U HPDF_LoadTTFontFromFile
                 U HPDF_LoadTTFontFromFile2
                 U HPDF_LoadType1FontFromFile
                 U HPDF_New
                 U HPDF_NewDoc
                 U HPDF_Outline_SetDestination
                 U HPDF_Outline_SetOpened
                 U HPDF_Page_Arc
                 U HPDF_Page_BeginText
                 U HPDF_Page_Circle
                 U HPDF_Page_Clip
                 U HPDF_Page_ClosePath
                 U HPDF_Page_ClosePathEofillStroke
                 U HPDF_Page_ClosePathFillStroke
                 U HPDF_Page_ClosePathStroke
                 U HPDF_Page_Concat
                 U HPDF_Page_CreateDestination
                 U HPDF_Page_CreateLinkAnnot
                 U HPDF_Page_CreateTextAnnot
                 U HPDF_Page_CreateURILinkAnnot
                 U HPDF_Page_CurveTo
                 U HPDF_Page_CurveTo2
                 U HPDF_Page_CurveTo3
                 U HPDF_Page_DrawImage
                 U HPDF_Page_Ellipse
                 U HPDF_Page_EndPath
                 U HPDF_Page_EndText
                 U HPDF_Page_Eoclip
                 U HPDF_Page_Eofill
                 U HPDF_Page_EofillStroke
                 U HPDF_Page_ExecuteXObject
                 U HPDF_Page_Fill
                 U HPDF_Page_FillStroke
                 U HPDF_Page_GRestore
                 U HPDF_Page_GSave
                 U HPDF_Page_GetCMYKFill
                 U HPDF_Page_GetCMYKStroke
                 U HPDF_Page_GetCharSpace
                 U HPDF_Page_GetCurrentFont
                 U HPDF_Page_GetCurrentFontSize
                 U HPDF_Page_GetCurrentPos
                 U HPDF_Page_GetCurrentPos2
                 U HPDF_Page_GetCurrentTextPos
                 U HPDF_Page_GetCurrentTextPos2
                 U HPDF_Page_GetDash
                 U HPDF_Page_GetFillingColorSpace
                 U HPDF_Page_GetFlat
                 U HPDF_Page_GetGMode
                 U HPDF_Page_GetGStateDepth
                 U HPDF_Page_GetGrayFill
                 U HPDF_Page_GetGrayStroke
                 U HPDF_Page_GetHeight
                 U HPDF_Page_GetHorizontalScalling
                 U HPDF_Page_GetLineCap
                 U HPDF_Page_GetLineJoin
                 U HPDF_Page_GetLineWidth
                 U HPDF_Page_GetMiterLimit
                 U HPDF_Page_GetRGBFill
                 U HPDF_Page_GetRGBStroke
                 U HPDF_Page_GetStrokingColorSpace
                 U HPDF_Page_GetTextLeading
                 U HPDF_Page_GetTextMatrix
                 U HPDF_Page_GetTextRaise
                 U HPDF_Page_GetTextRenderingMode
                 U HPDF_Page_GetTextRise
                 U HPDF_Page_GetTransMatrix
                 U HPDF_Page_GetWidth
                 U HPDF_Page_GetWordSpace
                 U HPDF_Page_LineTo
                 U HPDF_Page_MeasureText
                 U HPDF_Page_MoveTextPos
                 U HPDF_Page_MoveTextPos2
                 U HPDF_Page_MoveTo
                 U HPDF_Page_MoveToNextLine
                 U HPDF_Page_Rectangle
                 U HPDF_Page_SetCMYKFill
                 U HPDF_Page_SetCMYKStroke
                 U HPDF_Page_SetCharSpace
                 U HPDF_Page_SetDash
                 U HPDF_Page_SetExtGState
                 U HPDF_Page_SetFlat
                 U HPDF_Page_SetFontAndSize
                 U HPDF_Page_SetGrayFill
                 U HPDF_Page_SetGrayStroke
                 U HPDF_Page_SetHeight
                 U HPDF_Page_SetHorizontalScalling
                 U HPDF_Page_SetLineCap
                 U HPDF_Page_SetLineJoin
                 U HPDF_Page_SetLineWidth
                 U HPDF_Page_SetMiterLimit
                 U HPDF_Page_SetRGBFill
                 U HPDF_Page_SetRGBStroke
                 U HPDF_Page_SetRotate
                 U HPDF_Page_SetSize
                 U HPDF_Page_SetSlideShow
                 U HPDF_Page_SetTextLeading
                 U HPDF_Page_SetTextMatrix
                 U HPDF_Page_SetTextRaise
                 U HPDF_Page_SetTextRenderingMode
                 U HPDF_Page_SetTextRise
                 U HPDF_Page_SetWidth
                 U HPDF_Page_SetWordSpace
                 U HPDF_Page_ShowText
                 U HPDF_Page_ShowTextNextLine
                 U HPDF_Page_ShowTextNextLineEx
                 U HPDF_Page_Stroke
                 U HPDF_Page_TextOut
                 U HPDF_Page_TextRect
                 U HPDF_Page_TextWidth
                 U HPDF_ResetError
                 U HPDF_ResetStream
                 U HPDF_SaveToFile
                 U HPDF_SaveToStream
                 U HPDF_SetCompressionMode
                 U HPDF_SetCurrentEncoder
                 U HPDF_SetEncryptionMode
                 U HPDF_SetInfoAttr
                 U HPDF_SetInfoDateAttr
                 U HPDF_SetOpenAction
                 U HPDF_SetPageLayout
                 U HPDF_SetPageMode
                 U HPDF_SetPagesConfiguration
                 U HPDF_SetPassword
                 U HPDF_SetPermission
                 U HPDF_SetViewerPreference
                 U HPDF_TextAnnot_SetIcon
                 U HPDF_TextAnnot_SetOpened
                 U HPDF_UseCNSEncodings
                 U HPDF_UseCNSFonts
                 U HPDF_UseCNTEncodings
                 U HPDF_UseCNTFonts
                 U HPDF_UseJPEncodings
                 U HPDF_UseJPFonts
                 U HPDF_UseKREncodings
                 U HPDF_UseKRFonts
                 U HPDF_UseUTFEncodings
0000000000000000 T LclErrHandler
                 U fclose
                 U fopen
                 U luaL_argerror
                 U luaL_checkinteger
                 U luaL_checklstring
                 U luaL_checknumber
                 U luaL_checkoption
                 U luaL_error
                 U luaL_optlstring
                 U luaL_setfuncs
                 U lua_concat
                 U lua_createtable
                 U lua_error
                 U lua_isnumber
                 U lua_isuserdata
                 U lua_pushboolean
                 U lua_pushfstring
                 U lua_pushinteger
                 U lua_pushlightuserdata
                 U lua_pushnumber
                 U lua_pushstring
                 U lua_pushvalue
                 U lua_rawget
                 U lua_rawgeti
                 U lua_rawlen
                 U lua_rawset
                 U lua_rawseti
                 U lua_setfield
                 U lua_settop
                 U lua_toboolean
                 U lua_tointegerx
                 U lua_tolstring
                 U lua_tonumberx
                 U lua_touserdata
                 U lua_type
0000000000000160 T luaopen_hpdf
                 U sprintf

I don't have much time tonight to keep experimenting, but does this look more on track to you?

Thanks!

from luahpdf.

jung-kurt avatar jung-kurt commented on August 18, 2024

I don't have much time tonight to keep experimenting, but does this look more on track to you?

Definitely. I think you are one small step away.

from luahpdf.

Related Issues (7)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.