X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fpackaging%2FMacOS%2FOpenAFS.post_install;h=ad6e70429dd60024f4b0dd146ef27c2d5598608a;hp=88e3e9fd10bb69a41eef220953b2cb01b34b5dbb;hb=6d6a28720f4eae4652f2628fdfcc30983916f39d;hpb=bb96daf441402cb6def2c20cc20f51d3d160b6e1 diff --git a/src/packaging/MacOS/OpenAFS.post_install b/src/packaging/MacOS/OpenAFS.post_install index 88e3e9f..ad6e704 100644 --- a/src/packaging/MacOS/OpenAFS.post_install +++ b/src/packaging/MacOS/OpenAFS.post_install @@ -4,7 +4,12 @@ if [ -d /afs -a ! -h /afs ]; then rmdir /afs fi majorvers=`uname -r | sed 's/\..*//'` -if [ $majorvers -ge 7 ]; then +if [ $majorvers -ge 19 ]; then + # Root mount point is read-only. To workaround this restriction, add a + # synthetic entity for afs into /etc/synthetic.conf. For more information, + # please read man synthetic.conf(5). + grep -qs '^afs$' /etc/synthetic.conf || echo 'afs' >> /etc/synthetic.conf +elif [ $majorvers -ge 7 ]; then # /Network is now readonly, so put AFS in /afs; make sure /afs is a directory if [ -e /afs ]; then if [ -h /afs -o ! -d /afs ]; then @@ -32,12 +37,42 @@ if [ `grep /Network/afs cacheinfo` ]; then mv cacheinfo.new cacheinfo fi +# if the installer plugin generated ThisCell and/or CellAlias +# files, copy them in here +tmpthiscell=/private/tmp/org.OpenAFS.Install.ThisCell.$USER +tmpcellalias=/private/tmp/org.OpenAFS.Install.CellAlias.$USER +if [ -f $tmpthiscell ]; then + cp $tmpthiscell ThisCell + rm -f $tmpthiscell +fi +if [ -f $tmpcellalias ]; then + cp $tmpcellalias CellAlias + rm -f $tmpcellalias +fi + if [ ! -f ThisCell -a -f ThisCell.sample ]; then cp ThisCell.sample ThisCell fi -if [ ! -f config/afsd.options -a -f config/afsd.options.sample ]; then - cp config/afsd.options.sample config/afsd.options +# force reversion of 10.4 memcache mistake +rm -f config/afsd.options.broken +echo '-memcache -afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > config/afsd.options.broken +if cmp -s config/afsd.options.broken config/afsd.options ; then + rm -f config/afsd.options +fi +rm -f config/afsd.options.broken + +# if the user hasn't changed these settings, then they should just use the new +# afsd.conf file +rm -f config/afsd.options.old +echo '-afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' >config/afsd.options.old +if cmp -s config/afsd.options.old config/afsd.options ; then + rm -f config/afsd.options +fi +rm -f config/afsd.options.old + +if [ ! -f config/afs.conf -a -f config/afs.conf.sample ]; then + cp config/afs.conf.sample config/afs.conf fi # testing case -- upgrading from pre 1.2.7, but .last file exists. @@ -47,7 +82,7 @@ if [ ! -f CellServDB -a -f CellServDB.save -a -f CellServDB.master.last ]; then fi # upgrading between 2 post-1.2.7 releases (or the testing case) -if [ -f CellServDB.master.last -a -f CellServDB ]; then +if [ -f CellServDB.master.last ]; then if cmp -s CellServDB.master.last CellServDB.master ; then echo No CellServDB updates done=1 @@ -59,6 +94,9 @@ if [ -z "$done" -a -f CellServDB ]; then if cmp -s CellServDB CellServDB.master ; then echo CellServDB is up to date. cp CellServDB.master CellServDB.master.last + if [ ! -f CellServDB ]; then + cp CellServDB.master CellServDB + fi done=1 fi fi @@ -73,7 +111,7 @@ if [ -z "$done" ]; then # this is a new install, or an upgrade from pre-1.2.7 echo "Installing new CellServDB" cp CellServDB.master CellServDB.master.last - if [ ! -e CellServDB ]; then + if [ ! -f CellServDB ]; then cp CellServDB.master CellServDB fi fi @@ -83,9 +121,41 @@ if [ $majorvers -ge 7 ]; then # make config/settings.plist if it doesn't exist if [ ! -e config/settings.plist -a -e config/settings.plist.orig ]; then cp config/settings.plist.orig config/settings.plist + else + /usr/libexec/PlistBuddy -c "Add :Darwin:All:FSEvents bool" config/settings.plist && /usr/libexec/PlistBuddy -c "Set :Darwin:All:FSEvents true" config/settings.plist fi elif [ -e config/afssettings ]; then # turn off execution of afssettings chmod a-x config/afssettings fi +# properly, we should acquire a certificate from a real CA and ship +# signed binaries. for now, make Application Firewall (Security prefs pane) +# happy like this. See TN2206 +if [ $majorvers -lt 14 ]; then + if [ -f /usr/bin/codesign ]; then + codesign -s - /usr/sbin/afsd + fi +fi + +#here we should run tools which configure the client, and then if it's enabled: +#start the new launchd daemon +launchctl load -w /Library/LaunchDaemons/org.openafs.filesystems.afs.plist + +if [ $majorvers -ge 19 ]; then + # Assume that, if /afs is not present, either OpenAFS is being installed for + # the first time or the system was not rebooted after the installation. + # If so, inform what needs to be done to load the client. This procedure is + # unnecessary if OpenAFS is being reinstalled. + if [ ! -d /afs ]; then + osascript -e 'display alert "OpenAFS successfully installed" message ¬ + "If OpenAFS is being installed for the first time on this machine, " & ¬ + "follow the steps below:\n\n" & ¬ + "1. Navigate to System Preferences > Security & Privacy;\n\n" & ¬ + "2. Under the General tab towards the bottom of the window, allow " & ¬ + "the OpenAFS kernel extension to load by clicking on Allow;\n\n" & ¬ + "3. Reboot the machine;\n\n" & ¬ + "Note: An entry for /afs was added in /etc/synthetic.conf. This " & ¬ + "change takes effect only after rebooting the system."' + fi +fi