Yes, there were a couple of problems :-/ The version below has worked two times 
in a row on Yosemite. I hope you will at least put this script or something 
like it on the wiki as an alternative. It could save many people a lot of time.

#!/bin/bash

# If there is an argument, then don't preserve 'requested' flags.
function reinstallPorts() {
  local -r dontPreserveRequestedFlags=$1
  set -e
  sudo -v
  
  # Ensure that xcode-select has been run successfully.
  /usr/bin/clang --version

  # Save the list of installed ports.
  port -qv installed > myports.txt

  if [[ ! "$dontPreserveRequestedFlags" ]] ; then
    # Preserve the 'requested' flags.
    port echo requested | cut -d ' ' -f 1 > requested.txt
  fi

  # Download the restore_ports script.
  curl -O 
https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
 
<https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl>
  chmod +x restore_ports.tcl

  # Change this if your installation is somewhere else.
  # (There should be a way to get the port command to report this.)
  local -r MACPORTS_HOME=/opt/local

  sudo bash << EOF
    set -xe

    # Start with the latest data.
    port selfupdate

    # Uninstall all installed ports.
    port -f uninstall installed

    # Clean any partially-completed builds.
    port clean all

    # Execute the restore_ports script.
    ./restore_ports.tcl -p $MACPORTS_HOME myports.txt
    
    if [[ ! "$dontPreserveRequestedFlags" ]] ; then
      # Restore the 'requested' flags.
      port unsetrequested installed
      < requested.txt xargs port setrequested
    fi
EOF
}

reinstallPorts $@






> On 2014-12-14, at 08:43 PM, Dave Yost <d...@yost.com <mailto:d...@yost.com>> 
> wrote:
> 
> 
>> On 2014-12-14, at 07:59 PM, Lawrence Velázquez <lar...@macports.org 
>> <mailto:lar...@macports.org>> wrote:
>> 
>> The migration steps weren't really intended to be run as a single script. 
>> I'm not comfortable telling users to run this big untested blob of code.
> 
> Then let’s test it! Works for me on Yosemite. I’ll run it again.
> 
> You could put in a caveat that one can run the commands interactively if one 
> is worried about it.
> 
> Really, code to do a migration should be part of macports, IMO. Nothing like 
> being able to start a command and walk away for a couple of hours and have it 
> do everything without tweaking.
> 
> Dave
> 
>> 
>> 
>>> On Dec 14, 2014, at 10:37 PM, MacPorts <nore...@macports.org 
>>> <mailto:nore...@macports.org>> wrote:
>>> 
>>> Page "Migration" was changed by d...@yost.com <mailto:d...@yost.com>
>>> Diff URL: <https://trac.macports.org/wiki/Migration?action=diff&version=80 
>>> <https://trac.macports.org/wiki/Migration?action=diff&version=80>>
>>> Revision 80
>>> Comment: Use a single sudo, so only one password is required.
>>> Changes:
>>> -------8<------8<------8<------8<------8<------8<------8<------8<--------
>>> Index: Migration
>>> =========================================================================
>>> --- Migration (version: 79)
>>> +++ Migration (version: 80)
>>> @@ -23,29 +23,36 @@
>>>   {{{
>>>   # If there is an argument, then don't preserve 'requested' flags.
>>>   function reinstallPorts() {
>>> -      dontPreserveRequestedFlags=$1
>>> +      local -r dontPreserveRequestedFlags=$1
>>> +      set -e
>>> +      # This will fail if xcode-select needs to be run.
>>> +      clang --version
>> 
>> What is the point of printing the Clang version? And you don't know which 
>> "clang" is being run.
> 
> I was looking for a command I could run to smoke out wither code-select is 
> going to have to run before port can do its work.
> 

_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to