|
@@ -24,7 +24,9 @@ PKG_NAME="" #The name of our current package being built
|
|
|
PKG_VERSION="-1"
|
|
|
WORKING_DIR="" #This stores the working directory under BUILD_ROOT
|
|
|
BUILD_BASH="false"
|
|
|
-NITOTV="false"
|
|
|
+NITOTV="true"
|
|
|
+CLEAN_SKEL="false"
|
|
|
+MOVE_DPKG="true"
|
|
|
|
|
|
set -e
|
|
|
# set trap to help debug any build errors
|
|
@@ -139,8 +141,12 @@ fi
|
|
|
if [ -z "$SDK_PATH" ]; then
|
|
|
if [ "$PLATFORM" == "AppleTVOS" ]; then
|
|
|
SDK_PATH="`xcrun --sdk appletvos --show-sdk-path`"
|
|
|
+ SDK_VERSION="`xcrun --show-sdk-version --sdk appletvos`"
|
|
|
+ IOKIT_MATCH="`find ~/Library/Developer/Xcode/tvOS\ DeviceSupport/ -name IOKit.framework | grep "$SDK_VERSION" -m 1`"
|
|
|
+ echo "IOKit match: $IOKIT_MATCH"
|
|
|
elif [ "$PLATFORM" == "WatchOS" ]; then
|
|
|
SDK_PATH="`xcrun --sdk watchos --show-sdk-path`"
|
|
|
+ SDK_VERSION="`xcrun --show-sdk-version --sdk watchos`"
|
|
|
fi
|
|
|
elif [ ${SDK_PATH: -1} == "/" ]; then
|
|
|
# Some of our sed's require SDK_PATH *not* end with /
|
|
@@ -171,6 +177,41 @@ prepSDK() {
|
|
|
echo "Missing <sys/ttydev.h>. Moving it in from MacOSX SDK (with sudo)"
|
|
|
sudo cp "`xcrun --sdk macosx --show-sdk-path`/usr/include/sys/ttydev.h" "$SDK_PATH/usr/include/sys/ttydev.h"
|
|
|
fi
|
|
|
+ if [ ! -e "$SDK_PATH/usr/include/lockdown.h" ]; then
|
|
|
+ echo "Missing lockdown.h! Generating the bare essentials for apt to build..."
|
|
|
+ echo "#ifndef LOCKDOWN_LOCKDOWN_H" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#define LOCKDOWN_LOCKDOWN_H" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#include <CoreFoundation/CFString.h>" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#ifdef __cplusplus" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "extern \"C\" {" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#endif" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "extern CFStringRef kLockdownUniqueDeviceIDKey;" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "extern void *lockdown_connect(void);" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "extern CFStringRef lockdown_copy_value(void *lockdown, void *null, CFStringRef key);" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "extern void lockdown_disconnect(void *lockdown);" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#ifdef __cplusplus" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "}" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#endif" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+ echo "#endif/*LOCKDOWN_LOCKDOWN_H*/" >> "$SDK_PATH/usr/include/lockdown.h"
|
|
|
+
|
|
|
+ fi
|
|
|
+
|
|
|
+ echo "IOKit: $SDK_PATH/System/Library/Frameworks/IOKit.framework"
|
|
|
+ if [ ! -d "$SDK_PATH/System/Library/Frameworks/IOKit.framework" ]; then
|
|
|
+ if [ ! -z "$IOKIT_MATCH" ]; then
|
|
|
+ echo "we do indeed have an IOKit match and IOKIt is missing!!"
|
|
|
+ echo "cp -r $IOKIT_MATCH $SDK_PATH/System/Library/Frameworks/"
|
|
|
+ cp -r "$IOKIT_MATCH" "$SDK_PATH/System/Library/Frameworks/"
|
|
|
+
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+
|
|
|
#I forget.. Readline perhaps?
|
|
|
#IOKit
|
|
|
#~/Library/Developer/Xcode/tvOS\ DeviceSupport
|
|
@@ -209,12 +250,12 @@ codesign() {
|
|
|
elif [ "$CODESIGN_TOOL" == "ldid" ]; then
|
|
|
cp "$1" out.bin
|
|
|
sudo chmod 777 out.bin
|
|
|
- ldid -S out.bin
|
|
|
+ ldid -S"$BUILD_ROOT/ent.plist" out.bin
|
|
|
sudo cp -X out.bin "$1"
|
|
|
elif [ "$CODESIGN_TOOL" == "ldid2" ]; then
|
|
|
cp "$1" out.bin
|
|
|
sudo chmod 777 out.bin
|
|
|
- ldid2 -S out.bin
|
|
|
+ ldid2 -S"$BUILD_ROOT/ent.plist" out.bin
|
|
|
sudo cp -X out.bin "$1"
|
|
|
fi
|
|
|
}
|
|
@@ -225,22 +266,27 @@ notifyProgress() {
|
|
|
}
|
|
|
|
|
|
createListFile() {
|
|
|
- if [ ! -d "$SKEL_PREFIX/var/lib/dpkg/info/" ]; then
|
|
|
- mkdir -p "$SKEL_PREFIX/var/lib/dpkg/info/"
|
|
|
- fi
|
|
|
+
|
|
|
+ INFOPATH="$SKEL_PREFIX/var/lib/dpkg/info"
|
|
|
+
|
|
|
+ if [ -d "$SKEL_PREFIX/private/var/lib/dpkg/info/" ]; then
|
|
|
+ INFOPATH="$SKEL_PREFIX/private/var/lib/dpkg/info"
|
|
|
+ elif [ ! -d "$SKEL_PREFIX/var/lib/dpkg/info/" ]; then
|
|
|
+ mkdir -p "$SKEL_PREFIX/var/lib/dpkg/info/"
|
|
|
+ fi
|
|
|
|
|
|
#md5 -r == md5sum
|
|
|
MD5="md5sum"
|
|
|
command -v md5sum >/dev/null 2>&1 || { MD5="md5 -r" ; }
|
|
|
- find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" -exec $MD5 {} \; | awk '{ print $1 " " $2 }' | sed "s|$BUILD_ROOT/$WORKING_DIR/deb/||g" >> "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.md5sums"
|
|
|
+ find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" -exec $MD5 {} \; | awk '{ print $1 " " $2 }' | sed "s|$BUILD_ROOT/$WORKING_DIR/deb/||g" >> "$INFOPATH/$PKG_NAME.md5sums"
|
|
|
|
|
|
- find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" | sed "s|$BUILD_ROOT/$WORKING_DIR/deb||g" >> "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.list"
|
|
|
+ find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" | sed "s|$BUILD_ROOT/$WORKING_DIR/deb||g" >> "$INFOPATH/$PKG_NAME.list"
|
|
|
FILES="$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*"
|
|
|
for f in $FILES; do
|
|
|
file=${f##*/}
|
|
|
if [ "$file" != "control" ]; then
|
|
|
echo "Processing $file in $PKG_NAME..";
|
|
|
- cp "$f" "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.$file"
|
|
|
+ cp "$f" "$INFOPATH/$PKG_NAME.$file"
|
|
|
fi
|
|
|
done
|
|
|
}
|
|
@@ -258,8 +304,16 @@ createStatusFile() {
|
|
|
echo "" >> status
|
|
|
echo "" >> available
|
|
|
done
|
|
|
- mv status "$SKEL_PREFIX/var/lib/dpkg/status"
|
|
|
- mv available "$SKEL_PREFIX/var/lib/dpkg/available"
|
|
|
+ if [ -d "$SKEL_PREFIX/private/var/lib/dpkg/" ]; then
|
|
|
+ mv status "$SKEL_PREFIX/private/var/lib/dpkg/status"
|
|
|
+ mv available "$SKEL_PREFIX/private/var/lib/dpkg/available"
|
|
|
+ else
|
|
|
+ echo "### [WARNING]: $SKEL_PREFIX/private/var/lib/dpkg/ is missing! this bootstrap is likely malformed..."
|
|
|
+ echo ""
|
|
|
+ mv status "$SKEL_PREFIX/var/lib/dpkg/status"
|
|
|
+ mv available "$SKEL_PREFIX/var/lib/dpkg/available"
|
|
|
+ fi
|
|
|
+
|
|
|
}
|
|
|
|
|
|
checkPGPSig() {
|
|
@@ -802,7 +856,7 @@ buildBash() {
|
|
|
# 10.2 and up
|
|
|
buildBashAndFriends() {
|
|
|
notifyProgress "Building readline"
|
|
|
- buildReadline
|
|
|
+ buildReadline
|
|
|
notifyProgress "Building ncurses"
|
|
|
buildNcurses
|
|
|
notifyProgress "Building bash"
|
|
@@ -1943,16 +1997,20 @@ buildOpenSSL() {
|
|
|
export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
|
|
|
#export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"
|
|
|
|
|
|
-
|
|
|
- ./Configure ios64-cross no-shared no-dso no-hw no-engine --prefix="/$ROOT_PREFIX"
|
|
|
+ ./Configure ios64-cross no-dso no-hw no-engine --prefix="/$ROOT_PREFIX"
|
|
|
+ #./Configure ios64-cross no-shared no-dso no-hw no-engine --prefix="/$ROOT_PREFIX"
|
|
|
#make
|
|
|
|
|
|
make DESTDIR="$SKEL_PREFIX" install
|
|
|
codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/openssl"
|
|
|
+#codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libcrypto.dylib"
|
|
|
+ codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libcrypto.1.1.dylib"
|
|
|
|
|
|
initDebStructure
|
|
|
make DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
|
|
|
codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/openssl"
|
|
|
+#codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcrypto.dylib"
|
|
|
+ codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcrypto.1.1.dylib"
|
|
|
|
|
|
echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
|
|
|
echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
|
|
@@ -2437,13 +2495,13 @@ buildDpkg() {
|
|
|
|
|
|
buildDPKGAndDependencies() {
|
|
|
notifyProgress "Building zlib"
|
|
|
- buildZLib
|
|
|
+ buildZLib
|
|
|
notifyProgress "Building xz"
|
|
|
- buildXZ
|
|
|
+ buildXZ
|
|
|
notifyProgress "Building bzip2"
|
|
|
- buildBZip2
|
|
|
+ buildBZip2
|
|
|
notifyProgress "Building lz4"
|
|
|
- buildLZ4
|
|
|
+ buildLZ4
|
|
|
notifyProgress "Building openSSL"
|
|
|
buildOpenSSL
|
|
|
notifyProgress "Building curl"
|
|
@@ -3487,14 +3545,18 @@ installSubstrate() {
|
|
|
#main functions
|
|
|
#main
|
|
|
#Entry Point
|
|
|
-echo "Cleaning the slate"
|
|
|
-sudo rm -rf skel extra_pkg
|
|
|
-mkdir -p skel/etc
|
|
|
-mkdir extra_pkg
|
|
|
+if [ "$CLEAN_SKEL" == "true" ]; then
|
|
|
+ echo "Cleaning the slate"
|
|
|
+ sudo rm -rf skel extra_pkg
|
|
|
+ mkdir -p skel/etc
|
|
|
+ mkdir extra_pkg
|
|
|
+fi
|
|
|
+
|
|
|
|
|
|
# Ensure our SDK has all the required "extras" installed/setup
|
|
|
prepSDK
|
|
|
|
|
|
+#exit 0
|
|
|
#Begin Building
|
|
|
#DO NOT BUILD THE 11 UTILS IN UNTIL YOU ARE BUILDING EXPLICITLY FOR 11+
|
|
|
#/bin/bash exists on 9 and 10 and if overwritten without unthether will likely brick.
|
|
@@ -3505,56 +3567,79 @@ buildBasicUtils
|
|
|
buildDPKGAndDependencies
|
|
|
buildAPTAndDependencies
|
|
|
|
|
|
-#installSubstrate
|
|
|
-#rm -rf deb
|
|
|
-#mkdir -p deb/DEBIAN
|
|
|
-#dpkg-deb -x nitoTVLatest.deb deb
|
|
|
-#dpkg-deb -e nitoTVLatest.deb deb/DEBIAN
|
|
|
-#createListFile "com.nito.nitoTV4"
|
|
|
-#dpkg-deb -x nitoTVLatest.deb "$SKEL_PREFIX"
|
|
|
+#clean out frivolous stuff to slim skel down to a reasonable size
|
|
|
+find "$SKEL_PREFIX" -type f -name .DS_Store -delete
|
|
|
+mkdir -p "$SKEL_PREFIX/private"
|
|
|
+mv "$SKEL_PREFIX/etc" "$SKEL_PREFIX/private/"
|
|
|
+mv "$SKEL_PREFIX/var" "$SKEL_PREFIX/private/"
|
|
|
+
|
|
|
+processDeb() {
|
|
|
+ PKG=$1
|
|
|
+ VER=$2
|
|
|
+ NAME=$3
|
|
|
+ rm -rf deb
|
|
|
+ mkdir -p deb/DEBIAN
|
|
|
+ dpkg-deb -x "$PKG" deb
|
|
|
+ dpkg-deb -e "$PKG" deb/DEBIAN
|
|
|
+ PKG_NAME="$NAME"
|
|
|
+ PKG_VERSION="$VER"
|
|
|
+ createListFile
|
|
|
+ dpkg-deb -x "$PKG" "$SKEL_PREFIX"
|
|
|
+}
|
|
|
|
|
|
if [ "$NITOTV" == "true" ]; then
|
|
|
- installSubstrate
|
|
|
- rm -rf nitotv
|
|
|
+
|
|
|
+#installSubstrate
|
|
|
+ if [ -d "nitotv" ]; then
|
|
|
+ rm -rf nitotv
|
|
|
+ fi
|
|
|
+
|
|
|
mkdir -p nitotv
|
|
|
- cp nitotv_2.0-27_appletvos-arm64.deb com.nito.tssagent_1.0-appletvos-arm64.deb com.nito.uicache_0.0.1-245_appletvos-arm64.deb nitotv/
|
|
|
+ SUB_V=0.0.7
|
|
|
+ NTV_V=2.3-26
|
|
|
+ UIC_V=0.0.2-97
|
|
|
+ TWEAK_V=0.0.1-26
|
|
|
+ MORPH_V=1.0-1
|
|
|
+ SHIM_V=0.0.1-1
|
|
|
+ SSH_V=7.6p1-4
|
|
|
+ SSH_DEB=openssh_"$SSH_V"_appletvos_arm64.deb
|
|
|
+ SHIM_DEB=mobilesubstrate_"$SHIM_V"_appletvos-arm64.deb
|
|
|
+ SUB_DEB=com.ex.libsubstitute_"$SUB_V"-coolstar_appletvos-arm64.deb
|
|
|
+ NTV_DEB=nitotv_"$NTV_V"_appletvos-arm64.deb
|
|
|
+ UIC_DEB=com.nito.uicache_"$UIC_V"_appletvos-arm64.deb
|
|
|
+ TSS_DEB=com.nito.tssagent_1.0-1.appletvos-arm64.deb
|
|
|
+ TWEAK_DEB=com.nito.tweakinject_"$TWEAK_V"_appletvos-arm64.deb
|
|
|
+ MORPH_DEB=com.morpheus.binpack_"$MORPH_V"_appletvos-arm64.deb
|
|
|
+ SAFETY_NET=com.nito.safetynet-1.0_appletvos_arm64.deb
|
|
|
+
|
|
|
cd nitotv
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$SUB_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$NTV_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$UIC_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$TSS_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$TWEAK_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$MORPH_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$SAFETY_NET"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$SHIM_DEB"
|
|
|
+ curl -LO "https://nitosoft.com/electra/deb/$SSH_DEB"
|
|
|
+
|
|
|
WORKING_DIR="nitotv"
|
|
|
- rm -rf deb
|
|
|
- mkdir -p deb/DEBIAN
|
|
|
- dpkg-deb -x nitotv_2.0-27_appletvos-arm64.deb deb
|
|
|
- dpkg-deb -e nitotv_2.0-27_appletvos-arm64.deb deb/DEBIAN
|
|
|
- PKG_NAME="com.nito.nitotv4"
|
|
|
- PKG_VERSION="2.0-27"
|
|
|
- createListFile
|
|
|
- dpkg-deb -x nitotv_2.0-27_appletvos-arm64.deb "$SKEL_PREFIX"
|
|
|
|
|
|
- rm -rf deb
|
|
|
- mkdir -p deb/DEBIAN
|
|
|
- dpkg-deb -x com.nito.tssagent_1.0-appletvos-arm64.deb deb
|
|
|
- dpkg-deb -e com.nito.tssagent_1.0-appletvos-arm64.deb deb/DEBIAN
|
|
|
- PKG_NAME="com.nito.tssagent"
|
|
|
- PKG_VERSION="1.0"
|
|
|
- createListFile
|
|
|
- dpkg-deb -x com.nito.tssagent_1.0-appletvos-arm64.deb "$SKEL_PREFIX"
|
|
|
+ processDeb "$SUB_DEB" "$SUB_V" "com.ex.libsubstitute"
|
|
|
+ processDeb "$TWEAK_DEB" "$TWEAK_V" "com.nito.tweakinject"
|
|
|
+ processDeb "$NTV_DEB" "$NTV_V" "com.nito.nitotv4"
|
|
|
+ processDeb "$TSS_DEB" "1.0-1" "com.nito.tssagent"
|
|
|
+ processDeb "$UIC_DEB" "$UIC_V" "com.nito.uicache"
|
|
|
+ processDeb "$MORPH_DEB" "$MORPH_V" "com.morpheus.binpack"
|
|
|
+ processDeb "$SAFETY_NET" "1.0" "com.nito.safetynet"
|
|
|
+ processDeb "$SHIM_DEB" "$SHIM_V" "mobilesubstrate"
|
|
|
+ processDeb "$SSH_DEB" "$SSH_V" "openssh"
|
|
|
+ mv *.deb ..
|
|
|
|
|
|
- rm -rf deb
|
|
|
- mkdir -p deb/DEBIAN
|
|
|
- dpkg-deb -x com.nito.uicache_0.0.1-245_appletvos-arm64.deb deb
|
|
|
- dpkg-deb -e com.nito.uicache_0.0.1-245_appletvos-arm64.deb deb/DEBIAN
|
|
|
- PKG_NAME="com.nito.uicache"
|
|
|
- PKG_VERSION="0.0.1-245"
|
|
|
- createListFile
|
|
|
- dpkg-deb -x com.nito.uicache_0.0.1-245_appletvos-arm64.deb "$SKEL_PREFIX"
|
|
|
fi
|
|
|
|
|
|
-createStatusFile
|
|
|
|
|
|
-#clean out frivolous stuff to slim skel down to a reasonable size
|
|
|
-find "$SKEL_PREFIX" -type f -name .DS_Store -delete
|
|
|
-mkdir -p "$SKEL_PREFIX/private"
|
|
|
-mv "$SKEL_PREFIX/etc" "$SKEL_PREFIX/private/"
|
|
|
-mv "$SKEL_PREFIX/var" "$SKEL_PREFIX/private/"
|
|
|
+createStatusFile
|
|
|
|
|
|
#clean out symbolic links that you don't want to overwrite
|
|
|
unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib"
|
|
@@ -3592,6 +3677,8 @@ rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ncurses6-config"
|
|
|
rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/npth-config"
|
|
|
rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ntbtls-config"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
# for getting permissions right, try to mimic them as closely as possible to the default ones
|
|
|
# Still need to do this for debs, but oh well. We just won't use the yet :P
|
|
|
sudo chown -R root:wheel "$SKEL_PREFIX/$ROOT_PREFIX"
|
|
@@ -3602,6 +3689,19 @@ sudo chown -R root:wheel "$SKEL_PREFIX/private/var"
|
|
|
#sudo chmod 6755 "$SKEL_PREFIX/usr/bin/nitoUpdate"
|
|
|
rm -rf skel.tgz
|
|
|
cd "$SKEL_PREFIX"
|
|
|
+
|
|
|
+if [ "$MOVE_DPKG" == "true" ]; then
|
|
|
+ if [ ! -d "Library" ]; then
|
|
|
+ sudo mkdir Library
|
|
|
+ fi
|
|
|
+ sudo mv private/var/lib/dpkg Library/
|
|
|
+ pushd private/var/lib/
|
|
|
+ sudo ln -s /Library/dpkg .
|
|
|
+ popd
|
|
|
+ pwd
|
|
|
+
|
|
|
+fi
|
|
|
+
|
|
|
if [ "$NITOTV" == "true" ]; then
|
|
|
sudo chown root:admin "$SKEL_PREFIX/Applications"
|
|
|
sudo chown -R root:wheel "$SKEL_PREFIX/Library"
|