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