fix multbit x265 installation
[goodguy/cin-manual-latex.git] / parts / Installation.tex
index fcb40c7820118b75e4f9c411558bf21ec1e100f2..0401bd5f2dc36f3fb413580c3549efb170efc248 100644 (file)
@@ -1,5 +1,54 @@
 \chapter{Installation}
 \label{cha:Installation}
+\index{installation}
+
+\section{\CGG{} AppImage}%
+\label{sec:cin_gg_appimage}
+
+The main way to install \CGG{} is to use the AppImage. This is updated regularly and works for every distro, since it already contains the necessary dependencies. 
+A big advantage of using the AppImage format is that it is only 1/3 the size of the normal install,
+and since each release is named differently, you can keep a number of versions in a directory,
+and when testing from a terminal you just have to type CinGG, then hit tab, and complete it to
+the desired date release.
+
+For 64-bit systems you can choose between an image with up-to-date libraries or one that supports older libraries, which you should use only if the first image gives you problems with unsupported libs. There is also a 32-bit older distro available that has \textit{i686} as part of the filename and a 8/10/12 bit newer distro that handles 8 or 10 or 12 bits that has \textit{multibit} as part of the filename.  Installing the appimage is simple:
+
+Download the file from:
+
+\url{https://cinelerra-gg.org/download/images/}
+
+Some example file names are as follows - where 8 digits represent yyyymmdd:
+
+\begin{lstlisting}[style=sh]
+       CinGG-20210731-x86_64.AppImage
+         (currently based on Fedora Core 32, libc version 2.31)
+       CinGG-20210731-x86_64-older-distros.AppImage
+         (currently based on Ubuntu 16.04, libc version 2.23)
+       CinGG-20210731-i686.AppImage
+         (currently based on Debian 9, linux kernel 4.9)
+       CinGG-20210731-x86_64-multibit.AppImage
+         (currently based on Fedora Core 32, libc version 2.31)
+\end{lstlisting}
+
+Make the file executable with the proper execute permissions either from the GUI of the Desktop Environment used (link to the file) or from a terminal window.  Make sure you are already in the directory containing the appimage:
+
+\begin{lstlisting}[style=sh]
+       $ chmod u+x CinGG-yyyymmdd.AppImage
+\end{lstlisting}
+
+Finally start the program from a window in the directory where the image is stored:
+
+\begin{lstlisting}[style=sh]
+       $ ./CinGG-yyyymmdd.AppImpage
+\end{lstlisting}
+
+or create a convenient desktop icon with a link to the run action, or do a \textit{Desktop Integration} manually or with external programs.
+
+Most distros already have the libraries to run the appimage, but if not you may need an additional installation. For example Arch Linux needs the \texttt{libappimage} package.
+
+\begin{lstlisting}[style=sh]
+       sudo pacman -S libappimage
+\end{lstlisting}
 
 \section{Download Already Built \CGG{}}%
 \label{sec:download_already_built_cinelerra_gg}
@@ -19,8 +68,7 @@ you get the added benefit of the latest checked in changes, please reference
 ~\ref{sec:How_to_build}.
 %
 A Windows 10 version installation is described in~\ref{sec:ms_windows10}.  There are also 32-bit i686 Ubuntu, Debian,
-and Slackware versions available.  These are updated on a fairly
-regular basis as long as significant code changes have been made.
+and Slackware versions available. \textbf{These binaries are no longer being updated; they are stable and working but without future functionality}.
 They are in subdirectories of:
 
 \begin{list}{}{}
@@ -28,7 +76,7 @@ They are in subdirectories of:
        \item \href{https://cinelerra-gg.org/download/pkgs}{https://cinelerra-gg.org/download/pkgs}
 \end{list}
 
-The \textbf{tars} directory contains single-user static builds for
+The \textbf{tars} \index{tars} directory contains single-user static builds for
 different distros.
 %
 This is the recommended usage of \CGG{} because all of the files
@@ -43,15 +91,14 @@ from the \texttt{./tars} subdirectory and unpack as indicated below:
        cd /path
        mkdir cin
        cd cin
-       tar -xJf /src/path/cinelerra-5.1-*.txz  # for the *,
-       # substitute your distro tarball name
+       tar -xJf /src/path/cinelerra-5.1-*.txz  # for the *, substitute your distro tarball name
 \end{lstlisting}
 
 \emph{Do not download the LEAP 10-bit version unless you specifically want to
 use h265 rendering to 10-bit instead of the more standard 8-bit.} For more
 information see ~\ref{sec:cinx_and_a_bit_of_confusion}.
 
-The \textbf{pkgs} directory contains the standard packaged
+The \textbf{pkgs} \index{pkgs} directory contains the standard packaged
 application for various distros.  This will install a dynamic
 system version for users who prefer to have the binaries in the
 system area and for multi-user systems.
@@ -73,6 +120,8 @@ caption={README.pkgs}
 
 \section{How to Build \CGG{} from Developer's Git Repository}%
 \label{sec:How_to_build}
+\index{build}
+\index{git}
 
 These are generic build instructions for building \CGG{} Infinity.
 Known to work on Ubuntu, Mint, OpenSuse, Fedora, Debian, Centos,
@@ -82,6 +131,16 @@ some minor changes.  Also works on a somewhat limited basis on
 FreeBSD and Windows 10 with the bsd.patch for FreeBSD and the
 cygwin.patch for Windows 10.
 
+NOTE: as of May 31, 2021 when Context Help was added, to include
+this Context Help you will need to download the corresponding
+tgz file containing the HTML manual sections referenced for the
+Help pages.  The file to download is:
+\url{https://cinelerra-gg.org/download/images/HTML_Manual-20210531.tgz}
+substituting for "20210531" the "yyyymmdd" representing latest release date.
+Then unpack to your Cinelerra/bin/doc directory so it is included in
+your built system.
+NOTE End
+
 Alternatively, there are some pre-built dynamic or static binaries
 which are updated on a fairly regular basis (as long as code changes
 have been made) available at the link below.
@@ -126,8 +185,9 @@ having them interfere with each other.
 
 \subsection{The system build}
 \label{sec:system-build}
+\index{git}
 
-To do a system build, you should read the file
+To do a system build \index{build} , you should read the file
 \texttt{README} that is at the top level after you get the source.
 
 \begin{itemize}
@@ -202,6 +262,8 @@ Check for errors before proceeding.
 
 \subsection{The single-user build}
 \label{sec:single-user-build}
+\index{single-user build}
+\index{git}
 
 To do a single-user build, read the file \texttt{README} that is at
 the top level after you get the source.
@@ -269,11 +331,21 @@ the \texttt{Exec=cin} line to be
 
 The preceding directions for doing a single-user build may work
 without being root on some distros except for the \texttt{bld\_prepare.sh}
-and creating the desktop icon.
+and creating the desktop icon. For example in Arch Linux installing without being root
+works using the following steps:
+
+\begin{lstlisting}[style=sh]
+$ git clone --depth 1 "git://git.cinelerra-gg.org/goodguy/cinelerra.git" cinelerra5
+$ cd /home/USER/cinelerra5/cinelerra-5.1
+$ ./autogen.sh
+$ ./configure --prefix=/usr --with-single-user --with-booby
+$ make 2>&1 | tee /tmp/cin5.log &&  make install
+\end{lstlisting}
 
 
 \subsection{Notable Options and Caveats}%
 \label{sub:notable_options_and_caveats}
+\index{./configure}
 
 These procedures and the \CGG{} Infinity software have all been run
 as \textbf{root} on various home laptops and desktops. This provides
@@ -287,13 +359,13 @@ To see the full list of features use:
 \begin{lstlisting}[style=sh]
 ./configure --help
 \end{lstlisting}
-The default build is a system build which uses:
+The default build \index{build} is a system build which uses:
 
 \begin{lstlisting}[style=sh]
 ./configure --without-single-user
 \end{lstlisting}
 
-In the single-user build, the target directory is always
+In the single-user build \index{single-user build}, the target directory is always
 \texttt{cin}.  Because this is also the developer build, constant
 names are used throughout.  However, you can rename files after the
 install is complete.
@@ -356,9 +428,22 @@ export ac_cv_header_xmmintrin_h=no
 export FFMPEG_EXTRA_CFG=" --disable-vdpau"
 \end{lstlisting}
 
+NOTE: as of May 31, 2021 when Context Help was added, to include
+this Context Help you will need to download the corresponding
+tgz file containing the HTML manual sections referenced for the
+Help pages.  The file to download is:
+\url{https://cinelerra-gg.org/download/images/HTML_Manual-20210531.tgz}
+substituting for "20210531" the "yyyymmdd" representing latest release date.
+Then unpack to your Cinelerra/bin/doc directory so it is included in
+your built system.  The reason for not including the HTML manual in 
+the source code so that it would already be there, is because it is
+very large and has its own GIT base.
 
 \subsection{Notes about Building from Git in your Customized Environment}%
 \label{sub:notes_about_building_from_git_in_your_customized_environment}
+\index{build}
+\index{./configure}
+\index{git}
 
 Getting a build to work in a custom environment is not easy.  If you
 have already installed libraries which are normally in the
@@ -368,54 +453,52 @@ the library interfaces exist.  Below is the list of thirdparty
 builds, but this list may have changed over time.
 % It's list of Table?
 
-\begin{table}[htpb]
-  \centering
-  \caption{List of thirdparty builds}
-  \label{tab:List_of_thirdparty_builds}
-  \small
-  \begin{tabular}{m{8em}c}
-    \toprule
-       a52dec   & yes\\
-       djbfft   & yes\\
-       ffmpeg   & yes\\
-       fftw     & auto\\
-       flac     & auto\\
-       giflib   & yes\\
-       ilmbase  & auto\\
-       lame     & auto\\
-       libavc1394&auto\\
-       libraw1394&auto\\
-       libiec61883&auto\\
-    libdv     &auto\\
-       libjpeg   &auto\\
-       opus      &auto\\
-       openjpeg  &auto\\
-       libogg    &auto\\
-       libsndfile&auto\\
-       libtheora&auto\\
-       libuuid  & yes\\
-       libvorbis&auto\\
-       mjpegtools&yes\\
-       openexr   &auto\\
-    tiff      &auto\\
-       twolame   &auto\\
-       x264      &auto\\
-       x265      &auto\\
-       libvpx    &auto\\
-       lv2       &auto\\
-       sratom    &auto\\
-       serd      &auto\\
-       sord      &auto\\
-       lilv      &auto\\
-       suil      &auto\\
-       libaom    &auto\\
-       dav1d     &auto\\
-    libwebp   &auto\\
-       ffnvcodec &auto\\
-    \bottomrule
-  \end{tabular}
-\end{table}
-
+\begin{center}
+       \small
+       \begin{longtable}{m{8em} c}             
+               \caption{List of thirdparty builds}
+               \label{tab:List_of_thirdparty_builds}\\
+               \toprule
+               a52dec   & yes\\
+               djbfft   & yes\\
+               ffmpeg   & yes\\
+               fftw     & auto\\
+               flac     & auto\\
+               giflib   & yes\\
+               ilmbase  & auto\\
+               lame     & auto\\
+               libavc1394&auto\\
+               libraw1394&auto\\
+               libiec61883&auto\\
+               libdv     &auto\\
+               libjpeg   &auto\\
+               opus      &auto\\
+               openjpeg  &auto\\
+               libogg    &auto\\
+               libsndfile&auto\\
+               libtheora&auto\\
+               libuuid  & yes\\
+               libvorbis&auto\\
+               mjpegtools&yes\\
+               openexr   &auto\\
+               tiff      &auto\\
+               twolame   &auto\\
+               x264      &auto\\
+               x265      &auto\\
+               libvpx    &auto\\
+               lv2       &auto\\
+               sratom    &auto\\
+               serd      &auto\\
+               sord      &auto\\
+               lilv      &auto\\
+               suil      &auto\\
+               libaom    &auto\\
+               dav1d     &auto\\
+               libwebp   &auto\\
+               ffnvcodec &auto\\
+               \bottomrule
+       \end{longtable}
+\end{center}
 
 The \textit{yes} means force build and \textit{auto} means probe and
 use the system version if the build operation is not static.  To get
@@ -457,6 +540,8 @@ done
 
 \subsection{Cloning the Repository for Faster Updates}%
 \label{sub:cloning_the_repository_for_faster_updates}
+\index{repository}
+\index{git}
 
 If you want to avoid downloading the software every time an update
 is available you need to create a local ``repository'' or repo.  The
@@ -513,6 +598,9 @@ git clean -i     # interactive clean, use answer 1 to "clean"
 
 \subsection{How to Build from a Previous GIT Version}%
 \label{sub:how_to_build_from_a_previous_git_version}
+\index{build}
+\index{repository}
+\index{git}
 
 If you have a problem with the current GIT version, you can revert
 to a previous working version easily.  The commands to use will be
@@ -577,6 +665,8 @@ git checkout master
 
 \subsection{Debuggable Single User Build}%
 \label{sub:debuggable_single_user_build}
+\index{single-user build}
+\index{git}
 
 To build from source with full debugging symbols, first build a full
 static (non\_debug) build as follows but instead of using
@@ -602,6 +692,9 @@ gdb ./ci
 
 \subsection{Unbundled Builds}%
 \label{sub:unbundled_builds}
+\index{build}
+\index{repository}
+\index{git}
 
 There are some generic build scripts included in the \CGG{} GIT
 repository for users who want to do unbundled builds with ffmpeg
@@ -649,12 +742,55 @@ this can be debilitating; you can always run \texttt{ffmpeg
   -formats} and \texttt{ffmpeg -codecs} to see what is available
 on your system.
 
+\section{Building the HTML Manual for Context Help}%
+\label{sec:building_the_manual}
+\index{context help}
+
+In addition to compiling your own \CGG{}, you should also build an html version of the manual that is needed for Context Help in the program. The main version of the manual is in latex to produce a pdf version of the manual and this is required to be built first as the basis for the html version. This means that you need a full latex environment, git, and the latex2html program in order to eventually create the html version. Texlive is about 1 GB; Latex2html itself has many requirements and missing any will result in failure: some requirments include Netpbm, GhostScript, dvips, etc.  Latex2html must be at least version \textit{2021.2} in order to create the html manual version from the latex.
+
+The steps are as follows:
+\begin{enumerate}
+       \item Download the manual in LaTeX:
+
+\begin{lstlisting}[style=sh]
+git clone "git://git.cinelerra-gg.org/goodguy/cin-manual-latex.git" master
+\end{lstlisting}
+
+       \item Included in the download is the \texttt{translate\_manual} script. After modifying this file to have execute permission, run this script from a terminal window in the \textit{master} directory where it was downloaded (be aware that this script includes several \textit{rm} commands):
+\begin{lstlisting}[style=sh]
+./translate_manual
+\end{lstlisting}
+
+       The steps that this script performs are as follows:
+       \begin{itemize}
+               \item PDF production. The PDF document will be produced from the latex source in the \textit{master} directory. Since the glossary and index are also present, it has to run the pdf build several times. The following commands in the \texttt{translate\_manual} script produce the PDF document from latex source which includes invoking makeindex for the Index and Glossary.
+               
+               \begin{lstlisting}[style=sh]
+                       pdflatex CinelerraGG_Manual.tex
+                       makeindex CinelerraGG_Manual.idx
+                       pdflatex CinelerraGG_Manual.tex
+                       makeindex CinelerraGG_Manual.nlo -s nomencl.ist -o CinelerraGG_Manual.nls
+                       pdflatex CinelerraGG_Manual.tex
+               \end{lstlisting}
+               
+               After these commands are executed you will have the manual only in PDF format.  So if you only want a PDF version, you only need to run these previous 5 lines but Context Help from the program will not be available with the PDF version.
+               \item Next, to produce HTML output the script then moves (renames) \texttt{latex 2html-init} to \texttt{.latex2html-init} (starting with dot).
+               
+               \item Then the script uses latex2html: latex2html is run with a unique set of parameters and some cleanup is performed. It creates the directory CinelerraGG\_Manual containing all the files of the manual in html:  tables, references, index, glossary, and various images.
+       \end{itemize}
+
+       \item After installation of the \CGG{} program, place the complete unchanged directory \texttt{CinelerraGG\_Manual}, as it was produced by latex2html from the manual package, into the \textit{doc} directory of the installed Cinelerra package. This will be the directory \textit{bin/doc/CinelerraGG\_Manual} if \CGG{} was built \texttt{--with-single-user}. The script ContextManual.pl will automatically be in bin/doc after the successful build of the program. It is this perl script that allows the program to access CinelerraGG\_Manual to offer Context Help.
+
+       \item Optionally you can make some adjustments to the latex2html command line in the \texttt{translate\_manual} script. Some variants are shown in the comments inside the script but changes may impact the usability of Alt/h hotkey from the program.
+\end{enumerate}
+
 \section{Windows 10 with Cygwin for \CGG{} Limited}%
 \label{sec:ms_windows10}
+\index{windows 10}
 
 To run \CGG{} on a Windows 10 computer, you will need to have
 Cygwin installed on your system, along with the \CGG{} static tar
-and a patched library: libxbc.  This setup has been tested with
+and a patched library: libxcb.  This setup has been tested with
 Windows 10, version 1909, on an HP EliteBook 820 at 2.3 GHz.
 
 This limited version provides \textit{core} functionality at this
@@ -669,6 +805,7 @@ utility libraries are not currently compiled to work with Windows.
 
 \subsection*{Installing Cygwin}
 \label{sec:installing_cygwin}
+\index{cygwin}
 
 Cygwin is an environment that runs natively on Windows which
 allows Unix programs to be compiled and run on Windows.  With
@@ -736,12 +873,12 @@ Terminal
 \item Download the tar file
   \href{https://cinelerra-gg.org/download/testing/libxcb-bld.tar.bz2}{libxcb-bld.tar.bz2}.
 
-\item Install libxbc from the tar file -- installs into
+\item Install libxcb from the tar file -- installs into
   \texttt{/usr/local} and requires approximately 21MB storage.
 \begin{lstlisting}[style=sh]
 tar -C /usr/local -xJf /path/libxcb-bld.tar.bz2
 \end{lstlisting}
-  The libxcb path repairs an error (XIOError), which stops
+  The libxcb patch repairs an error (XIOError), which stops
   Cinelerra.
 
 \item Download the tar file
@@ -854,8 +991,9 @@ window) will hang cygwin (and cin) when it hits a breakpoint.  You
 must run from an external console window to avoid this issue.
 
 
-\section{Distribution Systems with \CGG{} Included}%
-\label{sec:distribution_systems_with_cinelerra_included}
+\section{Distro with \CGG{} Included}%
+\label{sec:distro_with_cinelerra_included}
+\index{linux distro}
 
 There are also some special complete distribution systems
 available that include \CGG{} for audio and video production
@@ -865,7 +1003,7 @@ capabilities.
 \label{sec:AV_Linux}
 
 \textbf{AV Linux} is a downloadable/installable shared snapshot
-ISO image based on Debian.  It provides the user an easy method to
+ISO image based on MX Linux.  It provides the user an easy method to
 get an Audio and Video production workstation without the hassle
 of trying to find and install all of the usual components
 themselves.  Of course, it includes \CGG{}!
@@ -884,15 +1022,26 @@ graphics, animations, physical computing, etc.
 Click here for the
 \href{https://gitlab.com/giuseppetorre/bodhilinuxmedia}{homepage of Bodhi Linux}.
 
+\subsection{DeLinuxCo}
+\label{sec:delinuxco}
+
+\textbf{DeLinuxCo} is a distro derived from Manjaro (so Arch based) with DE Cinammon. It is a professional workstation, mainly oriented to the multimedia field but not only. It contains many specialized programs already configured, including \CGG{}.
+
+You can read all about DeLinuxCo \href{https://www.delinuxco.com/}{here} and download \href{https://www.delinuxco.com/download/}{here}.
+
 \subsection{Elive}
 \label{sec:elive}
 
-\textbf{Elive}, or Enlightenment live CD, is a non-commercial, cost-free operating system based on Debian, for the daily use and it can be used both as live CD or Installed system. Elive uses a customized Enlightenment desktop. It is fast, user-friendly and feature-rich and \CGG{} is included in the 64 bit version.
+\textbf{Elive}, or Enlightenment live CD, is a non-commercial, cost-free operating system based on Debian, and it can be used either as a live CD or an Installed system. Elive uses a customized Enlightenment desktop. It is fast, user-friendly and feature-rich and \CGG{} is included in the 64 bit version.
 
-Click \href{https://www.elivecd.org/}{Elive} for more information.
+Click \href{https://www.elivecd.org/}{Elive} for more information.  The \CGG{} package is at 
+\href{http://repository.elivecd.org/pool/multimedia/c/cinelerra-gg/} {package} - just download
+the .deb file and install via “dpkg -i “.  To include access to the Alt/h hotkey help, also install
+\href{http://repository.elivecd.org/pool/multimedia/c/cinelerra-gg-manual/}{manual} for help.
 
 \section{Cinx and a “Bit” of Confusion}%
 \label{sec:cinx_and_a_bit_of_confusion}
+\index{cinx}
 
 Cinx is the exact same program as Cin.  The X (x) represents the
 roman numeral 10 for 10-bit as opposed to 8-bit standard.  The
@@ -918,6 +1067,22 @@ There is also a 12-bit version for consideration but currently the
 results are simply the same as 10-bit with padding to make 12-bit
 so it is of no value.
 
+\section{Multibit build for x265-8/10/12-bit}%
+\label{sec:multibit_build}
+\index{multibit}
+
+To build a version that can handle 8 bit, or 10 bit, or 12 bit videos,
+a patch is provided in the \texttt{thirdparty} subdirectory that needs
+to be applied to do so.  Be aware that the compile may take more time
+and seems to be about twice as long. To apply the required patch:
+
+\begin{lstlisting}[style=sh]
+cd /path/to/cinelerra-5.1/thirdparty
+patch < compile_multibit_X265.txt
+mv x265_3.5.patch* src/.
+\end{lstlisting}
+Render formats \textit{h265-10bit} and \textit{h265-12bit} have been provided and will
+be operational after the applied patch is compiled in.
 
 %%% Local Variables:
 %%% mode: latex