openpaperwork / paperwork

Personal document manager (Linux/Windows) -- Moved to Gnome's Gitlab
https://gitlab.gnome.org/World/OpenPaperwork/paperwork
2.43k stars 148 forks source link

support for OSX #647

Open onsosb opened 7 years ago

onsosb commented 7 years ago

Although, this is not directly directed to open paperwork, but it would really nice if we could have a OSX friendly version. In theory, the code is in Python and Python is supported in OSX. But there are some packages that use deprecated values.h that does not compile in OSX. I got paperwork almost running and the show stopper is pypillowfight-0.2.2.tar.gz. Any help would certainly be appreciated.

sudo pip3 install pypillowfight Password: The directory '/Users/rose/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/rose/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting pypillowfight Downloading pypillowfight-0.2.2.tar.gz (42kB) 100% |████████████████████████████████| 51kB 339kB/s Requirement already satisfied: Pillow in /usr/local/lib/python3.6/site-packages (from pypillowfight) Requirement already satisfied: olefile in /usr/local/lib/python3.6/site-packages (from Pillow->pypillowfight) Installing collected packages: pypillowfight Running setup.py install for pypillowfight ... error Complete output from command /usr/local/opt/python3/bin/python3.6 -u -c "import setuptools, tokenize;file='/private/tmp/pip-build-mk3yap0o/pypillowfight/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-fw4i4qyv-record/install-record.txt --single-version-externally-managed --compile: running install running build running build_py creating build creating build/lib.macosx-10.12-x86_64-3.6 creating build/lib.macosx-10.12-x86_64-3.6/pillowfight copying src/pillowfight/init.py -> build/lib.macosx-10.12-x86_64-3.6/pillowfight running build_ext building 'pillowfight._clib' extension creating build/temp.macosx-10.12-x86_64-3.6 creating build/temp.macosx-10.12-x86_64-3.6/src creating build/temp.macosx-10.12-x86_64-3.6/src/pillowfight clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -UNDEBUG -Iinclude -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c src/pillowfight/util.c -o build/temp.macosx-10.12-x86_64-3.6/src/pillowfight/util.o In file included from src/pillowfight/util.c:23: include/pillowfight/util.h:29:10: fatal error: 'values.h' file not found

include

         ^
1 error generated.
error: command 'clang' failed with exit status 1

----------------------------------------

Command "/usr/local/opt/python3/bin/python3.6 -u -c "import setuptools, tokenize;file='/private/tmp/pip-build-mk3yap0o/pypillowfight/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-fw4i4qyv-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-build-mk3yap0o/pypillowfight/ bash-3.2$ ls

jflesch commented 7 years ago

should be fixed by https://github.com/openpaperwork/libpillowfight/commit/05e0a135da56eb54ed491c1f6c203b6c8b60d49c

jflesch commented 7 years ago

Until I make a new release, here is how it can be installed on Linux:

cd /tmp
git clone https://github.com/openpaperwork/libpillowfight.git
cd libpillowfight
sudo python3 ./setup.py install

I don't know what is the equivalent way for MacOSX.

onsosb commented 7 years ago

The values.h is no longer used in any modern system. They should be replaced by limits.h, features.h, and float.h if I am not mistaken. For that I am not very skilled to do so. the right way is to have the authors of the package bring it up to date. The wrong way is to hard code the values for the version that openpaperwork uses. the other alternative which is perhaps long shot, have the capability of enabling paperwork function with limited features if some libraries are not available, as opposed to have all or nothing approach of present time. In this case for example, the features related to offending package will not be available when paperwork runs. In my opinion having a native version running on osx as opposed to having a VM based or Docker based version will increase the popularity and usage of the openpaperwork, immensly. There is another effort under the name of "Elephant" that provides similar functionality, perhaps not as elaborated as paperwork, that runs on all three Linux, Windows and OSX platform, thee catch is it is written in Java... I am not sure if it could be done to take the compiled version of paperwork in python on Unix and translate it to java byte code.... , which makes it runable in all platforms. Forgive me this is the naive in me saying this....

jflesch commented 7 years ago

The values.h is no longer used in any modern system. They should be replaced by limits.h, features.h, (...)

Yes, and it has been fixed by https://github.com/openpaperwork/libpillowfight/commit/05e0a135da56eb54ed491c1f6c203b6c8b60d49c . The change will be in the next release of Libpillowfight.

There is another effort under the name of "Elephant"

Do you have a link for this project ? I would like to see how it looks.

onsosb commented 7 years ago

Hi Jerome,

Here is the link to Elephant: http://elephant.mine.nu/, http://elephant.mine.nu/ Other but more involved project which seems very good is Turtl: https://turtlapp.com/ Regards, Bid

On Mon, Jul 3, 2017 at 3:06 PM, Jerome Flesch notifications@github.com wrote:

The values.h is no longer used in any modern system. They should be replaced by limits.h, features.h, (...)

Yes, and it has been fixed by openpaperwork/libpillowfight@05e0a13 https://github.com/openpaperwork/libpillowfight/commit/05e0a135da56eb54ed491c1f6c203b6c8b60d49c . The change will be in the next release of Libpillowfight.

There is another effort under the name of "Elephant"

Do you have a link for this project ? I would like to see how it looks.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/openpaperwork/paperwork/issues/647#issuecomment-312640691, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab0_dx4VOd8Mx70Vo4XCc4kABAA3ceSiks5sKOdggaJpZM4OIYEH .

jflesch commented 7 years ago

I see. Both those projects are note-taking apps (like Evernote, the other Paperwork, etc). While there is some overlap, they don't really have the same goal than Paperwork.

onsosb commented 7 years ago

Jerome,

Yes and No regarding the functionallity of Turtl and Elephant. There is nothing, at least I did not see, as a function that paperwork can do and the other could not. By the stretch of imagination, one can argue that very large documents can scale better in Paperwork, even that is intelectually arguable.

That said, I personally am looking forward to run Paperwork on my OSX and Linux boxes. Cannot wait to see how it behaves in OSX.

Also, consider what I suggested before, rather than all or nothing approach, it would be nice to have a situation that one can run it with reduced functionality, for example not having Scan capability due to errors or what no, rather than not being able to use the system.

On Tue, Jul 4, 2017 at 5:25 PM, Jerome Flesch notifications@github.com wrote:

I see. Both those projects are note-taking apps (like Evernote, the other Paperwork https://github.com/twostairs/paperwork, etc). While there is some overlap, they don't really have the same goal than Paperwork.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/openpaperwork/paperwork/issues/647#issuecomment-312904245, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab0_d8tmxXgLJRKs2_FWOj5cT0t4chbfks5sKlmFgaJpZM4OIYEH .

jflesch commented 7 years ago

You do realize that scanning and OCR are pretty much the core features of Paperwork, right ? Afaik, neither Elephant nor Turtl provide those functions.

onsosb commented 7 years ago

Yes, OCR and scanning are part of the core functions, but one can live without them,for example by scanning separately and adding the result to the system. There is also, at least one utility, and I am sure there are more that can extrat keywords from pdf files, etc. It takes me to my earlier suggestion of having your Paperwork give support to add ons (extensions), so one can extend the core functions of Paperwork based on their needs. IT may need some rearchitecturing Paperwork....

But Jerome, the basic philosophy of Paperwork is great and will have a good success, if it becomes 1) patform agnostic, 2) provides sync and back up capabilities builtin or by extension,3) provides some sort of support for the people on the run either through the web or custom clients and 4) the most important of all provides for end to end encryption. I am sure these are not new to you, but these could be the strong points of chosing your version of Paperwork vs the others. Once againm I really believe, your efforts are well appreciated and will make Paperwork very populaire and successful utility product. Regards, Bid

On Tue, Jul 4, 2017 at 8:49 PM, Jerome Flesch notifications@github.com wrote:

You do realize that scanning and OCR are pretty much the core features of Paperwork, right ? Afaik, neither Elephant nor Turtl provide those functions.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/openpaperwork/paperwork/issues/647#issuecomment-312934320, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab0_d9r_x-AfC9p7C8CREyyfEI0iu-Vyks5sKok1gaJpZM4OIYEH .

jflesch commented 7 years ago

Regarding a MacOSX portage, I don't have any MacOSX machine / license, and I've decided to stop pouring money into Paperwork (I'm down -170€ already). So unless I find a really cheap Mac computer, I won't make any MacOSX port myself.

onsosb commented 7 years ago

For OSX port there are plenty of options, you could turn almost any pc these days to osx, but easier than that, just post the could and people like me try to build and find the bugs. In principle running on OSX, should not be an issue, Python is supported and as long as your could runs on Linux making it to run on OSX should not be difficult. If it was not for the bug in the Python library that I reported, I might have it running by now.

Regards, Bid

On Wed, Jul 5, 2017 at 10:25 AM, Jerome Flesch notifications@github.com wrote:

Just so you know, I don't have any MacOSX machine / license, and I've decided to stop pouring money into Paperwork (I'm down -170€ already). So unless I find a really cheap Mac computer, I won't make any MacOSX port myself.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/openpaperwork/paperwork/issues/647#issuecomment-313036545, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab0_d5A_8yHS4UGa2v0rPDlxvzyjFjk0ks5sK0iVgaJpZM4OIYEH .

ovizii commented 7 years ago

So the latest status is that if one uses the current version, things should compile on OSX? I assume one would follow these instructions for OS X => https://github.com/openpaperwork/paperwork/blob/unstable/doc/install.devel.markdown ?

ahundt commented 6 years ago

I tried installing and managed to resolve a few issues, but ultimately had no luck in the end:

$ paperwork
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 888, in _find_spec
AttributeError: 'DynamicImporter' object has no attribute 'find_spec'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/paperwork", line 7, in <module>
    from paperwork.paperwork import main
  File "/usr/local/lib/python3.6/site-packages/paperwork/paperwork.py", line 27, in <module>
    from gi.repository import Notify  # noqa: E402
  File "/usr/local/lib/python3.6/site-packages/gi/importer.py", line 127, in find_module
    'introspection typelib not found' % namespace)
ImportError: cannot import name Notify, introspection typelib not found
$ python3
Python 3.6.5 (default, Apr 25 2018, 14:23:58) 
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Notify
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 888, in _find_spec
AttributeError: 'DynamicImporter' object has no attribute 'find_spec'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/gi/importer.py", line 127, in find_module
    'introspection typelib not found' % namespace)
ImportError: cannot import name Notify, introspection typelib not found
>>> from gi.repository import notify
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 888, in _find_spec
AttributeError: 'DynamicImporter' object has no attribute 'find_spec'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/gi/importer.py", line 127, in find_module
    'introspection typelib not found' % namespace)
ImportError: cannot import name notify, introspection typelib not found