Changeset 6ba43f2


Ignore:
Timestamp:
09/16/13 19:02:50 (12 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3
Children:
6808980
Parents:
6144235
Message:

Replace old --pkgcache option with --pkgbuild, which will allow us in
10.0 to build PBIs from a pkgng repo, skipping the compile alltogether

This is still a work in progress, does not function on the run-time
side just yet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-sh/pbi-manager10/pbi-manager

    r651bd28 r6ba43f2  
    6868  --keep <num> -- Keep <num> old versions in archive folder for each built PBI 
    6969  --prune      -- Remove files from 'outdir' that no longer have a module 
    70   --pkgcache   -- Create and use a .txz pkg cache directory, in the <outdir> of each PBI 
     70  --pkgbuild   -- Build the PBIs using packages from PKGNG 
    7171  --tmpfs      -- Use TMPFS for port WRKDIRPREFIX 
    7272  --sign key   -- Sign the PBI(s) with specified openssl key 
     
    128128  --meta file  -- Include the specified meta file in the PBI header 
    129129  --mkdebug    -- Drop to debug shell if port make fails 
     130  --pkgbuild   -- Build PBI from PKGNG package repo 
    130131  --tmpfs      -- Use TMPFS for port WRKDIRPREFIX 
    131132  --no-prune   -- Do not prune non REQUIREDBY ports 
    132   --pkgdir dir -- Enable .txz pkg caching in the following directory 
    133133  --sign key   -- Sign the PBI with specified openssl key 
    134134 
     
    10211021        --genpatch)     PBI_AB_GENPATCH="YES"  
    10221022                        ;; 
    1023         --pkgcache)     PBI_AB_PKGCACHE="YES"  
     1023        --pkgbuild)     PBI_AB_PKGBUILD="YES"  
    10241024                        ;; 
    10251025            --keep)     if [ $# -eq 1 ]; then usage_autob_pbi; fi 
     
    11731173                --mkdebug)      MKDEBUG="YES" 
    11741174                        ;; 
     1175                --pkgbuild)     PBI_PKGNGBUILD="YES" 
     1176                        ;; 
    11751177                --tmpfs)        MKTMPFS="YES" 
    11761178                        ;; 
     
    11961198                        if [ -n "${PBI_MAKEPREFIX}" ]; then usage_make_pbi; fi 
    11971199                        shift; PBI_MAKEPREFIX="$1" 
    1198                         ;; 
    1199             --pkgdir)   if [ $# -eq 1 ]; then usage_make_pbi; fi 
    1200                         shift 
    1201                         get_abspath "$1" 
    1202                         PBI_PKGCACHEDIR="$_ABSPATH" 
    1203                         PBI_PKGCACHE="YES" 
    12041200                        ;; 
    12051201            --sign)     if [ $# -eq 1 ]; then usage_make_pbi; fi 
     
    12221218                if [ -n "${PBI_CREATE_OUTDIR}" ] ; then PBI_CREATE_OUTDIR="/pbiout" ; fi 
    12231219                if [ -n "${PORTSDIR}" ] ; then PORTSDIR="/usr/ports" ; fi 
    1224         else 
    1225         # If running as pbi_makeport 
    1226  
    1227                 # Make sure the PBI_PKGCACHEDIR exists 
    1228                 if [ -n "${PBI_PKGCACHEDIR}" -a ! -d "${PBI_PKGCACHEDIR}" ] ; then 
    1229                         exit_err "No such directory: ${PBI_PKGCACHEDIR}" 
    1230                 fi 
    12311220        fi 
    12321221 
     
    13621351        PBI_XDGICONDIR="${PBI_APPDIR}/share/icons/hicolor" 
    13631352        PBI_XDGMIMEDIR="${PBI_APPDIR}/share/mime/packages" 
    1364         PBI_RCDIR="${SYS_LOCALBASE}/etc/rc.d" 
     1353        PBI_RCDIR="${PBI_APPDIR}/etc/rc.d" 
    13651354        PBI_ETCCONF="${SYS_LOCALBASE}/etc/pbi.conf" 
    13661355        PCBSD_ETCCONF="${SYS_LOCALBASE}/etc/pcbsd.conf" 
     
    15311520detect_pkgng() 
    15321521{ 
    1533         export PORTSDIR 
    1534         # Are we using pkgng? 
    1535         WITH_PKGNG=$(make -f ${PORTSDIR}/Mk/bsd.port.mk -V WITH_PKGNG) 
    1536         if [ -n "${WITH_PKGNG}" ]; then 
    1537                 export PKGNG=1 
    1538                 export PKG_ADD="pkg add" 
    1539                 export PKG_DELETE="pkg delete -y -f" 
    1540         else 
    1541                 export PKGNG=0 
    1542                 export PKG_ADD=pkg_add 
    1543                 export PKG_DELETE=pkg_delete 
    1544         fi 
    1545  
     1522        export PKG_ADD="pkg add" 
     1523        export PKG_DELETE="pkg delete -y -f" 
    15461524} 
    15471525 
     
    17161694set_make_options() { 
    17171695 
    1718         # Set the LOCALBASE 
    1719         LOCALBASE="${PBI_PROGDIRPATH}" 
    1720         if [ -e "${LOCALBASE}" ] ; then  
    1721                 if [ "$MKDELBUILD" != "YES" ] ; then 
    1722                         exit_err "${LOCALBASE} already exists! Delete it before doing a rebuild" 
    1723                 else 
    1724                         if [ -z "${LOCALBASE}" ] ; then 
    1725                                 exit_err "null LOCALBASE, this shouldn't happen" 
    1726                         fi 
    1727                         rm -rf "${LOCALBASE}" 
    1728                 fi 
    1729         fi 
    1730  
    17311696        local MAKE_CONF="/etc/make.conf" 
    17321697 
    1733         echo "LOCALBASE=${LOCALBASE}" >> ${MAKE_CONF} 
    17341698        echo "PACKAGE_BUILDING=yes" >> ${MAKE_CONF} 
    17351699        echo "BATCH=yes" >> ${MAKE_CONF} 
    17361700        echo "NO_IGNORE=yes" >> ${MAKE_CONF} 
    17371701        echo "PACKAGE_BUILDING=yes" >> ${MAKE_CONF} 
     1702        echo "WITH_PKGNG=yes" >> ${MAKE_CONF} 
    17381703 
    17391704        echo "WRKDIRPREFIX=/usr/wrkdirprefix" >> ${MAKE_CONF} 
     
    17451710        fi 
    17461711 
    1747         # Link LOCALBASE -> /usr/local 
    1748         mkdir -p ${LOCALBASE} 
    1749         rm -rf /usr/local 
    1750         ln -s ${LOCALBASE} /usr/local 
     1712        if [ ! -d "/usr/local" ] ; then 
     1713                mkdir -p /usr/local 
     1714        fi  
    17511715 
    17521716        # Make sure ldconfig is primed 
    17531717        /etc/rc.d/ldconfig start 
     1718 
     1719        if [ "$PBI_PKGNGBUILD" ] ; then 
     1720                echo "Installing pkgng..." 
     1721                pkgFetchURL=`grep "^packagesite:" /usr/local/etc/pkg.conf | awk '{print $2}'` 
     1722                cd /tmp 
     1723                fetch -o pkg.txz ${pkgFetchURL}/Latest/pkg.txz 
     1724                if [ $? -ne 0 ] ; then exit_err "Failed fetching pkgng..."; fi 
     1725                tar xvf pkg.txz --exclude +MANIFEST --exclude +MTREE_DIRS 2>/dev/null 
     1726                ./usr/local/sbin/pkg-static add pkg.txz 
     1727                if [ $? -ne 0 ] ; then exit_err "Failed installing pkgng..."; fi 
     1728                rm pkg.txz 
     1729        else 
     1730                echo "Building pkgng..." 
     1731                cd /usr/ports/ports-mgmt/pkg 
     1732                make install clean 
     1733                if [ $? -ne 0 ] ; then exit_err "Failed building pkgng!" ; fi  
     1734        fi 
    17541735 
    17551736        # Check if using ccache directory 
     
    17601741                if [ $? -eq 0 ] ; then 
    17611742                        # Setup environment variables 
    1762                         CCACHE_PATH="/usr/bin:${LOCALBASE}/bin" 
     1743                        CCACHE_PATH="/usr/bin:/usr/local/bin" 
    17631744                        export CCACHE_PATH 
    17641745                        CCACHE_DIR="/.ccache" 
    17651746                        export CCACHE_DIR 
    1766                         PATH="${LOCALBASE}/libexec/ccache:${PATH}" 
     1747                        PATH="/usr/local/libexec/ccache:${PATH}" 
    17671748                        export PATH 
    17681749 
    17691750                        # Setup make configuration 
    17701751                        echo ".if !defined(NO_CCACHE)" >> ${MAKE_CONF} 
    1771                         echo "  CC=${LOCALBASE}/libexec/ccache/world/cc" >> ${MAKE_CONF} 
    1772                         echo "  CXX=${LOCALBASE}/libexec/ccache/world/c++" >> ${MAKE_CONF} 
     1752                        echo "  CC=/usr/local/libexec/ccache/world/cc" >> ${MAKE_CONF} 
     1753                        echo "  CXX=/usr/local/libexec/ccache/world/c++" >> ${MAKE_CONF} 
    17731754                        echo ".endif" >> ${MAKE_CONF} 
    17741755                else 
     
    17771758        fi 
    17781759 
    1779         PATH="${PATH}:/usr/local/bin:/usr/local/sbin:${LOCALBASE}/bin:${LOCALBASE}/sbin" 
     1760        PATH="${PATH}:/usr/local/bin:/usr/local/sbin" 
    17801761        export PATH 
    17811762 
     
    35613542 
    35623543        if [ "`basename $0`" = "pbi_makeport" -o "`basename $0`" = "pbi_makeport_chroot" ] ; then 
    3563           PBI_STAGEDIR="${PBI_PROGDIRPATH}" 
     3544          PBI_STAGEDIR="/usr/local" 
    35643545        else 
    35653546          mk_stage_dir 
     
    49784959                grep "^${PKGNAME}|" $iFile | cut -d '|' -f 9 | tr ' ' '\n' >>/.keepports 
    49794960        done 
     4961 
     4962        # Don't strip out pkgng 
     4963        pkg info pkg >> /.keepports 
    49804964         
    49814965        # Sort and clean the ports 
     
    49834967        mv /.keepports.tmp /.keepports 
    49844968 
    4985         # Define some commands 
    4986         if [ $PKGNG -eq 1 ] ; then 
    4987                 pkgInf="pkg info -f" 
    4988         else 
    4989                 pkgInf="pkg_info -I -a" 
    4990         fi 
    4991  
    49924969        # Now remove any unused ports 
    4993         for j in `$pkgInf | cut -d " " -f 1` 
     4970        for j in `pkg info -a | cut -d " " -f 1` 
    49944971        do 
    49954972                grep -q "^${j}" "/.keepports" 
     
    59975974        fi 
    59985975 
    5999         # Check if we need to enable pkgcaching 
    6000         if [ "$PBI_AB_PKGCACHE" = "YES" -a -z "$PBI_AB_NOPKGCACHE"  ] ; then 
    6001                 if [ ! -d "${_od}/pkgcache" ] ; then 
    6002                         mkdir -p ${_od}/pkgcache 
    6003                 fi 
    6004                 _flags="${_flags} --pkgdir ${_od}/pkgcache" 
     5976        # Check if we need to enable pkgbuilding 
     5977        if [ "$PBI_AB_PKGBUILD" = "YES" -a -z "$PBI_AB_NOPKGBUILD"  ] ; then 
     5978                _flags="${_flags} --pkgbuild" 
    60055979        fi 
    60065980 
     
    69036877        cp ${PBI_WRAPPERFILE} ${PBI_CHROOTDIR}/.pbiwrapper-$ARCH 
    69046878 
     6879        if [ "$PBI_PKGNGBUILD" = "YES" ] ; then 
     6880                mkdir -p ${PBI_CHROOTDIR}/usr/local/etc 2>/dev/null 
     6881                cp /usr/local/etc/pkg.conf ${PBI_CHROOTDIR}/usr/local/etc/pkg.conf 
     6882                local pubKey=`cat /usr/local/etc/pkg.conf | grep "^PUBKEY:" | awk '{print $2}'` 
     6883                if [ -n "$pubKey" ] ; then 
     6884                        if [ ! -d "${PBI_CHROOTDIR}/`dirname $pubKey`" ] ; then 
     6885                                mkdir "${PBI_CHROOTDIR}/`dirname $pubKey`" 
     6886                        fi 
     6887                        cp $pubKey ${PBI_CHROOTDIR}/$pubKey 
     6888                fi 
     6889        fi 
     6890 
    69056891        # If we have a custom PBI_MAKECONF include it 
    69066892        [ -e "${PBI_MAKECONF}" ] && cp ${PBI_MAKECONF} ${PBI_CHROOTDIR}/etc/make.conf 
     
    69246910        mount_nullfs ${PORTSDIR} ${PBI_CHROOTDIR}/usr/ports 
    69256911 
    6926         # Are we doing pkg caching? 
    6927         if [ "$PBI_PKGCACHE" = "YES" ] ; then 
    6928                 mkdir ${PBI_CHROOTDIR}/pkgs 
    6929                 mount_nullfs ${PBI_PKGCACHEDIR} ${PBI_CHROOTDIR}/pkgs 
    6930         fi 
    6931          
    69326912        # Now copy over the pbi_* scripts 
    69336913        mkdir ${PBI_CHROOTDIR}/usr/local/sbin 2>/dev/null 
     
    72167196 
    72177197        # Define some commands 
    7218         if [ $PKGNG -eq 1 ] ; then 
    7219                 pkgInf="pkg info -l" 
    7220         else 
    7221                 pkgInf="pkg_info -L" 
    7222         fi 
     7198        pkgInf="pkg info -l" 
    72237199 
    72247200        ${pkgInf} ${_pname} | sed "s|^${PBI_PROGDIRPATH}/||g" \ 
     
    73577333  # Make sure this port isn't already loaded 
    73587334  local pkgName=`make -V PKGNAME -C $_lPort PORTSDIR=${PORTSDIR}` 
    7359   if [ $PKGNG -eq 1 ] ; then 
    7360         pkg info -e ${pkgName} 
    7361         if [ $? -eq 0 ] ; then return ; fi 
    7362   else 
    7363         if [ -e "/var/db/pkg/${pkgName}" ] ; then return ; fi 
    7364   fi 
     7335  pkg info -e ${pkgName} 
     7336  if [ $? -eq 0 ] ; then return ; fi 
    73657337 
    73667338  # Save any users / groups we need to create later 
     
    73807352 
    73817353    # is this installed? 
    7382     if [ $PKGNG -eq 1 ] ; then 
    7383         pkg info -e ${cPkg} 
    7384         if [ $? -eq 0 ] ; then continue ; fi 
    7385     else 
    7386         if [ -e "/var/db/pkg/${cPkg}" ] ; then continue ; fi 
    7387     fi 
     7354    pkg info -e ${cPkg} 
     7355    if [ $? -eq 0 ] ; then continue ; fi 
    73887356 
    73897357    local _port=`grep "^${cPkg}|" $iFile | cut -d '|' -f 2` 
     
    73937361  done 
    73947362 
    7395   if [ $PKGNG -eq 1 ] ; then 
    7396         pkgInf="pkg info -e" 
    7397         pkgDep="pkg info -d" 
    7398         pkgCreate="pkg create -f txz" 
    7399   else 
    7400         pkgInf="pkg_info" 
    7401         pkgDep="pkg_info -r" 
    7402         pkgCreate="pkg_create -J -b" 
     7363  # Are we doing a PKGNG build? 
     7364  if [ "$PBI_PKGNGBUILD" ] ; then 
     7365        pkg install -y "${pkgName}"      
     7366        if [ $? -ne 0 ] ; then 
     7367           exit_err "Failed installing ${pkgName}" 
     7368        fi 
     7369        return 0 
    74037370  fi 
    74047371 
    7405   # Not installed, see if we have a pkg to install instead 
    7406   if [ -e "/pkgs/${pkgName}.txz" ] ; then 
    7407      REBUILDPKG="NO" 
    7408      echo "Checking package: ${pkgName}" 
    7409      $pkgDep /pkgs/${pkgName}.txz | grep -v -e "^Information" -e "depends on:" -e "^Depends" | sed '/^$/d' | sed 's|Dependency: ||g' > /tmp/deps.$$ 
    7410      while read dLine 
    7411      do 
    7412         $pkgInf $dLine >/dev/null 2>/dev/null 
    7413         if [ $? -ne 0 ] ; then 
    7414            echo "Package dependencies updated! Rebuilding port..." 
    7415            REBUILDPKG="YES" 
    7416            break 
    7417         fi 
    7418      done < /tmp/deps.$$ 
    7419      rm /tmp/deps.$$ 
    7420  
    7421      # Fix some pkgs bugging us with license questions 
    7422      PACKAGE_BUILDING=yes 
    7423      export PACKAGE_BUILDING 
    7424  
    7425      if [ "$REBUILDPKG" = "NO" ] ; then 
    7426        echo "Adding package: ${pkgName}" 
    7427        $PKG_ADD -f /pkgs/${pkgName}.txz 
    7428        return 
    7429      fi 
    7430   fi 
    7431  
    7432   # No package, lets do old-fashioned build 
     7372  # Lets do old-fashioned build 
    74337373  echo "Compiling port: ${_lPort}" 
    74347374  cd ${_lPort} 
     
    74517391  make clean 
    74527392 
    7453   # Are we caching packages? 
    7454   if [ "${PBI_PKGCACHE}" = "YES" ] ; then 
    7455  
    7456     # Prune outdated versions of cached pkg 
    7457     local basePkgName 
    7458     basePkgName="`echo ${pkgName} | rev | cut -d '-' -f 2- | rev`" 
    7459     for rmPkg in `ls /pkgs/${basePkgName}* 2>/dev/null | sed 's|/pkgs/||g'` 
    7460     do 
    7461         testPkg="`echo ${rmPkg} | rev | cut -d '-' -f 2- | rev`" 
    7462         if [ -n "$testPkg" -a "$testPkg" = "$basePkgName" ] ; then 
    7463            echo "Pruning old cache pkg: ${rmPkg}" 
    7464            rm /pkgs/${rmPkg} 
    7465         fi 
    7466     done 
    7467  
    7468     # Create new pkg 
    7469     ${pkgCreate} ${pkgName} 
    7470     if [ $? -ne 0 ] ; then 
    7471        exit_err "$pkgCreate ${pkgName} failed!" 
    7472     fi 
    7473     mv ${pkgName}.txz /pkgs/ 
    7474     sha256 -q /pkgs/${pkgName}.txz >/pkgs/${pkgName}.txz.sha256 
    7475   fi 
    74767393}; 
    74777394 
Note: See TracChangeset for help on using the changeset viewer.