I tried earlier but I don't know what I'm doing, so was hoping Lisandro would 
help. If it's worth anything this is what I did:

# set PETSC_DIR and PETSC_ARCH for minimal docs build as used for Sphinx 
(basically just c2html and sowing).
# had to remember to actually build the library or you get a link error with 
-lpetsc 
cd src/binding/petsc4py
# I have all the requisite packages in my base Python 3.7 conda environment (I 
think), including epydoc
make PYTHON=python PYTHON2=python PYTHON3=python docs

/Users/patrick/opt/miniconda3/bin/rst2html.py --input-encoding=utf-8 
--no-compact-lists --cloak-email-addresses ./LICENSE.rst  > docs/LICENSE.html
/Users/patrick/opt/miniconda3/bin/rst2html.py --input-encoding=utf-8 
--no-compact-lists --cloak-email-addresses ./CHANGES.rst  > docs/CHANGES.html
/Users/patrick/opt/miniconda3/bin/rst2html.py --input-encoding=utf-8 
--no-compact-lists --cloak-email-addresses docs/index.rst > docs/index.html
mkdir -p build/doctrees docs/usrman
sphinx-build -b html -d build/doctrees  \
        docs/source docs/usrman
Sphinx v2.4.4 in Verwendung
loading pickled environment... erledigt
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
no targets are out of date.
build abgeschlossen.

The HTML pages are in docs/usrman.
rm -f docs/usrman/.buildinfo
python setup.py build_src
running build_src
mkdir -p docs/apiref
env CFLAGS=-O0 python setup.py -q build --build-lib build/lib.py2
env PYTHONPATH=$PWD/build/lib.py2 python -c 'import petsc4py.PETSc'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File 
"/Users/patrick/code/petsc-doc/src/binding/petsc4py/build/lib.py2/petsc4py/PETSc.py",
 line 3, in <module>
    PETSc = ImportPETSc(ARCH)
  File 
"/Users/patrick/code/petsc-doc/src/binding/petsc4py/build/lib.py2/petsc4py/lib/__init__.py",
 line 29, in ImportPETSc
    return Import('petsc4py', 'PETSc', path, arch)
  File 
"/Users/patrick/code/petsc-doc/src/binding/petsc4py/build/lib.py2/petsc4py/lib/__init__.py",
 line 73, in Import
    module = import_module(pkg, name, path, arch)
  File 
"/Users/patrick/code/petsc-doc/src/binding/petsc4py/build/lib.py2/petsc4py/lib/__init__.py",
 line 58, in import_module
    with f: return imp.load_module(fullname, f, fn, info)
  File "/Users/patrick/opt/miniconda3/lib/python3.7/imp.py", line 242, in 
load_module
    return load_dynamic(name, filename, file)
  File "/Users/patrick/opt/miniconda3/lib/python3.7/imp.py", line 342, in 
load_dynamic
    return _load(spec)
ImportError: 
dlopen(/Users/patrick/code/petsc-doc/src/binding/petsc4py/build/lib.py2/petsc4py/lib/arch-classic-docs/PETSc.cpython-37m-darwin.so,
 2): Symbol not found: _dasum
  Referenced from: 
/Users/patrick/code/petsc-doc/arch-classic-docs/lib/libpetsc.3.014.dylib
  Expected in: flat namespace
 in /Users/patrick/code/petsc-doc/arch-classic-docs/lib/libpetsc.3.014.dylib
make: *** [epydoc-html] Error 1


> Am 15.03.2021 um 16:59 schrieb Barry Smith <bsm...@petsc.dev>:
> 
> 
>    Well someone tried importing epydoc for python3 and it did not generate an 
> error, did they try generating the petsc4py docs with it. That would tell you 
> if it works?
> 
>    Yes, we do want to be able to build all the PETSc docs together in a 
> portable way.
> 
>> On Mar 15, 2021, at 10:56 AM, Patrick Sanan <patrick.sa...@gmail.com 
>> <mailto:patrick.sa...@gmail.com>> wrote:
>> 
>> 
>> 
>>> Am 15.03.2021 um 16:26 schrieb Satish Balay <ba...@mcs.anl.gov 
>>> <mailto:ba...@mcs.anl.gov>>:
>>> 
>>> On Mon, 15 Mar 2021, Lisandro Dalcin wrote:
>>> 
>>>> On Mon, 15 Mar 2021 at 07:06, Satish Balay <ba...@mcs.anl.gov 
>>>> <mailto:ba...@mcs.anl.gov>> wrote:
>>>> 
>>>>> Lisandro,
>>>>> 
>>>>> For the upcoming release its best to update lib/petsc/bin/maint/builddist
>>>>> to also build petsc4py tarball in sync with petsc tarball.
>>>>> 
>>>>> What is the current process to generate petsc4py tarball?
>>>>> 
>>>>> 
>>>>> 
>>>>> BTW: I stumbled into a couple of issues with building petsc4py docs
>>>>> 
>>>>> 1. the docs build process requires petsc library to be built?
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>>>>>>> 
>>>>> python setup.py build_src
>>>>> running build_src
>>>>> cythonizing 'petsc4py.PETSc.pyx' -> 'petsc4py.PETSc.c'
>>>>> cythonizing 'libpetsc4py/libpetsc4py.pyx' -> 'libpetsc4py/libpetsc4py.c'
>>>>> mkdir -p docs/apiref
>>>>> env CFLAGS=-O0 python2 setup.py -q build --build-lib build/lib.py2
>>>>> /usr/bin/ld: cannot find -lpetsc
>>>>> collect2: error: ld returned 1 exit status
>>>>> error: command 'gcc' failed with exit status 1
>>>>> make[2]: *** [makefile:110: epydoc-html] Error 1
>>>>> gmake[1]: [makefile:422: sphinx-docs-all] Error 2 (ignored)
>>>>> <<<
>>>>> 
>>>>> 2. Any particular reason it needs python2? I see it requires
>>>>> docutils,epydoc - but I see python3 is able to install them.
>>>>> 
>>>>> 
>>>> It requires petsc4py to be installed in Python 2, such that epydoc can
>>>> build the API reference.
>>> 
>>> But epydoc can be installed with python3. So this is more of petsc4py code 
>>> that uses epydoc - than epydoc code?
>>> 
>>>> I have not found a nice replacement for epydoc-generated documentation.
>>>> If Python 2 is an annoyance, then just remove, comment-out anything related
>>>> to epydoc in "makefile"
>>> 
>>> Well I can work around it. [by installing both python2 and python3 versions 
>>> of epydoc via pip]
>>> 
>>> However its not clear to me where the python2 requirement is coming
>>> from - and if things can be unified using python3
>>> 
>>> A related issue: I think Patrick is working on migrating some of the
>>> petsc4py docs to sphynx. And curently sphynx is installed in python3
>>> virt-env [so now we need it for both python3 for petsc side, and
>>> python2 for petsc4py side]
>> 
>> I haven't dug into the petsc4py docs yet, but I was very much hoping that we 
>> could at least make all the docs build at once and be deployed to the same 
>> URL, even if for now they are building with an assortment of tools. (We 
>> could include the petsc4py docs, for now, as we're doing with the HTML man 
>> pages and sources from c2html, specifying them as "extra html" with Sphinx) 
>> . As Satish says, it'd be nice to do this with the same Python environment 
>> we use to build the Sphinx docs - I would naively hope/assume that since 
>> epydoc exists for python3 and petsc4py works with python3, it would be 
>> possible.
>> 
>>> 
>>>> and run "make sdist".
>>> 
>>> Ah - ok. Will check this to see if I can generate the tarball in sync
>>> with petsc tarball. What source files need updating for
>>> release/version info?
>>> 
>>>> But this way the tarball will miss the API reference.
>>> 
>>>> PS: All this could be converted to a script that installs petsc4py and
>>>> epydoc in a Python 2 virtual environment, and next users another venv for
>>>> the Python 3 Sphinx stuff.
>>> 
>>> One issue: Fedora-33 does not have 'python2-pip' anymore. I was able
>>> to manually install it.  However this might become an issue for others
>>> who want to build docs [even if we automate the docs build to
>>> install/use pyton2-venv]
>>> 
>>> Satish
>> 
> 

Reply via email to