freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] Integrating Docwriter into FreeType


From: Nikhil Ramakrishnan
Subject: Re: [ft-devel] Integrating Docwriter into FreeType
Date: Tue, 31 Jul 2018 11:29:51 +0530


Well, `docwriter' isn't taken yet on pypi.org, and you wrote that you
are probably extending it to a more generic package, so I think you
should stay with that name.

OK.
 
The file to be modified is `builds/unix/configure.raw', which is a
shell script that (a) gets processed to `builds/unix/configure.ac' by
a sed script to replace address@hidden@' with the FreeType version (this is
a peculiarity of FreeType's build system), and (b) gets further
processed by `autoconf', which uses M4 macros to piecewise create a
`builds/unix/configure' script from templates.

[The M4 quoting character in `configure.ac' is set to `[' and `]';
 these quotes should be added around macro parameters in almost all
 situations; please say `info autoconf' for more details.]

A possible test for a `python' binary is the line

  AC_CHECK_PROGS([PYTHON], [python python2 python3], [missing])

which assigns the shell variable $PYTHON to either `python',
`python2', or `python3' (testing in this order), whatever gets found
first in the path.  If none of those programs is found, $PYTHON is set
to `missing'.  Note that this test also allows

  PYTHON=foobar ./configure ...

to override $PYTHON on the command line.

After the above line you can continue with

  have_docwriter=no
  if test "x$PYTHON" != "xmissing"; then
    AC_CHECK_PROGS([PIP], [pip2 pip3], [missing])

    if test "x$PIP" != "xmissing"; then
      $PIP show -q docwriter
      if test "x$?" = "x0"; then
        have_docwriter=yes
      fi
    fi
  fi

[Actually, if we test for `pip', we don't need a test for python since
 pip doesn't work without python, but I think it looks better.]

At the end of `configure.raw' you can now write

  if test have_docwriter = no; then
    AC_MSG_NOTICE([Warning: \`make refdoc' will fail since ...])
  fi

To (re)generate the configure script, say

  ./autogen.sh

as usual.

Thanks for the explanation and the scripts. Running

  ./autogen.sh
  make

on a clean environment (without docwriter installed) would now give:

  (...)
  checking for library containing clock_gettime... none required
  checking for python... python
  checking for pip... pip
  configure: creating ./config.status
  (...)
  configure:

  Library configuration:
    external zlib: yes (autoconf test)
    bzip2:         no
    libpng:        yes (libpng-config)
    harfbuzz:      no

  configure:
    Warning: `make refdoc' will fail since pip package `docwriter'
    is not installed. To install, run `pip install docwriter', or to
    use a python virtual environment, run `make refdoc-venv' (Requires
    pip package `virtualenv').

Also, is there a way to store the $PYTHON variable (python/python2/
python3) so that I can use it in `freetype.mk' while invoking docwriter?


--
Nikhil

reply via email to

[Prev in Thread] Current Thread [Next in Thread]