committed by
ThomasV
5 changed files with 210 additions and 26 deletions
@ -0,0 +1,15 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
RED='\033[0;31m' |
|||
BLUE='\033[0,34m' |
|||
NC='\033[0m' # No Color |
|||
function info { |
|||
printf "\r💬 ${BLUE}INFO:${NC} ${1}\n" |
|||
} |
|||
function fail { |
|||
printf "\r🗯 ${RED}ERROR:${NC} ${1}\n" |
|||
exit 1 |
|||
} |
|||
|
|||
build_dir=$(dirname "$1") |
|||
test -n "$build_dir" -a -d "$build_dir" || exit |
@ -0,0 +1,86 @@ |
|||
--- cdrkit-1.1.11.old/genisoimage/tree.c 2008-10-21 19:57:47.000000000 -0400
|
|||
+++ cdrkit-1.1.11/genisoimage/tree.c 2013-12-06 00:23:18.489622668 -0500
|
|||
@@ -1139,8 +1139,9 @@
|
|||
scan_directory_tree(struct directory *this_dir, char *path, |
|||
struct directory_entry *de) |
|||
{ |
|||
- DIR *current_dir;
|
|||
+ int current_file;
|
|||
char whole_path[PATH_MAX]; |
|||
+ struct dirent **d_list;
|
|||
struct dirent *d_entry; |
|||
struct directory *parent; |
|||
int dflag; |
|||
@@ -1164,7 +1165,8 @@
|
|||
this_dir->dir_flags |= DIR_WAS_SCANNED; |
|||
|
|||
errno = 0; /* Paranoia */ |
|||
- current_dir = opendir(path);
|
|||
+ //current_dir = opendir(path);
|
|||
+ current_file = scandir(path, &d_list, NULL, alphasort);
|
|||
d_entry = NULL; |
|||
|
|||
/* |
|||
@@ -1173,12 +1175,12 @@
|
|||
*/ |
|||
old_path = path; |
|||
|
|||
- if (current_dir) {
|
|||
+ if (current_file >= 0) {
|
|||
errno = 0; |
|||
- d_entry = readdir(current_dir);
|
|||
+ d_entry = d_list[0];
|
|||
} |
|||
|
|||
- if (!current_dir || !d_entry) {
|
|||
+ if (current_file < 0 || !d_entry) {
|
|||
int ret = 1; |
|||
|
|||
#ifdef USE_LIBSCHILY |
|||
@@ -1191,8 +1193,8 @@
|
|||
de->isorec.flags[0] &= ~ISO_DIRECTORY; |
|||
ret = 0; |
|||
} |
|||
- if (current_dir)
|
|||
- closedir(current_dir);
|
|||
+ if(d_list)
|
|||
+ free(d_list);
|
|||
return (ret); |
|||
} |
|||
#ifdef ABORT_DEEP_ISO_ONLY |
|||
@@ -1208,7 +1210,7 @@
|
|||
errmsgno(EX_BAD, "use Rock Ridge extensions via -R or -r,\n"); |
|||
errmsgno(EX_BAD, "or allow deep ISO9660 directory nesting via -D.\n"); |
|||
} |
|||
- closedir(current_dir);
|
|||
+ free(d_list);
|
|||
return (1); |
|||
} |
|||
#endif |
|||
@@ -1250,13 +1252,13 @@
|
|||
* The first time through, skip this, since we already asked |
|||
* for the first entry when we opened the directory. |
|||
*/ |
|||
- if (dflag)
|
|||
- d_entry = readdir(current_dir);
|
|||
+ if (dflag && current_file >= 0)
|
|||
+ d_entry = d_list[current_file];
|
|||
dflag++; |
|||
|
|||
- if (!d_entry)
|
|||
+ if (current_file < 0)
|
|||
break; |
|||
-
|
|||
+ current_file--;
|
|||
/* OK, got a valid entry */ |
|||
|
|||
/* If we do not want all files, then pitch the backups. */ |
|||
@@ -1348,7 +1350,7 @@
|
|||
insert_file_entry(this_dir, whole_path, d_entry->d_name); |
|||
#endif /* APPLE_HYB */ |
|||
} |
|||
- closedir(current_dir);
|
|||
+ free(d_list);
|
|||
|
|||
#ifdef APPLE_HYB |
|||
/* |
@ -0,0 +1,77 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
cdrkit_version=1.1.11 |
|||
cdrkit_download_path=http://distro.ibiblio.org/fatdog/source/600/c |
|||
cdrkit_file_name=cdrkit-${cdrkit_version}.tar.bz2 |
|||
cdrkit_sha256_hash=b50d64c214a65b1a79afe3a964c691931a4233e2ba605d793eb85d0ac3652564 |
|||
cdrkit_patches=cdrkit-deterministic.patch |
|||
genisoimage=genisoimage-$cdrkit_version |
|||
|
|||
libdmg_url=https://github.com/theuni/libdmg-hfsplus |
|||
|
|||
|
|||
export LD_PRELOAD=$(locate libfaketime.so.1) |
|||
export FAKETIME="2000-01-22 00:00:00" |
|||
export PATH=$PATH:~/bin |
|||
|
|||
. $(dirname "$0")/base.sh |
|||
|
|||
if [ -z "$1" ]; then |
|||
echo "Usage: $0 Electrum.app" |
|||
exit -127 |
|||
fi |
|||
|
|||
mkdir -p ~/bin |
|||
|
|||
if ! which ${genisoimage} > /dev/null 2>&1; then |
|||
mkdir -p /tmp/electrum-macos |
|||
cd /tmp/electrum-macos |
|||
info "Downloading cdrkit $cdrkit_version" |
|||
wget -nc ${cdrkit_download_path}/${cdrkit_file_name} |
|||
tar xvf ${cdrkit_file_name} |
|||
|
|||
info "Patching genisoimage" |
|||
cd cdrkit-${cdrkit_version} |
|||
patch -p1 < ../cdrkit-deterministic.patch |
|||
|
|||
info "Building genisoimage" |
|||
cmake . -Wno-dev |
|||
make genisoimage |
|||
cp genisoimage/genisoimage ~/bin/${genisoimage} |
|||
fi |
|||
|
|||
if ! which dmg > /dev/null 2>&1; then |
|||
mkdir -p /tmp/electrum-macos |
|||
cd /tmp/electrum-macos |
|||
info "Downloading libdmg" |
|||
LD_PRELOAD= git clone ${libdmg_url} |
|||
cd libdmg-hfsplus |
|||
info "Building libdmg" |
|||
cmake . |
|||
make |
|||
cp dmg/dmg ~/bin |
|||
fi |
|||
|
|||
${genisoimage} -version || fail "Unable to install genisoimage" |
|||
dmg -|| fail "Unable to install libdmg" |
|||
|
|||
rm -rf /tmp/electrum-macos/image > /dev/null 2>&1 |
|||
mkdir /tmp/electrum-macos/image/ |
|||
cp -r $1 /tmp/electrum-macos/image/ |
|||
|
|||
cd $build_dir |
|||
|
|||
${genisoimage} \ |
|||
-no-cache-inodes \ |
|||
-D \ |
|||
-l \ |
|||
-probe \ |
|||
-V "Electrum" \ |
|||
-no-pad \ |
|||
-r \ |
|||
-dir-mode 0755 \ |
|||
-apple \ |
|||
-o Electrum_uncompressed.dmg \ |
|||
/tmp/electrum-macos/image || fail "Unable to create uncompressed dmg" |
|||
|
|||
dmg dmg Electrum_uncompressed.dmg Electrum.dmg || fail "Unable to create compressed dmg" |
Loading…
Reference in new issue