Ticket #1152: commflag.patch
File commflag.patch, 22.9 KB (added by , 18 years ago) |
---|
-
libs/libmythtv/jobqueue.cpp
1705 1705 "autodetect" : 1706 1706 QString::number(transcoder); 1707 1707 1708 QString path = gContext->GetInstallPrefix() + "/bin/mythtranscode"; 1708 QString path = gContext->GetAppPath("mythtranscode"); 1709 1709 1710 QString command = QString("%1 -j %2 -V %3 -p %4 %5") 1710 1711 .arg(path).arg(jobID).arg(print_verbose_messages) 1711 1712 .arg(profilearg.ascii()).arg(useCutlist ? "-l" : ""); … … 2008 2009 gContext->LogEntry("commflag", LP_NOTICE, msg, logDesc); 2009 2010 2010 2011 int breaksFound = 0; 2011 QString path = gContext->Get InstallPrefix() + "/bin/mythcommflag";2012 QString path = gContext->GetAppPath("mythcommflag"); 2012 2013 QString cmd = QString("%1 -j %2 -V %3") 2013 2014 .arg(path).arg(jobID).arg(print_verbose_messages); 2014 2015 -
libs/libmythtv/progfind.h
95 95 96 96 TV *m_player; 97 97 98 QString baseDir;99 98 QString *searchData; 100 99 QString *initData; 101 100 QString *progData; -
libs/libmythtv/progfind.cpp
88 88 inFill = false; 89 89 needFill = false; 90 90 91 baseDir = gContext->GetInstallPrefix();92 93 91 listRect = QRect(0, 0, 0, 0); 94 92 infoRect = QRect(0, 0, 0, 0); 95 93 -
libs/libmyth/lcddevice.cpp
142 142 { 143 143 // we need to start the mythlcdserver 144 144 startedServer = true; 145 system(gContext->Get InstallPrefix() + "/bin/mythlcdserver-v none&");145 system(gContext->GetAppPath("mythlcdserver") + " -v none&"); 146 146 // have to disconnect the error signal otherwise we get connection refused 147 147 // errors while the server is starting up 148 148 disconnect(socket, SIGNAL(error(int)), 0, 0); -
libs/libmyth/mythcontext.h
264 264 void BlockShutdown(void); 265 265 void AllowShutdown(void); 266 266 267 QString Get InstallPrefix(void);267 QString GetAppPath(QString app_name); 268 268 QString GetShareDir(void); 269 269 QString GetLibraryDir(void); 270 270 static QString GetConfDir(void); -
libs/libmyth/mythcontext.cpp
3 3 #include <qimage.h> 4 4 #include <qpixmap.h> 5 5 #include <qdir.h> 6 #include <qfileinfo.h> 6 7 #include <qpainter.h> 7 8 #include <unistd.h> 8 9 #include <qsqldatabase.h> … … 185 186 Settings *m_settings; 186 187 Settings *m_qtThemeSettings; 187 188 188 QString m_installprefix; 189 QDir m_self_directory; 190 #ifdef CONFIG_DARWIN 191 bool m_in_package; 192 #endif 193 QString m_share_parent; 189 194 190 195 bool m_gui; 191 196 bool m_backend; … … 254 259 }; 255 260 256 261 262 namespace 263 { 264 QDir compute_self_directory() 265 { 266 #if QT_VERSION >= 0x030200 267 return qApp->applicationDirPath(); 268 #else 269 QString appPath = QFileInfo(qApp->argv()[0]).absFilePath(); 270 return QDir(appPath.left(appPath.findRev("/"))); 271 #endif 272 } 273 } 257 274 258 275 MythContextPrivate::MythContextPrivate(MythContext *lparent) 259 276 : parent(lparent), 260 277 m_settings(new Settings()), m_qtThemeSettings(new Settings()), 261 m_installprefix(PREFIX), 278 m_self_directory( compute_self_directory() ), 279 #ifdef CONFIG_DARWIN 280 m_in_package( m_self_directory.path().contains(".app/Contents/MacOS") ), 281 #endif 282 m_share_parent(), 262 283 m_gui(false), m_backend(false), m_themeloaded(false), 263 284 m_menuthemepathname(QString::null), m_themepathname(QString::null), 264 285 m_backgroundimage(NULL), … … 283 304 display_res(NULL), 284 305 m_priv_mutex(new QMutex(true)) 285 306 { 307 286 308 char *tmp_installprefix = getenv("MYTHTVDIR"); 287 if (tmp_installprefix) 288 m_installprefix = tmp_installprefix; 309 QString installprefix(tmp_installprefix ? tmp_installprefix : PREFIX); 289 310 290 #if QT_VERSION >= 0x030200 291 QDir prefixDir = qApp->applicationDirPath(); 292 #else 293 QString appPath = QFileInfo(qApp->argv()[0]).absFilePath(); 294 QDir prefixDir(appPath.left(appPath.findRev("/"))); 295 #endif 311 #ifdef CONFIG_DARWIN 312 QDir resource_dir(m_self_directory); 313 resource_dir.cd("../Resources"); 314 if (m_in_package && QDir(resource_dir.canonicalPath() + "/share").exists()) 315 { 316 m_share_parent = resource_dir.canonicalPath(); 317 } 318 else 319 #endif 296 320 297 if (QDir( m_installprefix).isRelative())321 if (QDir(installprefix).isRelative()) 298 322 { 323 QDir prefixDir(m_self_directory); 299 324 // If the PREFIX is relative, evaluate it relative to our 300 325 // executable directory. This can be fragile on Unix, so 301 326 // use relative PREFIX values with care. 302 prefixDir.cd( m_installprefix);303 m_ installprefix= prefixDir.canonicalPath();327 prefixDir.cd(installprefix); 328 m_share_parent = prefixDir.canonicalPath(); 304 329 } 305 else if (prefixDir.path().contains(".app/Contents/MacOS"))330 else 306 331 { 307 prefixDir.cd("../Resources"); 308 if (QDir(prefixDir.canonicalPath() + "/share").exists()) 309 m_installprefix = prefixDir.canonicalPath(); 332 m_share_parent = installprefix; 310 333 } 334 311 335 VERBOSE(VB_IMPORTANT, QString("Using runtime prefix = %1") 312 .arg(m_ installprefix));336 .arg(m_share_parent)); 313 337 } 314 338 315 339 // Get screen size from Qt. If the windowing system environment … … 1091 1115 return GetSetting("RecordFilePrefix"); 1092 1116 } 1093 1117 1094 QString MythContext::Get InstallPrefix(void)1118 QString MythContext::GetAppPath(QString executable_name) 1095 1119 { 1096 return d->m_installprefix; 1120 #ifdef CONFIG_DARWIN 1121 if ( d->m_in_package ) 1122 { 1123 QString path(d->m_self_directory.path() + "/" + executable_name); 1124 if ( QFileInfo(path).exists() ) 1125 return path; 1126 } 1127 #endif 1128 return d->m_share_parent + "/bin/" + executable_name; 1097 1129 } 1098 1130 1099 1131 QString MythContext::GetConfDir(void) … … 1115 1147 1116 1148 QString MythContext::GetShareDir(void) 1117 1149 { 1118 return d->m_ installprefix+ "/share/mythtv/";1150 return d->m_share_parent + "/share/mythtv/"; 1119 1151 } 1120 1152 1121 1153 QString MythContext::GetLibraryDir(void) 1122 1154 { 1123 return d->m_ installprefix+ "/lib/mythtv/";1155 return d->m_share_parent + "/lib/mythtv/"; 1124 1156 } 1125 1157 1126 1158 QString MythContext::GetThemesParentDir(void) … … 1180 1212 1181 1213 bool MythContext::LoadSettingsFiles(const QString &filename) 1182 1214 { 1183 return d->m_settings->LoadSettingsFiles(filename, d->m_ installprefix);1215 return d->m_settings->LoadSettingsFiles(filename, d->m_share_parent); 1184 1216 } 1185 1217 1186 1218 void MythContext::LoadQtConfig(void) … … 1346 1378 1347 1379 void MythContext::CacheThemeImages(void) 1348 1380 { 1349 QString baseDir = d->m_installprefix + "/share/mythtv/themes/default/";1381 QString baseDir = GetThemesParentDir() + "default/"; 1350 1382 1351 1383 if (d->m_screenwidth == d->m_baseWidth && d->m_screenheight == d->m_baseHeight) 1352 1384 return; … … 1632 1664 if (dir.exists()) 1633 1665 return testdir; 1634 1666 1635 testdir = d->m_installprefix + "/share/mythtv/themes/"+ themename;1667 testdir = GetThemesParentDir() + themename; 1636 1668 dir.setPath(testdir); 1637 1669 if (dir.exists()) 1638 1670 return testdir; … … 1646 1678 // Don't complain about the "default" theme being missing 1647 1679 if (themename == QObject::tr("Default")) 1648 1680 { 1649 testdir = d->m_installprefix + "/share/mythtv/";1681 testdir = GetShareDir(); 1650 1682 dir.setPath(testdir); 1651 1683 if (dir.exists()) 1652 1684 return testdir; 1653 1685 } 1654 1686 1655 testdir = d->m_installprefix + "/share/mythtv/themes/G.A.N.T.";1687 testdir = GetThemesParentDir() + "G.A.N.T."; 1656 1688 dir.setPath(testdir); 1657 1689 if (dir.exists()) 1658 1690 return testdir; … … 2019 2051 2020 2052 bool MythContext::FindThemeFile(QString &filename) 2021 2053 { 2022 QString baseDir = d->m_installprefix + "/share/mythtv/themes/default/";2054 QString baseDir = GetThemesParentDir() + "/default/"; 2023 2055 QString file; 2024 2056 int pathStart = filename.findRev('/'); 2025 2057 bool bFound = false; … … 2073 2105 { 2074 2106 if (filename.left(5) == "myth:") 2075 2107 return NULL; 2076 QString baseDir = d->m_installprefix + "/share/mythtv/themes/default/";2108 QString baseDir = GetThemesParentDir() + "/default/"; 2077 2109 2078 2110 if (d->themecachedir != "" && fromcache) 2079 2111 { … … 2167 2199 { 2168 2200 if (filename.left(5) == "myth:") 2169 2201 return NULL; 2170 QString baseDir = d->m_installprefix + "/share/mythtv/themes/default/";2202 QString baseDir = GetThemesParentDir() + "/default/"; 2171 2203 2172 2204 if (d->themecachedir != "" && fromcache) 2173 2205 { -
programs/mythfrontend/globalsettings.cpp
2495 2498 { 2496 2499 GlobalLineEdit *be = new GlobalLineEdit("MythFillDatabasePath"); 2497 2500 be->setLabel(QObject::tr("mythfilldatabase Path")); 2498 be->setValue(gContext->Get InstallPrefix() + "/bin/mythfilldatabase");2501 be->setValue(gContext->GetAppPath("mythfilldatabase")); 2499 2502 be->setHelpText(QObject::tr("Path (including executable) of the " 2500 2503 "mythfilldatabase program.")); 2501 2504 return be; -
programs/mythwelcome/welcomedialog.h
67 67 QTimer *m_updateScreenTimer; 68 68 QTimer *m_timeTimer; 69 69 70 QString m_ installDir;70 QString m_shutdown_app; 71 71 QString m_timeFormat; 72 72 bool m_isRecording; 73 73 bool m_hasConflicts; -
programs/mythwelcome/welcomedialog.cpp
22 22 QString window_name, 23 23 QString theme_filename, 24 24 const char* name) 25 :MythThemedDialog(parent, window_name, theme_filename, name) 25 : MythThemedDialog(parent, window_name, theme_filename, name) 26 , m_shutdown_app(gContext->GetAppPath("mythshutdown")) 26 27 { 27 28 checkConnectionToServer(); 28 29 … … 33 34 34 35 gContext->addListener(this); 35 36 36 m_installDir = gContext->GetInstallPrefix();37 37 m_preRollSeconds = gContext->GetNumSetting("RecordPreRoll"); 38 38 m_idleWaitForRecordingTime = 39 39 gContext->GetNumSetting("idleWaitForRecordingTime", 15); … … 71 71 { 72 72 gContext->removeListener(this); 73 73 74 QString startFECmd = gContext->GetSetting("MythWelcomeStartFECmd", 75 m_installDir + "/bin/mythfrontend"); 74 QString startFECmd = gContext->GetSetting( 75 "MythWelcomeStartFECmd", 76 gContext->GetAppPath("mythfrontend")); 76 77 77 78 myth_system(startFECmd.ascii()); 78 79 … … 89 90 { 90 91 // mythshutdown --startup returns 0 for automatic startup 91 92 // 1 for manual startup 92 int state = system(m_ installDir + "/bin/mythshutdown--startup");93 int state = system(m_shutdown_app + " --startup"); 93 94 94 95 if (WIFEXITED(state)) 95 96 state = WEXITSTATUS(state); … … 193 194 } 194 195 else if (action == "0") 195 196 { 196 int statusCode = system(m_ installDir + "/bin/mythshutdown--status");197 int statusCode = system(m_shutdown_app + " --status"); 197 198 if (WIFEXITED(statusCode)) 198 199 statusCode = WEXITSTATUS(statusCode); 199 200 200 201 // is shutdown locked by a user 201 202 if (statusCode & 16) 202 system(m_ installDir + "/bin/mythshutdown--unlock");203 system(m_shutdown_app + " --unlock"); 203 204 else 204 system(m_ installDir + "/bin/mythshutdown--lock");205 system(m_shutdown_app + " --lock"); 205 206 206 207 updateStatusMessage(); 207 208 updateScreen(); … … 583 584 m_statusList.append(tr("MythTV is busy recording.")); 584 585 } 585 586 586 int statusCode = system(m_ installDir + "/bin/mythshutdown--status");587 int statusCode = system(m_shutdown_app + " --status"); 587 588 if (WIFEXITED(statusCode)) 588 589 statusCode = WEXITSTATUS(statusCode); 589 590 … … 641 642 QLabel *label = popup->addLabel(tr("Menu"), MythPopupBox::Large, false); 642 643 label->setAlignment(Qt::AlignCenter | Qt::WordBreak); 643 644 644 int statusCode = system(m_ installDir + "/bin/mythshutdown--status");645 int statusCode = system(m_shutdown_app + " --status"); 645 646 if (WIFEXITED(statusCode)) 646 647 statusCode = WEXITSTATUS(statusCode); 647 648 … … 680 681 void WelcomeDialog::lockShutdown(void) 681 682 { 682 683 cancelPopup(); 683 system(m_ installDir + "/bin/mythshutdown--lock");684 system(m_shutdown_app + " --lock"); 684 685 updateStatusMessage(); 685 686 updateScreen(); 686 687 } … … 688 689 void WelcomeDialog::unlockShutdown(void) 689 690 { 690 691 cancelPopup(); 691 system(m_ installDir + "/bin/mythshutdown--unlock");692 system(m_shutdown_app +" --unlock"); 692 693 updateStatusMessage(); 693 694 updateScreen(); 694 695 } … … 737 738 } 738 739 739 740 // don't shutdown if we are about to start a wakeup/shutdown period 740 int statusCode = system(m_ installDir + "/bin/mythshutdown--status");741 int statusCode = system(m_shutdown_app + " --status"); 741 742 if (WIFEXITED(statusCode)) 742 743 statusCode = WEXITSTATUS(statusCode); 743 744 … … 780 781 } 781 782 782 783 // run command to set wakeuptime in bios and shutdown the system 783 system("sudo " + m_ installDir + "/bin/mythshutdown--shutdown");784 system("sudo " + m_shutdown_app + " --shutdown"); 784 785 } 785 786 -
programs/mythwelcome/welcomesettings.cpp
154 154 { 155 155 HostLineEdit *gc = new HostLineEdit("MythWelcomeStartFECmd"); 156 156 gc->setLabel(QObject::tr("Command to run to start the Frontend")); 157 gc->setValue(gContext->Get InstallPrefix() + "/bin/mythfrontend");157 gc->setValue(gContext->GetAppPath("mythfrontend")); 158 158 gc->setHelpText(QObject::tr("Command to start mythfrontend.")); 159 159 return gc; 160 160 }; -
contrib/osx-packager.pl
159 162 # }, 160 163 { 161 164 'url' 162 => 'ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/sources/qt-mac-free-3.3. 4.tar.gz',165 => 'ftp://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/sources/qt-mac-free-3.3.5.tar.gz', 163 166 'conf-cmd' 164 167 => 'echo yes | ./configure', 165 168 'conf' … … 191 194 => [ 192 195 'sub-src', 193 196 'qmake-install', 194 'moc-install' 197 'moc-install', 198 199 # we need this. If the library isn't copied to 200 # $PREFIX/build/lib then it gets its references modified in 201 # place. That will screw up linking the next time around, as 202 # the references can't be found in the expected location. 203 'src-install' 195 204 ], 196 205 }, 197 206 … … 211 220 => [ 212 221 '--disable-nls', 213 222 ], 223 'post-conf' 224 # correct a bug that prevents compilation. This patch is already 225 # in the exif developers' CVS repository. Why they haven't 226 # released a new version with the fix, I don't know. 227 => 'echo "--- libexif/libexif/libexif/exif-utils.c2005/03/10 20:48:211.10 228 +++ libexif/libexif/libexif/exif-utils.c2005/03/31 12:24:311.11 229 @@ -83,7 +83,7 @@ 230 } 231 } 232 233 -static ExifSShort 234 +ExifSShort 235 exif_get_sshort (const unsigned char *buf, ExifByteOrder order) 236 { 237 if (!buf) return 0; 238 " | patch -u --verbose libexif/exif-utils.c' 214 239 }, 215 240 216 241 ); … … (this hunk was shorter than expected) 702 740 703 741 chdir $compdir; 704 742 705 if ($comp eq 'mythtv')706 {707 # MythTV has an empty subdirectory 'config' that causes problems for me:708 &Syscall('touch config/config.pro');709 }710 711 743 if ($OPT{'clean'} && -e 'Makefile') 712 744 { 713 745 &Verbose("Cleaning $comp"); … … 750 788 751 789 if ($comp eq 'mythtv') 752 790 { 791 # MythTV has an empty subdirectory 'config' that causes problems for me: 792 &Syscall('touch config/config.pro'); 793 753 794 # Remove Nigel's frontend speedup hack 754 795 &DoSpeedupHacks('programs/programs.pro', 'mythfrontend'); 755 796 &DoSpeedupHacks('mythtv.pro', 'libs filters programs themes i18n'); 756 797 } 757 798 758 799 &Verbose("Making $comp"); 759 800 &Syscall([ '/usr/bin/make' ]) or die; 760 801 # install 761 802 # This requires a change from the compiled-in relative 762 803 # PREFIX to our absolute path of the temp install location. … … 797 851 # Get a fresh copy of the app 798 852 &Verbose("Building self-contained $target"); 799 853 &Syscall([ 'rm', '-fr', $finalTarget ]) or die; 800 &Syscall([ '/bin/cp', '-R', 801 "$PREFIX/bin/$builtTarget.app", 802 $finalTarget ]) or die; 854 &RecursiveCopy("$PREFIX/bin/$builtTarget.app", $finalTarget); 803 855 804 856 # write a custom Info.plist 805 857 &GeneratePlist($target, $builtTarget, $finalTarget, $VERS); 806 858 807 859 # Make frameworks from Myth libraries 808 860 &Verbose("Installing frameworks into $target"); 809 my $fw_dir = "$finalTarget/Contents/Frameworks"; 810 mkdir($fw_dir); 811 my $dephash = &ProcessDependencies("$finalTarget/Contents/MacOS/$builtTarget", 812 glob("$PREFIX/lib/mythtv/*/*.dylib")); 813 my @deps = values %$dephash; 814 while (scalar @deps) 815 { 816 my $dep = shift @deps; 817 next if $dep =~ m/executable_path/; 818 819 my $file = &MakeFramework(&FindLibraryFile($dep), $fw_dir); 820 my $newhash = &ProcessDependencies($file); 821 foreach my $base (keys %$newhash) 822 { 823 next if exists $dephash->{$base}; 824 $dephash->{$base} = $newhash->{$base}; 825 push(@deps, $newhash->{$base}); 826 } 827 } 861 &PackagedExecutable($finalTarget, $builtTarget); 828 862 829 863 if ( $target eq "MythFrontend" or $target eq "MythTV-Setup" ) 830 864 { … … 832 866 &Verbose("Installing resources into $target"); 833 867 mkdir "$finalTarget/Contents/Resources"; 834 868 mkdir "$finalTarget/Contents/Resources/lib"; 835 &Syscall([ '/bin/cp', '-R', 836 "$PREFIX/lib/mythtv", 837 "$finalTarget/Contents/Resources/lib" ]) or die; 869 &RecursiveCopy("$PREFIX/lib/mythtv", 870 "$finalTarget/Contents/Resources/lib"); 838 871 mkdir "$finalTarget/Contents/Resources/share"; 839 &Syscall([ '/bin/cp', '-R', 840 "$PREFIX/share/mythtv", 841 "$finalTarget/Contents/Resources/share" ]) or die; 872 &RecursiveCopy( "$PREFIX/share/mythtv", 873 "$finalTarget/Contents/Resources/share" ); 842 874 } 843 875 } 844 876 … … 851 883 if ( -e $SRC ) 852 884 { 853 885 &Syscall([ '/bin/cp', $SRC, 854 "$SCRIPTDIR/MythBackend.app/Contents/MacOS" ]) or die 886 "$SCRIPTDIR/MythBackend.app/Contents/MacOS" ]) or die; 887 PackagedExecutable("$SCRIPTDIR/MythBackend.app", $binary); 855 888 } 856 889 } 857 890 } … … 866 899 867 900 $SRC = "$PREFIX/bin/mythtranscode.app/Contents/MacOS/mythtranscode"; 868 901 if ( -e $SRC ) 869 { &Syscall([ '/bin/cp', $SRC, $DEST ]) or die } 902 { 903 &Syscall([ '/bin/cp', $SRC, $DEST ]) or die 904 PackagedExecutable("$SCRIPTDIR/MythJobQueue.app", 'mythcommflag'); 905 } 870 906 } 871 907 872 908 if ($OPT{usehdimage}) … … 881 917 exit 0; 882 918 883 919 920 ###################################### 921 ## RecursiveCopy copies a directory tree, stripping out .svn 922 ## directories and properly managing static libraries. 923 ###################################### 884 924 925 sub RecursiveCopy 926 { 927 my ($src, $dst) = @_; 928 929 # First copy absolutely everything 930 &Syscall([ '/bin/cp', '-R', "$src", "$dst"]) or die; 931 932 # Then strip out any .svn directories 933 my @files = map { chomp $_; $_ } `find $dst -name .svn`; 934 if (scalar @files) 935 { 936 &Syscall([ '/bin/rm', '-f', '-r', @files ]); 937 } 938 939 # And make sure any static libraries are properly relocated. 940 my @libs = map { chomp $_; $_ } `find $dst -name "lib*.a"`; 941 if (scalar @libs) 942 { 943 &Syscall([ 'ranlib', '-s', @libs ]); 944 } 945 } 946 885 947 ###################################### 948 ## Given an application package $finalTarget and an executable 949 ## $builtTarget that has been copied into it, PackagedExecutable 950 ## makes sure the package contains all the library dependencies as 951 ## frameworks and that all the paths internal to the executable have 952 ## been adjusted appropriately. 953 ###################################### 954 955 sub PackagedExecutable 956 { 957 my ($finalTarget, $builtTarget) = @_; 958 959 my $fw_dir = "$finalTarget/Contents/Frameworks"; 960 mkdir($fw_dir); 961 962 my $dephash = &ProcessDependencies("$finalTarget/Contents/MacOS/$builtTarget", 963 glob("$PREFIX/lib/mythtv/*/*.dylib")); 964 my @deps = values %$dephash; 965 while (scalar @deps) 966 { 967 my $dep = shift @deps; 968 next if $dep =~ m/executable_path/; 969 970 my $file = &MakeFramework( &FindLibraryFile($dep), $fw_dir ); 971 if ($file) 972 { 973 my $newhash = &ProcessDependencies($file); 974 foreach my $base (keys %$newhash) 975 { 976 next if exists $dephash->{$base}; 977 $dephash->{$base} = $newhash->{$base}; 978 push(@deps, $newhash->{$base}); 979 } 980 } 981 } 982 } 983 984 985 ###################################### 886 986 ## MakeFramework copies a dylib into a 887 987 ## framework bundle. 888 988 ###################################### … … 892 992 my ($dylib, $dest) = @_; 893 993 894 994 my ($base, $vers) = &BaseVers($dylib); 895 $vers .= '.' . $OPT{'version'} if ($OPT{'version'} && $base =~ /myth/); 995 my $vers .= '.' . $OPT{'version'} if ($OPT{'version'} && $base =~ /myth/); 996 my $fw_dir = $dest . '/' . $base . '.framework'; 997 998 return '' if ( -e $fw_dir ); 999 896 1000 &Verbose("Building $base framework"); 897 898 my $fw_dir = $dest . '/' . $base . '.framework'; 1001 899 1002 &Syscall([ '/bin/mkdir', 900 1003 '-p', 901 1004 "$fw_dir/Versions/A/Resources" ]) or die; … … 1052 1154 chomp $dep; 1053 1155 $dep =~ s/\s+(.*) \(.*\)$/$1/; 1054 1156 1157 # /usr/lib/libstdc++, for example, contains quantifiers that must be escaped 1158 $dep =~ s/([+*?])/\\$1/; 1159 1055 1160 # otool sometimes lists the framework as depending on itself 1056 1161 next if ($file =~ m,/Versions/A/$dep,); 1057 1162 1058 1163 # Any dependency which is already package relative can be ignored 1059 1164 next if $dep =~ m/\@executable_path/;