Differences between current version and predecessor to the previous major change of KnowledgeBase/FreeBSD/UpdatePorts.

Other diffs: Previous Revision, Previous Author

Newer page: version 11 Last edited on Thursday, 2 September 2010 12:04:31 by CyberLeo
Older page: version 9 Last edited on Sunday, 21 March 2010 15:11:18 by CyberLeo Revert
@@ -37,8 +37,36 @@
 
 
 
 == 
+</code>  
+  
+<code brush="bash">  
+bdeptree() {  
+ port="${1##/usr/ports/}"  
+ printf "%${2}s%s\n" "" "${port}"  
+  
+ ( cd /usr/ports/${port}  
+ ( make build-depends-list  
+ [ "${2:-0}" -gt 0 ] && make run-depends-list  
+ ) | sort -u | while read port  
+ do  
+ bdeptree "${port}" $(( ${2:-0} + 1 ))  
+ done  
+ )  
+}  
+  
+rdeptree() {  
+ port="${1##/usr/ports/}"  
+ printf "%${2}s%s\n" "" "${port}"  
+  
+ ( cd /usr/ports/${port}  
+ make run-depends-list | sort -u | while read port  
+ do  
+ rdeptree "${port}" $(( ${2:-0} + 1 ))  
+ done  
+ )  
+}  
 </code> 
  
 BASH script is at [CheckPorts.sh|KnowledgeBase/FreeBSD/CheckPorts.sh] 
  

current version

Note: I just use ports-mgmt/portmaster now


Sync ports tree

csup ports-supfile

Update INDEXes

portsdb -Uu
pkgdb -u

Get a list of out-of-date ports

pkg_version -vl '<' | cut -d' ' -f1

Pull dependency information for each out-of-date port (Children must be rebuilt/reinstalled as well)

pkg_info -Rq

Do this recursively, keeping track of the depth. Once you hit bottom on all the ports and their descendants, squash the depgraph, placing deeper dependencies later. I.e.:

A
-B
-C
--D
E
-B
-D
=becomes=
A
E
B
C
D
==
bdeptree() {
  port="${1##/usr/ports/}"
  printf "%${2}s%s\n" "" "${port}"

  ( cd /usr/ports/${port}
    ( make build-depends-list
      [ "${2:-0}" -gt 0 ] && make run-depends-list
    ) | sort -u | while read port
    do
      bdeptree "${port}" $(( ${2:-0} + 1 ))
    done
  )
}

rdeptree() {
  port="${1##/usr/ports/}"
  printf "%${2}s%s\n" "" "${port}"

  ( cd /usr/ports/${port}
    make run-depends-list | sort -u | while read port
    do
      rdeptree "${port}" $(( ${2:-0} + 1 ))
    done
  )
}

BASH script is at CheckPorts.sh

Once you have a list of ports to install, and their order, you can use a convenience function in sh to build a package

makepkg() {
 rm *.tbz
 make all deinstall install package clean && mv -v *.tbz /build/pkg/
}