Преглед изворни кода

some fixes, some paths are still wonky though. can create list and status files in a bit of a hacky way, but it should work

Kevin Bradley пре 3 година
родитељ
комит
27781494c6
1 измењених фајлова са 64 додато и 17 уклоњено
  1. 64 17
      the_memo2.sh

+ 64 - 17
the_memo2.sh

@@ -2,7 +2,7 @@
 
 BUILD_ROOT="$(pwd)"
 ROOT_LOG_FOLDER="$BUILD_ROOT/Logs"
-VERIFY="true"
+VERIFY="false"
 PLATFORM="AppleTVOS"
 PLATFORM_LOWER="appletvos"
 SDK_VERSION="$(xcrun --show-sdk-version --sdk $PLATFORM_LOWER)"
@@ -21,9 +21,10 @@ FORCE="false"
 LOG_VERBOSE=""
 OPEN_LOG="false"
 TRIM="false"
+CREATE_STATUS="false"
 
 usage() {
-    echo "usage: $0 [-s|--speak-updates] [-i|--insecure] [-v|--verbose] [-f|--force] [-o|--open-active-log] [-t|--trim-bootstrap]"
+    echo "usage: $0 [-s|--speak-updates] [-V|--verify] [-v|--verbose] [-f|--force] [-o|--open-active-log] [-t|--trim-bootstrap] [-c|--create-status]"
     trap - INT TERM EXIT
     exit 0
 }
@@ -37,11 +38,11 @@ while test $# -gt 0; do
             LOG_VERBOSE="verbose"
             shift
             ;;
-        -i|--insecure|--no-verify)
-            VERIFY="false"
-            echo "Working without verifying packages..."
-            echo "YOU BETTER KNOW WHAT YOU'RE DOING"
-            sleep 2 #Give them a couple seconds to think about what they're about to do
+        -V|--verify|)
+            VERIFY="true"
+            #echo "Working without verifying packages..."
+            #echo "YOU BETTER KNOW WHAT YOU'RE DOING"
+            #sleep 2 #Give them a couple seconds to think about what they're about to do
             shift
             ;;
         -f|--force)
@@ -60,12 +61,21 @@ while test $# -gt 0; do
             OPEN_LOG="true"
             shift
             ;;
+        -c|--create-status|--create)
+            CREATE_STATUS="true"
+            shift
+            ;;
         *)
             break
             ;;
     esac
 done
 
+patchAvailability() {
+    PATCH_FILE=$1
+    sed -i --  "s|__TVOS_PROHIBITED||" "$PATCH_FILE"
+}
+
 # for some reason the files signed this way don't run on tvOS 9 anymore
 codesign() {
     BIN=$1
@@ -1287,11 +1297,11 @@ buildDpkg() {
         export CXXFLAGS=$CFLAGS
         export LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH"
         if [[ $LOG_VERBOSE == "verbose"* ]]; then
-            ./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=aarch64-apple-darwin --disable-dependency-tracking  PERL_LIBDIR='$(prefix)/lib/'  --disable-dselect --localstatedir="/var/" --sysconfdir="/fs/jb/etc" | tee "${LOG_FILE}"
+            ./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=aarch64-apple-darwin --disable-dependency-tracking  PERL_LIBDIR='$(prefix)/lib/'  --disable-dselect --localstatedir="/var/" --sysconfdir="/fs/jb/usr/etc" | tee "${LOG_FILE}"
             EC=$(grep "configure: error:" -i "${LOG_FILE}" -c)
             checkStatus $PKG_NAME $EC "false"
         else
-            (./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=aarch64-apple-darwin --disable-dependency-tracking  PERL_LIBDIR='$(prefix)/lib/'  --disable-dselect --localstatedir="/var/" --sysconfdir="/fs/jb/etc" > "${LOG_FILE}" 2>&1)
+            (./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=aarch64-apple-darwin --disable-dependency-tracking  PERL_LIBDIR='$(prefix)/lib/'  --disable-dselect --localstatedir="/var/" --sysconfdir="/fs/jb/usr/etc" > "${LOG_FILE}" 2>&1)
             if [[ $OPEN_LOG == "true" ]]; then
                 open "${LOG_FILE}"
             fi
@@ -1643,7 +1653,7 @@ buildAPT() {
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-mark"
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-sortpkgs"
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-inst.2.0.0.dylib"
-            codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
+           
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-private.0.0.0.dylib"
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/apt-helper"
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/cdrom"
@@ -1661,10 +1671,13 @@ buildAPT() {
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/apt"
             codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/dump"
 
+            sed -i -- "s|/bin/sh|/fs/jb/bin/sh|" "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-key"
+            rm "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-key--"
             #lzma conflicts with built in libraries we make -j8 an extra copy of our version of lzma in the xz build process
             #here we change libapt-pkg*.dylib to look for this version instead
             #if we do not do this, apt-get will fail from our helper tool
             install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib $SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib
+            codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
             cd "$BUILD_ROOT"
     fi
 }
@@ -1744,6 +1757,28 @@ if [[ "$VERIFY" == "true" ]]; then
     gpg --recv-key 69184620 7C0135FB088AAF6C66C650B9BB5869F064EA74AB 702353E0F7E48EDB 7FD9FCCB000BEEEE A15B725964A95EE5 D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 031EC2536E580D8EA286A9F22071B08A33BD3F06 9D5EAAF69013B842
 fi
 
+createListFile() {
+    echo -e "\ncreateListFile $1\n"
+    DEB=$1
+    INFOPATH="$SKEL_PREFIX/private/var/lib/dpkg/info"
+    PKG=$(dpkg-deb -f "$DEB" Package 2>/dev/null)
+    #echo $PKG list
+    rm -rf tmp
+    mkdir tmp
+    dpkg-deb -e "$DEB" tmp
+    dpkg-deb -c "$DEB" | awk '{ print $6 }' | cut -c 2- > $PKG.list #| sed "s|usr|fs/usr|g"
+    sed -e '1 s|/|/.|' $PKG.list > $INFOPATH/$PKG.list
+    rm $PKG.list
+    FILES="tmp/*"
+    for f in $FILES; do
+       file=${f##*/}
+        if [[ "$file" != "control" ]]; then
+            echo "Processing $file in $PKG..";
+            cp "$f" "$INFOPATH/$PKG.$file"
+        fi
+    done
+}
+
 createStatusFile() {
     cd "$BUILD_ROOT"
     rm -rf status
@@ -1755,6 +1790,16 @@ createStatusFile() {
         echo "Status: install ok installed" >> status
         echo "" >> status
         echo "" >> available
+        createListFile $f
+    done
+    for f in ndeb/*.deb; do
+        echo "Processing $f..";
+        dpkg-deb -f "$f" >> status
+        dpkg-deb -f "$f" >> available
+        echo "Status: install ok installed" >> status
+        echo "" >> status
+        echo "" >> available
+        createListFile $f
     done
     if [[ -d "$SKEL_PREFIX/private/var/lib/dpkg/" ]]; then
         mv status "$SKEL_PREFIX/private/var/lib/dpkg/status"
@@ -1779,16 +1824,16 @@ cleanBootstrap() {
     rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/readline"
 
     # Get rid of dev stuff
-    rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/include"
-    rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/aclocal"
-    rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/pkgconfig"
-    rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/common-lisp"
+    #rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/include"
+    #rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/aclocal"
+    #rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/pkgconfig"
+    #rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/common-lisp"
 
     # remove all the static and libtool libraries from the bootstrap, they take up a LOT of space
-    cd "$SKEL_PREFIX/$ROOT_PREFIX/lib"
+    #cd "$SKEL_PREFIX/$ROOT_PREFIX/lib"
     rm *.a
     rm *.la
-    rmdir "$SKEL_PREFIX/$ROOT_PREFIX/var"
+    #rmdir "$SKEL_PREFIX/$ROOT_PREFIX/var"
 
     #Get rid of non-skel packages which were needed to compile
     rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-error-config"
@@ -1815,7 +1860,9 @@ if [[ $TRIM == "true" ]]; then
     cleanBootstrap
 fi
 
-#createStatusFile
+if [[ $CREATE_STATUS == "true" ]]; then
+    createStatusFile
+fi
 
 echo -e "\nDone!\n"
 sayIfVerbal "Finished!"