mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-21 20:50:07 +00:00
added more comprehensive documentation for the build scripts
This commit is contained in:
parent
6f38dfffeb
commit
3f45343ba4
253
buildScripts/Readme.md
Normal file
253
buildScripts/Readme.md
Normal file
@ -0,0 +1,253 @@
|
||||
# Building pdf2htmlEX
|
||||
|
||||
Because of its intimate use of *specific* versions of both Poppler and
|
||||
FontForge, cleanly building `pdf2htmlEX` is rather more complex than
|
||||
normal.
|
||||
|
||||
The (bash) scripts in this directory help automate this mutli-stage
|
||||
process.
|
||||
|
||||
For all but the most experienced programmers, we *strongly* encourage you
|
||||
to use these scripts to build `pdf2htmlEX`.
|
||||
|
||||
---
|
||||
|
||||
**Table of contents**
|
||||
|
||||
- [TL;DR ...](#tldr-)
|
||||
- [Downloading precompiled versions](#http://localhost:5000/Readme.md#downloading-precompiled-versions-downloads)
|
||||
- [Building yourself](#http://localhost:5000/Readme.md#building-yourself)
|
||||
- [The gory details ...](#http://localhost:5000/Readme.md#the-gory-details-)
|
||||
- [Top-level scripts](#http://localhost:5000/Readme.md#top-level-scripts)
|
||||
- [Individual steps](#http://localhost:5000/Readme.md#individual-steps)
|
||||
- [Helper files and scripts](http://localhost:5000/Readme.md#helper-files-and-scripts)
|
||||
- [Yet more details?](http://localhost:5000/Readme.md#yet-more-details)
|
||||
|
||||
---
|
||||
|
||||
## TL;DR ...
|
||||
|
||||
### Downloading precompiled versions {#Downloads}
|
||||
|
||||
For most users, you probably really want to simply download one of the
|
||||
[precompiled versions of
|
||||
`pdf2htmlEX`](https://github.com/pdf2htmlEX/pdf2htmlEX/releases):
|
||||
|
||||
- [AppImage](https://appimage.org/) : Download, make executable, and
|
||||
run...
|
||||
|
||||
This will work on most Linuxes, and most recent Windows 10.
|
||||
|
||||
- [Docker](https://www.docker.com/) Image from the [`pdf2htmlEX` Docker
|
||||
hub](https://hub.docker.com/orgs/pdf2htmlex/repositories).
|
||||
|
||||
This will work on any machine with Docker installed.
|
||||
|
||||
- [Debian archive](https://en.wikipedia.org/wiki/Dpkg) : Download,
|
||||
[apt](https://en.wikipedia.org/wiki/APT_(software)) install locally,
|
||||
and run...
|
||||
|
||||
This will work on any [Debian](https://www.debian.org/) based and most
|
||||
recent Windows 10 machines.
|
||||
|
||||
Experienced users of Linux, may be able to repackage this `*.deb` for
|
||||
use with their favourite package management tool.
|
||||
|
||||
### Building yourself
|
||||
|
||||
To build `pdf2htmlEX` on your own machine, inside the root directory of
|
||||
a fresh clone of the
|
||||
[pdf2htmlEX/pdf2htmlEX](https://github.com/pdf2htmlEX/pdf2htmlEX)
|
||||
repository, type:
|
||||
|
||||
```
|
||||
./buildScripts/buildInstallLocally
|
||||
```
|
||||
|
||||
This will automatically install all required development tools and
|
||||
libraries, and then proceed to download and statically compile the
|
||||
required versions of both Poppler and FontForge before compiling and
|
||||
installing `pdf2htmlEX` into /usr/local/bin.
|
||||
|
||||
**NOTE:** at the moment this will **only** work on machines with a
|
||||
[Debian](https://www.debian.org/) based distribution. such as
|
||||
[Ubuntu](https://ubuntu.com/), [Linux Mint](https://linuxmint.com/), etc.
|
||||
|
||||
## The gory details ...
|
||||
|
||||
The bash scripts in this directory automate the download, build, install,
|
||||
test and upload steps required to provide a complete build/test/release
|
||||
cycle of `pdf2htmlEX`.
|
||||
|
||||
Each script can be used individually to re-run a particular step if needed.
|
||||
|
||||
### Top-level scripts
|
||||
|
||||
However, typically, most users, will run one of the following
|
||||
"top-level" scripts:
|
||||
|
||||
1. **`buildInstallLocally`**
|
||||
|
||||
This will automate:
|
||||
|
||||
1. the installation of all required development tools
|
||||
and libraries,
|
||||
|
||||
2. download and statically compile the required versions of both
|
||||
Poppler and FontForge,
|
||||
|
||||
3. compile and install `pdf2htmlEX`.
|
||||
|
||||
2. **`createImages`**
|
||||
|
||||
Following a successful `buildInstallLocally`, this will create the
|
||||
following images:
|
||||
|
||||
1. AppImage
|
||||
|
||||
2. Docker image
|
||||
|
||||
3. Debian archive
|
||||
|
||||
3. **`runTests`**
|
||||
|
||||
Following a successful `buildInstallLocally`, this will run the various
|
||||
'local' tests reporting errors as they occur.
|
||||
|
||||
When run in [Travis-ci](https://travis-ci.org/), failing browser tests
|
||||
will *not* fail the overall Travis build, but will instead upload the
|
||||
test results to the GitHub Release page for later review.
|
||||
|
||||
4. **`uploadImages`**
|
||||
|
||||
Following successful `buildInstallLocally`, `createImages` and
|
||||
`runTests`, this will automate the upload of the various artefacts to
|
||||
the `pdf2htmlEX` releases page, LaunchPad ppa and docker hub
|
||||
repository.
|
||||
|
||||
**Note** that this step requires the user to enter passwords for each
|
||||
of the respective services. *Most* users will not need (or be able) to
|
||||
run this step.
|
||||
|
||||
5. **`travisLinuxDoItAll`**
|
||||
|
||||
This script is used by the `.travis.yml` configuration to build, test
|
||||
and upload a complete `pdf2htmlEX` release cycle. It is essentially a
|
||||
compendium of all of the build scripts in the correct order.
|
||||
|
||||
### Individual steps
|
||||
|
||||
- **`buildFontforge`**: Compiles a *static* version of `libfontforge` for
|
||||
use by `pdf2htmlEX`.
|
||||
|
||||
- **`buildPdf2htmlEX`**: Compiles and links `pdf2htmlEX`.
|
||||
|
||||
- **`buildPoppler`**: Compiles a *static* version of `libpoppler` and
|
||||
`libpopper-glib` for use by `pdf2htmlEX`.
|
||||
|
||||
- **`createAppImage`**: Using an already compiled version of `pdf2htmlEX`,
|
||||
installs it and `popper-data` into an AppImage.
|
||||
|
||||
- **`createDebianPackage`**: Using an already compiled version of
|
||||
`pdf2htmlEX`, installs it and `poppler-data` into a Debian archive
|
||||
(`*.deb`).
|
||||
|
||||
- **`createDockerImage`**: Using an already compile version of
|
||||
`pdf2htmlEX`, installs it and `poppler-data` into a Docker image.
|
||||
|
||||
- **`getBuildTools`**: Locally `apt` installs all development *tools*
|
||||
required to build `pdf2htmlEX`.
|
||||
|
||||
- **`getDevLibraries`**: Locally `apt` installs all development
|
||||
*libraries* required to build `pdf2htmlEX`.
|
||||
|
||||
This script provides a definitive list of all libraries required to run
|
||||
`pdf2htmlEX`.
|
||||
|
||||
- **`getFontforge`**: Downloads and unpacks the version of FontForge specified in the
|
||||
`FONTFORGE_VERSION` environment variable into the
|
||||
`pdf2htmlEX/fontoforge` directory.
|
||||
|
||||
The `FONTFORGE_VERSION` variable is specified in the `versionEnvs`
|
||||
script.
|
||||
|
||||
- **`getPoppler`**: Downloads and unpacks the version of Poppler specified in the
|
||||
`POPPLER_VERSION` environment variable into the `pdf2htmlEX/poppler`
|
||||
directory.
|
||||
|
||||
The `POPPLER_VERSION` variable is specified in the `versionEnvs` script.
|
||||
|
||||
The `getPoppler` script also downloads and unpacks the most recent
|
||||
version of `poppler-data`. Since `poppler-data` does not change very
|
||||
often, the correct version of `poppler-data` is specified in the
|
||||
`getPoppler` script itself.
|
||||
|
||||
- **`installPdf2htmlEX`**: Installs an already compiled version of
|
||||
`pdf2htmlEX` and `poppler-data` into the location specified by the
|
||||
`PDF2HTMLEX_PREFIX` environment variable.
|
||||
|
||||
The `PDF2HTMLEX_PREFIX` variable is specified in the `versionEnvs`
|
||||
script.
|
||||
|
||||
- **`rutTests`**: Runs the tests located in the
|
||||
`pdf2htmlEX/pdf2htmlEX/test` directory. See the
|
||||
`pdf2htmlEX/pdf2htmlEx/test` directory's Readme file for details.
|
||||
|
||||
- **`uploadDebianArchive`**: Upload the `pdf2htmlEX` Debian archive to
|
||||
both the GitHub releases page, as well as the LaunchPad ppa.
|
||||
|
||||
This script has not yet been implemented.
|
||||
|
||||
- **`uploadDockerImage`**: Upload the `pdf2htmlEX` Docker image to
|
||||
Docker hub repository associated to the docker hub users specified in
|
||||
the `DOCKER_USERNAME` environement variable.
|
||||
|
||||
Unless the `DOCKER_USERNAME` and `DOCKER_PASSWORD` environment variables
|
||||
are pre-defined, this script will prompt the user for the respective
|
||||
values.
|
||||
|
||||
- **`uploadGitHubRelease`**: Upload the `pdf2htmlEX` artefacts (AppImage,
|
||||
Debian archive, test results, etc) to the *continuous* section of the
|
||||
release page associated with the `TRAVIS_REPO_SLUG` (user/project)
|
||||
environment variable.
|
||||
|
||||
Unless the `GITHUB_USERNAME`, `GITHUB_TOKEN`, and `TRAVIS_REPO_SLUG`
|
||||
(user/project) environment variables are pre-defined, this script will
|
||||
prompt the user for the respective values.
|
||||
|
||||
### Helper files and scripts
|
||||
|
||||
- **`versionEnvs`**: Specifies all of the evnironment variables required
|
||||
for a standard build of `pdf2htmlEX`. Changes in this script effect
|
||||
*all* of the other build scripts.
|
||||
|
||||
- **`reSourceVersionEnvs`**: This bash script is automatically generated
|
||||
by the build scripts as they are run. It records the values of all
|
||||
important environment variables required by the buildScripts. It is
|
||||
typcically `source`d by each script before it preforms any actions.
|
||||
|
||||
- **`reportEnvs`**: Echos all important enviroment variables to the
|
||||
console. This script is used by the top-level scripts to ensure the
|
||||
current environment variables are listed before each build.
|
||||
|
||||
- **`uploadGitHubReleaseDSL`**: A collection of bash functions used by the
|
||||
`uploadGitHubRelease` script to automate the upload of release artefacts.
|
||||
|
||||
- **`uploadGitHubReleaseMessage`**: The contents of this *text* file is
|
||||
used by the `uploadGitHubRelease` script as the contents of the release
|
||||
message, as visible to the user, for the 'continuous' release section.
|
||||
|
||||
- **`dockerFunctions`**: A collection of bash functions used by the
|
||||
`uploadDockerImage` script to automate the upload of the Docker images
|
||||
to Docker Hub.
|
||||
|
||||
- **`listFilesByChangeTime`**: A simple bash script which lists the files
|
||||
in the buildScripts directory by most recently changed files first.
|
||||
|
||||
- **`Readme.md`**: This read me file.
|
||||
|
||||
## Yet more details?
|
||||
|
||||
The various bash script files are meant to be fairly readable. They
|
||||
contain additional comments about what each step is meant to be doing.
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This bash script clean all pdf2htmlEX build products
|
||||
|
||||
cd pdf2htmlEX
|
||||
rm -rf build pdf2htmlEX.1 share/*.css share/*.js share/*.min.* src/pdf2htmlEX-config.h src/util/css_const.h
|
@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This bash script automates the process of getting the original pdf2htmlEX
|
||||
# source
|
||||
|
||||
PDF2HTMLEX_BRANCH=update-poppler
|
||||
|
||||
echo ""
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo "GETTING pdf2htmlEX sources (using wget)"
|
||||
echo " (PDF2HTMLEX_BRANCH: [$PDF2HTMLEX_BRANCH])"
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo ""
|
||||
|
||||
set -ev
|
||||
|
||||
wget https://codeload.github.com/stephengaito/pdf2htmlEX/zip/$PDF2HTMLEX_BRANCH
|
||||
|
||||
mv $PDF2HTMLEX_BRANCH $PDF2HTMLEX_BRANCH.zip
|
||||
|
||||
sudo apt install unzip
|
||||
|
||||
unzip $PDF2HTMLEX_BRANCH.zip
|
||||
|
||||
mv pdf2htmlEX-$PDF2HTMLEX_BRANCH pdf2htmlEX
|
Loading…
Reference in New Issue
Block a user