<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/29c76ea7f40ab5f63379fb2a06e470af714eb861">https://github.com/macports/macports-ports/commit/29c76ea7f40ab5f63379fb2a06e470af714eb861</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 29c76ea7f40ab5f63379fb2a06e470af714eb861
</span>Author: i0ntempest <szf1234@me.com>
AuthorDate: Thu Jul 9 03:46:03 2020 -0400

<span style='display:block; white-space:pre;color:#404040;'>    idevicerestore: submission
</span>---
 devel/idevicerestore/Portfile                      | 83 ++++++++++++++++++++++
 .../files/patch-postrelease-fixes.diff             | 71 ++++++++++++++++++
 2 files changed, 154 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/idevicerestore/Portfile b/devel/idevicerestore/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ee1e3a6eefd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/idevicerestore/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,83 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        libimobiledevice idevicerestore 1.0.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             LGPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@i0ntempest me.com:szf1234} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         A command-line application to restore firmware files to iOS devices.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    The idevicerestore application is a full reimplementation of all granular steps which \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    are performed during the restore of a firmware to a device. In general, upgrades and \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    downgrades are possible, however subject to availability of SHSH blobs from Apple for \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    signing the firmare files. Some key features are:\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Restore: Update firmware on iOS devices\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Firmware: Use official IPSW firmware archive file or a directory as source\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Update: Allows updating the device by default or erasing all data\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Download: On demand download of latest available firmware for a device\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Cache: Downloaded firmware files are cached locally\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Custom Firmware: Restore custom firmware files (requires bootrom exploit)\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Baseband: Allows you to skip NOR/Baseband upgrade\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* SHSH: Fetch TSS records and save them as ".shsh" files\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* DFU: Put devices in pwned DFU mode (limera1n devices only)\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* AP Ticket: Use custom AP ticket from a file\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* Cross-Platform: Tested on Linux, macOS, Windows and Android platforms\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    \n* History: Developed since 2010
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://www.libimobiledevice.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  f774ac598099e965bf4e9dcad53078e6dab66479 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  76ee2570745f9e876f89acf82ad91edf6e9083e08ceea429985a480cae1ddd67 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    106889
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq ${name}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles          patch-postrelease-fixes.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:autoconf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:automake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libtool \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         path:lib/pkgconfig/libusb-1.0.pc:libusb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:lib/libssl.dylib:openssl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:curl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libimobiledevice \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libirecovery \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libplist \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libzip \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:readline \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd       ./autogen.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport idevicerestore-devel {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    libimobiledevice idevicerestore 8ebee55718190c5bec5fb24128f2e3b986174397
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20200709
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  6a9819ea4cbf4385bcbf3b776728983c57f21838 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  ff7a74581c55f2348c1f5d4ef7190962173017f21bf92c030db4e6717ee90a19 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    107556
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-replace port:libimobiledevice \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libimobiledevice-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-replace port:libplist port:libplist-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-replace port:libirecovery port:libirecovery-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    conflicts       idevicerestore
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    livecheck.url   ${github.homepage}/commits/${github.livecheck.branch}.atom
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq ${name}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    conflicts       idevicerestore-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/idevicerestore/files/patch-postrelease-fixes.diff b/devel/idevicerestore/files/patch-postrelease-fixes.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..113bc6bbfe6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/idevicerestore/files/patch-postrelease-fixes.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,71 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/idevicerestore.c src/idevicerestore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0148974..7653125 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/idevicerestore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/idevicerestore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -901,7 +901,7 @@ int idevicerestore_start(struct idevicerestore_client_t* client)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Get filesystem name from build identity
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   char* fsname = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, "OS", &fsname) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for filesystem component\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for filesystem component\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/restore.c src/restore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 78bce3d..cd09c52 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/restore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/restore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1968,7 +1968,7 @@ static plist_t restore_get_se_firmware_data(restored_client_t restore, struct id
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2081,7 +2081,7 @@ static plist_t restore_get_savage_firmware_data(restored_client_t restore, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* now get actual component data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           free(comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2174,7 +2174,7 @@ static plist_t restore_get_yonkers_firmware_data(restored_client_t restore, stru
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           free(comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2264,7 +2264,7 @@ static plist_t restore_get_rose_firmware_data(restored_client_t restore, struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   comp_name = "Rap,RTKitOS";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ret = extract_component(client->ipsw, comp_path, &component_data, &component_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2290,7 +2290,7 @@ static plist_t restore_get_rose_firmware_data(restored_client_t restore, struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_has_component(build_identity, comp_name)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   ftab_free(ftab);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ret = extract_component(client->ipsw, comp_path, &component_data, &component_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2389,7 +2389,7 @@ static plist_t restore_get_veridian_firmware_data(restored_client_t restore, str
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (build_identity_get_component_path(build_identity, comp_name, &comp_path) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          error("ERROR: Unable get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          error("ERROR: Unable to get path for '%s' component\n", comp_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>