From 78ae621b59ef8712df8386fe053c932a1d67a9e2 Mon Sep 17 00:00:00 2001 From: fduncanh Date: Sun, 26 Dec 2021 03:28:17 -0500 Subject: [PATCH] README edits --- README.html | 17 ++++---- README.md | 93 +++++++++++++++++++++++++++----------------- README.txt | 110 +++++++++++++++++++++++++++------------------------- 3 files changed, 124 insertions(+), 96 deletions(-) diff --git a/README.html b/README.html index 286d4c7..8e224b6 100644 --- a/README.html +++ b/README.html @@ -22,10 +22,11 @@

*Current UxPlay is also a pull request on the original site https://github.com/antimof/UxPlay ; that original project is inactive, but the pull requests are now being periodically merged with the antimof tree (thank you antimof!).

Building UxPlay on Linux (or *BSD):

(Instructions for Debian/Ubuntu; adapt these for other Linuxes; for macOS, see below).

-

You need a C/C++ compiler (e.g. g++) with the standard development libraries installed.

-

Make sure that cmake>=3.4.1 and pkg-config are also installed: “sudo apt-get install cmake pkg-config”. In a terminal window, change directories to the source directory of the downloaded source code (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads), then do

+

Make sure that your distribution provides OpenSSL 1.1.1 or later, and libplist 2.0 or later. (This means Debian 10 “Buster”, Ubuntu 18.04 or later.) If it doesnt, you may need to build and install these from source (see below).

+

You need a C/C++ compiler (e.g. g++) with the standard development libraries installed. Make sure that cmake>=3.4.1 and pkg-config are also installed: “sudo apt-get install cmake pkg-config”. In a terminal window, change directories to the source directory of the downloaded source code (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads), then do

    -
  1. sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad
  2. +
  3. sudo apt-get install libssl-dev libplist-dev (unless you need to build OpenSSL and libplist from source).
  4. +
  5. sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad
  6. sudo apt-get install gstreamer1.0-vaapi (For hardware-accelerated Intel graphics, but not NVIDIA)
  7. sudo apt-get install libx11-dev (for the “ZOOMFIX” X11_display name fix for screen-sharing with e.g., ZOOM)
  8. cmake . (or “cmake -DZOOMFIX=ON .” to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below).
  9. @@ -35,21 +36,21 @@

    If you intend to modify the code, use a separate “build” directory: replacecmake [ ] .bymkdir build ; cd build ; cmake [ ] ..”; you can then clean the build directory withrm -rf build/*(run from within the UxPlay source directory) without affecting the source directories which contain your modifications.

    The above script installs the executable file “uxplay” to /usr/local/bin, (and installs a manpage to somewhere like /usr/local/share/man/man1 and README files to somewhere like /usr/local/share/doc/uxplay). It can also be found in the build directory after the build processs.

    Finally, run uxplay in a terminal window. If it is not seen by the iOS client’s drop-down “Screen Mirroring” panel, check that your DNS-SD server (usually avahi-daemon) is running: do this in a terminal window with systemctl status avahi-daemon. (If this shows the avahi-daemon is not running, control it with sudo systemctl [start,stop,enable,disable] avahi-daemon (or avahi-daemon.service). If UxPlay is seen, but the client fails to connect when it is selected, there may be a firewall on the server that prevents UxPlay from receiving client connection requests unless some network ports are opened. See Troubleshooting below for help with this or other problems.

    -

    Note libplist-dev (version 2.0 or greater) is a new dependency (originally, libplist was bundled with UxPlay-1.2). Older Linux distributions may only supply libplist 1.x, which is too old. [Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this problem on ubuntu 16.04.] If you cannot find a libplist-2.x package that installs on your distribution, you can get it at https://github.com/libimobiledevice/libplist and build it from source. _(You will need build tools autoconf, automake, libtool, and may need to also install some libpython*-dev package). By default, libplist installs in /usr/local/lib. If this is not in the library path (as in ubuntu), create a file /etc/ld.so.conf.d/libplist.conf containing the text “/usr/local/lib”, and run “sudo ldconfig” to permanently add /usr/local/lib to the library path._

    -

    Modified build instructions for Non-Debian-based distributions:

    Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux): (sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the “PowerTools” add-on repository) (+libX11-devel for ZOOMFIX). The required GStreamer packages (some from rpmfusion.org) are: gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free ( + gstreamer1-vaapi for intel graphics).

    OpenSUSE: (sudo zypper install) libopenssl-devel libplist-devel avahi-compat-mDNSResponder-devel (+ libX11-devel for ZOOMFIX). The required GStreamer packages (you may need to use versions from Packman) are: gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi for Intel graphics).

    FreeBSD: (sudo pkg install) libplist gstreamer1, gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse …), (+ gstreamer1-vaapi for Intel graphics). Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library. OpenSSL is already installed as a System Library. “ZOOMFIX” is untested; don’t try to use it on FreeBSD unless you need it.

    +

    Building OpenSSL >= 1.1.1 from source.

    +

    If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work). You will need the standard development toolset (autoconf, automake, libtool, etc.). Download and compile the source code from https://www.openssl.org/source/, Install the downloaded openssl by opening a terminal in your Downloads directory, and unpacking the source distribution: (“tar -xvzf openssl-3.0.1.tar.gz ; cd openssl-3.0.1”). Then build/install with “./config ; make ; sudo make install_dev”. This will typically install the needed library libcrypto.*, either in /usr/local/lib or /usr/local/lib64. (Ignore the following for builds on MacOS:) Assuming the library was placed in /usr/local/lib64, you must “export OPENSSL_ROOT_DIR=/usr/local/lib64” before running cmake. On some systems like Debian or Ubuntu, you may also need to add a missing entry /usr/local/lib64 in /etc/ld.so.conf (or place a file containing “/usr/local/lib64/libcrypto.so” in /etc/ld.so.conf.d) before running “sudo ldconfig”.

    +

    Bulding libplist >= 2.0.0 from source.

    +

    Note: on Debian 9 “Stretch” or Ubuntu 16.04 LTS editions, you can avoid this step by installing libplist-dev and libplist3 from Debian 10 or Ubuntu 18.04. (As well as the usual build tools, you may need to also install some libpython*-dev package). Download the latest source from https://github.com/libimobiledevice/libplist: get libplist-master.zip, then (“unzip libplist-master.zip ; cd libplist-master”), build/install (“./autogen.sh ; make ; sudo make install”). This will probably install libplist-2.0.* in /usr/local/lib. (Ignore the following for builds on MacOS:) On some systems like Debian or Ubuntu, you may also need to add a missing entry /usr/local/lib in /etc/ld.so.conf (or place a file containing “/usr/local/lib64/libplist-2.0.so” in /etc/ld.so.conf.d) before running “sudo ldconfig”.

    Building UxPlay on macOS: (Only tested on Intel X86_64 Macs)

    Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. UxPlay can run on older macOS systems that will not be able to run Monterey, or can run Monterey but not AirPlay.

    These instructions for macOS asssume that the Xcode command-line developer tools are installed (if Xcode is installed, open the Terminal, type “sudo xcode-select –install” and accept the conditions).

    It is also assumed that CMake >= 3.13 is installed: this can be done with package managers MacPorts, Fink or Homebrew, or by a download from https://cmake.org/download/.

    First get the latest macOS release of GStreamer-1.0 from https://gstreamer.freedesktop.org/download/. Install both the macOS runtime and development installer packages. Assuming that the latest release is 1.18.5 they are gstreamer-1.0-1.18.5-x86_64.pkg and gstreamer-1.0-devel-1.18.5-x86_64.pkg. Click on them to install (they install to /Library/FrameWorks/GStreamer.framework). It is recommended you use GStreamer.framework rather than install Gstreamer with Homebrew or MacPorts (see later).

    -

    Next install OpenSSL and libplist: these can be built from source (see below) but it is easier to get them using MacPorts “sudo port install openssl libplist-devel” or Homebrew “brew install openssl libplist”. Only the static forms of the two libraries will used for the macOS build, so they do not need to remain installed after you have built uxplay: if you don’t have MacPorts or Homebrew installed, you can just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Fink’s openssl11-dev package currently doesn’t supply the static (libcrypto.a) form of the needed OpenSLL library libcrypto, and its libplist1 package is too old.

    +

    Next install OpenSSL and libplist: these can be built from source (see above); only the static forms of the two libraries will used for the macOS build, so you can uninstall them (“sudo make uninstall”) after you have built UxPlay. It may be easier to get them using MacPorts “sudo port install openssl libplist-devel” or Homebrew “brew install openssl libplist”. if you don’t have MacPorts or Homebrew installed, you can just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Fink’s openssl11-dev package currently doesn’t supply the static (libcrypto.a) form of the needed OpenSLL library libcrypto, and its libplist1 package is too old.

    Finally, build and install uxplay (without ZOOMFIX): open a terminal and change into the UxPlay source directory (“UxPlay-master” for zipfile downloads, “UxPlay” for “git clone” downloads) and build/install with “cmake . ; make ; sudo make install” (same as for Linux).

    On the macOS build, autovideosink uses OpenGL, not X11, to create the mirror display window (equivalent to “-vs glimagesink”; “-vs osxvideosink” can also be used). The window title does not show the Airplay server name, but it is visible to screen-sharing apps (e.g., Zoom). On macOS, The option -t timeout cannot be used because if the GStreamer pipeline is destroyed while the mirror window is still open, a segfault occurs (this is an issue with the GStreamer plugins, not UxPlay). Also, the resolution settings “-s wxh” do not affect the (small) initial OpenGL mirror window size, but the window can be expanded using the mouse or trackpad. In contrast, a window created with “-vs osxvideosink” is initially big, but has the wrong aspect ratio (stretched image); in this case the aspect ratio changes when the window width is changed by dragging its side.

    -

    Building OpenSSL and libplist from source on macOS

    -

    If you have have the standard GNU toolset (autoconf, automake, libtool, etc.) installed, you can also download and compile the source code for these libraries from https://www.openssl.org/source/, https://github.com/libimobiledevice/libplist. Install the downloaded openssl by opening a terminal in your Downloads directory, and unpacking the source distribution openssl-3.0.0.tar.gz , (“tar -xvzf openssl-3.0.0.tar.gz ; cd openssl-3.0.0”). Then build/install with “./config ; make ; sudo make install_dev” and clean up after building uxplay with “sudo make uninstall” in the same directory. Similarly, for libplist, download the source as a zipfile from github as libplist-master.zip, then unpack (“unzip libplist-master.zip ; cd libplist-master”), build/install (“./autogen.sh ; make ; sudo make install”) and clean up after uxplay is built with “sudo make uninstall” in the same directory.

    Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not recommended):

    First make sure that pkgconfig is installed (Homebrew: “brew install pkgconfig” ; MacPorts: “sudo port install pkgconfig” ).

      diff --git a/README.md b/README.md index 34c1840..3cada74 100644 --- a/README.md +++ b/README.md @@ -85,20 +85,25 @@ now being periodically merged with the antimof tree (thank you antimof!). (Instructions for Debian/Ubuntu; adapt these for other Linuxes; for macOS, see below). -You need a C/C++ compiler (e.g. g++) with the standard development libraries installed. +Make sure that your distribution provides OpenSSL 1.1.1 or later, and libplist 2.0 or later. +(This means Debian 10 "Buster", Ubuntu 18.04 or later.) If it doesnt, you may +need to build and install these from source (see below). +You need a C/C++ compiler (e.g. g++) with the standard development libraries installed. Make sure that cmake>=3.4.1 and pkg-config are also installed: "sudo apt-get install cmake pkg-config". In a terminal window, change directories to the source directory of the downloaded source code ("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone" downloads), then do -1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad` -2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA) -3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11_display name fix for screen-sharing with e.g., ZOOM) -4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to + +1. `sudo apt-get install libssl-dev libplist-dev` (unless you need to build OpenSSL and libplist from source). +2. `sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad` +3. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA) +4. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11_display name fix for screen-sharing with e.g., ZOOM) +5. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below). -5. `make` -6. `sudo make install` (you can afterwards uninstall with `sudo make uninstall` in the same directory in which this was run) +6. `make` +7. `sudo make install` (you can afterwards uninstall with `sudo make uninstall` in the same directory in which this was run) _If you intend to modify the code, use a separate "build" directory: replace_ "```cmake [ ] . ```" _by_ "```mkdir build ; cd build ; cmake [ ] ..```"; _you can then clean the build directory with_ "```rm -rf build/* ```" _(run from within the UxPlay source directory) without affecting the source directories which contain your modifications_. @@ -115,17 +120,6 @@ If UxPlay is seen, but the client fails to connect when it is selected, there m UxPlay from receiving client connection requests unless some network ports are opened. See **Troubleshooting** below for help with this or other problems. - -**Note libplist-dev (version 2.0 or greater) is a new dependency (originally, libplist was bundled with UxPlay-1.2). Older Linux -distributions may only supply libplist 1.x, which is too old. [Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this problem on ubuntu 16.04.]** -If you cannot find a libplist-2.x package that installs on your distribution, you can get it at -[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist) and build it from source. -_(You will need build tools autoconf, automake, libtool, and may need to also install some libpython*-dev package). -By default, libplist installs in /usr/local/lib. If this is not in the library path (as in ubuntu), create a -file /etc/ld.so.conf.d/libplist.conf containing the text "/usr/local/lib", and run "sudo ldconfig" to permanently add /usr/local/lib to the library path._ - -### Modified build instructions for Non-Debian-based distributions: - **Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux):** (sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel (some from the "PowerTools" add-on repository) (+libX11-devel for ZOOMFIX). The required GStreamer packages (some from [rpmfusion.org](https://rpmfusion.org)) are: @@ -142,6 +136,40 @@ gstreamer-devel gstreamer-plugins-base-devel gstreamer-plugins-libav gstreamer-p Either avahi-libdns or mDNSResponder must also be installed to provide the dns_sd library. OpenSSL is already installed as a System Library. "ZOOMFIX" is untested; don't try to use it on FreeBSD unless you need it. +### Building OpenSSL >= 1.1.1 from source. + +If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work). +You will need the standard development toolset (autoconf, automake, libtool, etc.). +Download and compile the source code from +[https://www.openssl.org/source/](https://www.openssl.org/source/), +Install the downloaded +openssl by opening a terminal in your Downloads directory, and unpacking the source distribution: +("tar -xvzf openssl-3.0.1.tar.gz ; cd openssl-3.0.1"). Then build/install with +"./config ; make ; sudo make install_dev". This will typically install the needed library ```libcrypto.*```, +either in /usr/local/lib or /usr/local/lib64. +_(Ignore the following for builds on MacOS:)_ +Assuming the library was placed in /usr/local/lib64, you must +"export OPENSSL_ROOT_DIR=/usr/local/lib64" before running cmake. +On some systems like +Debian or Ubuntu, you may also need to add a missing entry ```/usr/local/lib64``` +in /etc/ld.so.conf (or place a file containing "/usr/local/lib64/libcrypto.so" in /etc/ld.so.conf.d) +before running "sudo ldconfig". + +### Bulding libplist >= 2.0.0 from source. + +_Note: on Debian 9 "Stretch" or Ubuntu 16.04 LTS editions, you can avoid this step by installing libplist-dev +and libplist3 from Debian 10 or Ubuntu 18.04._ +(As well as the usual build tools, you may need to also install some libpython\*-dev package). +Download the latest source from +[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist): get +[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), then +("unzip libplist-master.zip ; cd libplist-master"), build/install +("./autogen.sh ; make ; sudo make install"). This will probably install libplist-2.0.* in /usr/local/lib. +_(Ignore the following for builds on MacOS:)_ On some systems like +Debian or Ubuntu, you may also need to add a missing entry ```/usr/local/lib``` +in /etc/ld.so.conf (or place a file containing "/usr/local/lib64/libplist-2.0.so" in /etc/ld.so.conf.d) +before running "sudo ldconfig". + ## Building UxPlay on macOS: **(Only tested on Intel X86_64 Macs)** _Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. @@ -163,9 +191,10 @@ Click on them to install (they install to /Library/FrameWorks/GStreamer.framework). It is recommended you use GStreamer.framework rather than install Gstreamer with Homebrew or MacPorts (see later). -Next install OpenSSL and libplist: these can be built from source (see below) but it is easier to get them using -MacPorts "sudo port install openssl libplist-devel" or Homebrew "brew install openssl libplist". Only the -static forms of the two libraries will used for the macOS build, so they do not need to remain installed after you have built uxplay: +Next install OpenSSL and libplist: these can be built from source (see above); only the +static forms of the two libraries will used for the macOS build, so you can uninstall them ("sudo make uninstall") +after you have built UxPlay. It may be easier to get them using +MacPorts "sudo port install openssl libplist-devel" or Homebrew "brew install openssl libplist". if you don't have MacPorts or Homebrew installed, you can just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Fink's openssl11-dev package currently doesn't supply the static (libcrypto.a) form of the @@ -186,21 +215,6 @@ the (small) initial OpenGL mirror window size, but the window can be expanded u In contrast, a window created with "-vs osxvideosink" is initially big, but has the wrong aspect ratio (stretched image); in this case the aspect ratio changes when the window width is changed by dragging its side. -***Building OpenSSL and libplist from source on macOS*** - -If you have have the standard GNU toolset (autoconf, automake, libtool, etc.) installed, -you can also download and compile the source code for these libraries from -[https://www.openssl.org/source/](https://www.openssl.org/source/), -[https://github.com/libimobiledevice/libplist](https://github.com/libimobiledevice/libplist). -Install the downloaded -openssl by opening a terminal in your Downloads directory, and unpacking the source distribution openssl-3.0.0.tar.gz , -("tar -xvzf openssl-3.0.0.tar.gz ; cd openssl-3.0.0"). Then build/install with -"./config ; make ; sudo make install_dev" and clean up after building uxplay with "sudo make uninstall" in the same directory. -Similarly, for libplist, download the source as a zipfile from github as -[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), then -unpack ("unzip libplist-master.zip ; cd libplist-master"), build/install -("./autogen.sh ; make ; sudo make install") and clean up after uxplay is built with "sudo make uninstall" in the same directory. - ***Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not recommended):*** @@ -219,6 +233,13 @@ Using the MacPorts X11 GStreamer is only viable if the image size is left unchan (also use the iPad/iPhone setting that locks the screen orientation against switching between portrait and landscape mode as the device is rotated). + + + + + + + # **Usage:** Options: diff --git a/README.txt b/README.txt index 04a278e..58daa30 100644 --- a/README.txt +++ b/README.txt @@ -110,25 +110,30 @@ Building UxPlay on Linux (or \*BSD): (Instructions for Debian/Ubuntu; adapt these for other Linuxes; for macOS, see below). +Make sure that your distribution provides OpenSSL 1.1.1 or later, and +libplist 2.0 or later. (This means Debian 10 "Buster", Ubuntu 18.04 or +later.) If it doesnt, you may need to build and install these from +source (see below). + You need a C/C++ compiler (e.g. g++) with the standard development -libraries installed. +libraries installed. Make sure that cmake\>=3.4.1 and pkg-config are +also installed: "sudo apt-get install cmake pkg-config". In a terminal +window, change directories to the source directory of the downloaded +source code ("UxPlay-master" for zipfile downloads, "UxPlay" for "git +clone" downloads), then do -Make sure that cmake\>=3.4.1 and pkg-config are also installed: "sudo -apt-get install cmake pkg-config". In a terminal window, change -directories to the source directory of the downloaded source code -("UxPlay-master" for zipfile downloads, "UxPlay" for "git clone" -downloads), then do - -1. `sudo apt-get install libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad` -2. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated +1. `sudo apt-get install libssl-dev libplist-dev` (unless you need to + build OpenSSL and libplist from source). +2. `sudo apt-get install libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-plugins-bad` +3. `sudo apt-get install gstreamer1.0-vaapi` (For hardware-accelerated Intel graphics, but not NVIDIA) -3. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11\_display +4. `sudo apt-get install libx11-dev` (for the "ZOOMFIX" X11\_display name fix for screen-sharing with e.g., ZOOM) -4. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix +5. `cmake .` (or "`cmake -DZOOMFIX=ON .`" to get a screen-sharing fix to make X11 mirror display windows visible to screen-sharing applications such as Zoom, see below). -5. `make` -6. `sudo make install` (you can afterwards uninstall with +6. `make` +7. `sudo make install` (you can afterwards uninstall with `sudo make uninstall` in the same directory in which this was run) *If you intend to modify the code, use a separate "build" directory: @@ -156,22 +161,6 @@ prevents UxPlay from receiving client connection requests unless some network ports are opened. See **Troubleshooting** below for help with this or other problems. -**Note libplist-dev (version 2.0 or greater) is a new dependency -(originally, libplist was bundled with UxPlay-1.2). Older Linux -distributions may only supply libplist 1.x, which is too old. -\[Installing libplist-dev (with libplist3) from ubuntu 18.04 solves this -problem on ubuntu 16.04.\]** If you cannot find a libplist-2.x package -that installs on your distribution, you can get it at - and build it from source. -\_(You will need build tools autoconf, automake, libtool, and may need -to also install some libpython\*-dev package). By default, libplist -installs in /usr/local/lib. If this is not in the library path (as in -ubuntu), create a file /etc/ld.so.conf.d/libplist.conf containing the -text "/usr/local/lib", and run "sudo ldconfig" to permanently add -/usr/local/lib to the library path.\_ - -### Modified build instructions for Non-Debian-based distributions: - **Red Hat, Fedora, CentOS (now continued as Rocky Linux or Alma Linux):** (sudo yum install) openssl-devel libplist-devel avahi-compat-libdns\_sd-devel (some from the "PowerTools" add-on @@ -195,6 +184,40 @@ dns\_sd library. OpenSSL is already installed as a System Library. "ZOOMFIX" is untested; don't try to use it on FreeBSD unless you need it. +### Building OpenSSL \>= 1.1.1 from source. + +If you need to do this, note that you may be able to use a newer version +(OpenSSL-3.0.1 is known to work). You will need the standard development +toolset (autoconf, automake, libtool, etc.). Download and compile the +source code from , Install the +downloaded openssl by opening a terminal in your Downloads directory, +and unpacking the source distribution: ("tar -xvzf openssl-3.0.1.tar.gz +; cd openssl-3.0.1"). Then build/install with "./config ; make ; sudo +make install\_dev". This will typically install the needed library +`libcrypto.*`, either in /usr/local/lib or /usr/local/lib64. *(Ignore +the following for builds on MacOS:)* Assuming the library was placed in +/usr/local/lib64, you must "export OPENSSL\_ROOT\_DIR=/usr/local/lib64" +before running cmake. On some systems like Debian or Ubuntu, you may +also need to add a missing entry `/usr/local/lib64` in /etc/ld.so.conf +(or place a file containing "/usr/local/lib64/libcrypto.so" in +/etc/ld.so.conf.d) before running "sudo ldconfig". + +### Bulding libplist \>= 2.0.0 from source. + +*Note: on Debian 9 "Stretch" or Ubuntu 16.04 LTS editions, you can avoid +this step by installing libplist-dev and libplist3 from Debian 10 or +Ubuntu 18.04.* (As well as the usual build tools, you may need to also +install some libpython\*-dev package). Download the latest source from +: get +[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), +then ("unzip libplist-master.zip ; cd libplist-master"), build/install +("./autogen.sh ; make ; sudo make install"). This will probably install +libplist-2.0.\* in /usr/local/lib. *(Ignore the following for builds on +MacOS:)* On some systems like Debian or Ubuntu, you may also need to add +a missing entry `/usr/local/lib` in /etc/ld.so.conf (or place a file +containing "/usr/local/lib64/libplist-2.0.so" in /etc/ld.so.conf.d) +before running "sudo ldconfig". + Building UxPlay on macOS: **(Only tested on Intel X86\_64 Macs)** ----------------------------------------------------------------- @@ -222,12 +245,12 @@ you use GStreamer.framework rather than install Gstreamer with Homebrew or MacPorts (see later). Next install OpenSSL and libplist: these can be built from source (see -below) but it is easier to get them using MacPorts "sudo port install -openssl libplist-devel" or Homebrew "brew install openssl libplist". -Only the static forms of the two libraries will used for the macOS -build, so they do not need to remain installed after you have built -uxplay: if you don't have MacPorts or Homebrew installed, you can just -install one of these package-managers before building uxplay, and +above); only the static forms of the two libraries will used for the +macOS build, so you can uninstall them ("sudo make uninstall") after you +have built UxPlay. It may be easier to get them using MacPorts "sudo +port install openssl libplist-devel" or Homebrew "brew install openssl +libplist". if you don't have MacPorts or Homebrew installed, you can +just install one of these package-managers before building uxplay, and uninstall it afterwards if you do not want to keep it. Unfortunately, Fink's openssl11-dev package currently doesn't supply the static (libcrypto.a) form of the needed OpenSLL library libcrypto, and its @@ -252,23 +275,6 @@ expanded using the mouse or trackpad. In contrast, a window created with (stretched image); in this case the aspect ratio changes when the window width is changed by dragging its side. -***Building OpenSSL and libplist from source on macOS*** - -If you have have the standard GNU toolset (autoconf, automake, libtool, -etc.) installed, you can also download and compile the source code for -these libraries from , -. Install the downloaded -openssl by opening a terminal in your Downloads directory, and unpacking -the source distribution openssl-3.0.0.tar.gz , ("tar -xvzf -openssl-3.0.0.tar.gz ; cd openssl-3.0.0"). Then build/install with -"./config ; make ; sudo make install\_dev" and clean up after building -uxplay with "sudo make uninstall" in the same directory. Similarly, for -libplist, download the source as a zipfile from github as -[libplist-master.zip](https://github.com/libimobiledevice/libplist/archive/refs/heads/master.zip), -then unpack ("unzip libplist-master.zip ; cd libplist-master"), -build/install ("./autogen.sh ; make ; sudo make install") and clean up -after uxplay is built with "sudo make uninstall" in the same directory. - ***Other ways (Homebrew, MacPorts) to install GStreamer on macOS (not recommended):***