Ignore:
Timestamp:
09/27/13 12:42:41 (15 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, releng/10.1
Children:
5119a91
Parents:
813b031
Message:

Started hacking on the PBI10 format, switch to storing data in
a geom_uzip container for starts

This will eventually allow us to "run" apps directly from the
downloaded PBI file, without going through the installation process

File:
1 edited

Legend:

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

    r52c32d9 r393790b  
    16581658        chroot_make_cleanup 
    16591659        clean_remote_dl 
     1660        umount_md_devices ${DEVICES} 
    16601661        exit 255 
    16611662} 
     
    35523553 
    35533554        if [ "`basename $0`" = "pbi_makeport" -o "`basename $0`" = "pbi_makeport_chroot" ] ; then 
    3554           PBI_STAGEDIR="/usr/local" 
     3555          #PBI_STAGEDIR="/usr/local" 
     3556          # KPM REMOVE ME 
     3557          mk_stage_dir "/usr/local" 
    35553558        else 
    35563559          mk_stage_dir 
     
    35713574        mk_hash_list 
    35723575 
    3573         mk_archive_file 
     3576        #mk_archive_file 
     3577        # KPM REMOVE ME 
    35743578 
    35753579        mk_header_dir 
    35763580        save_pbi_details_to_header 
    3577         mk_header_file 
    3578         rm_header_dir 
     3581        #mk_header_file 
     3582        # KPM REMOVE ME 
     3583        #rm_header_dir 
    35793584 
    35803585        mk_output_pbi 
    35813586 
    35823587        rm_stage_dir 
     3588        exit 0 
    35833589} 
    35843590 
     
    40484054# Create a dir for manipulating header info 
    40494055mk_header_dir() { 
    4050         PBI_HEADERDIR="${PBI_PROGDIRPATH}/.headerdir" 
     4056        PBI_HEADERDIR="${PBI_STAGEDIRMNT}/pbimeta" 
    40514057        if [ -e "${PBI_HEADERDIR}" ] ; then rm -rf "${PBI_HEADERDIR}" ; fi 
    40524058        mkdir -p ${PBI_HEADERDIR} 
     
    40614067# Create a dir for staging the final archive 
    40624068mk_stage_dir() { 
    4063         local _excOpts="" 
     4069        if [ -n "$1" ] ; then 
     4070                cpDir="$1" 
     4071        else 
     4072                cpDir="${PBI_PROGDIRPATH}" 
     4073        fi 
    40644074 
    40654075        PBI_STAGEDIR="${PBI_PROGDIRPATH}/.stagedir" 
     
    40714081        fi 
    40724082        mkdir -p ${PBI_STAGEDIR} 
     4083 
     4084        # Figure out disk size and set up a vnode 
     4085        export UFSFILE=/usr/pbi/pbi.ufs.$$ 
     4086        cd /usr/local 
     4087        DIRSIZE=$(($(du -kd 0 | cut -f 1))) 
     4088        FSSIZE=$(($DIRSIZE + 1000)) 
     4089        rc_halt "dd if=/dev/zero of=${UFSFILE} bs=1k count=${FSSIZE}" 
     4090 
     4091        export USRDEVICE=/dev/$(mdconfig -a -t vnode -f ${UFSFILE}) 
     4092 
     4093        rc_halt "newfs -b 4096 -n -o space ${USRDEVICE}" 
     4094        rc_halt "mount -o noatime ${USRDEVICE} ${PBI_STAGEDIR}" 
     4095 
     4096        mkdir -p ${PBI_STAGEDIR}/local 
     4097        mkdir -p ${PBI_STAGEDIR}/etc 
     4098        mkdir -p ${PBI_STAGEDIR}/pbimeta 
     4099 
     4100        local _excOpts="" 
    40734101 
    40744102        # Build module list of excludes 
     
    40884116                --exclude .pkgdb --exclude .ld-elf.hints --exclude make.conf \ 
    40894117                --exclude make.conf.bak --exclude .keepports \ 
    4090                 -C "${PBI_PROGDIRPATH}" . 2>/dev/null \ 
    4091                 | tar xvpf - -C ${PBI_STAGEDIR} 2>/dev/null 
    4092  
     4118                -C "${cpDir}" . 2>/dev/null \ 
     4119                | tar xvpf - -C ${PBI_STAGEDIR}/local 2>/dev/null 
     4120 
     4121        cd ${PBI_PROGDIRPATH} 
     4122        PBI_STAGEDIRMNT="${PBI_STAGEDIR}" 
     4123        PBI_STAGEDIR="${PBI_STAGEDIR}/local" 
    40934124} 
    40944125 
     
    41134144# See if we need to clean the stagedir 
    41144145clean_stage_dir() { 
     4146 
     4147        if [ -e "${PBI_STAGEDIR}/etc" ] ; then 
     4148                mv ${PBI_STAGEDIR}/etc/* ${PBI_STAGEDIRMNT}/etc/ 
     4149        fi 
     4150 
    41154151        if [ "${PBI_USESYSGL}" != "NO" ] ; then 
    41164152                rm ${PBI_STAGEDIR}/lib/libGl.* >/dev/null 2>/dev/null 
     
    42554291 
    42564292        # Save a checksum of archive file 
    4257         sha256 -q "${PBI_CREATE_ARCHIVE}" > "${PBI_HEADERDIR}/pbi_archivesum" 
     4293        #sha256 -q "${PBI_CREATE_ARCHIVE}" > "${PBI_HEADERDIR}/pbi_archivesum" 
     4294        # KPM REMOVE ME 
    42584295 
    42594296        sign_pbi_files "$PBI_HEADERDIR" 
     
    42734310} 
    42744311 
     4312# Unmount list of md devices 
     4313umount_md_devices() { 
     4314    for i in $@; do 
     4315        echo "Unmounting ${i}" 
     4316        rc_halt "umount -f ${i}" 
     4317        rc_halt "mdconfig -d -u ${i}" 
     4318    done 
     4319} 
    42754320 
    42764321# All the pieces are ready, spit out the final PBI file 
     
    42814326                icon="${PBI_DEFAULT_ICON_CHROOT}" 
    42824327        fi 
     4328 
     4329        # Set PBI name all lower-case 
    42834330        _pbilow="`echo ${PBI_PROGNAME} | tr '[:upper:]' '[:lower:]' | sed 's| ||g'`" 
    4284  
    42854331        outfile="${PBI_CREATE_OUTDIR}/${_pbilow}-${PBI_PROGVERSION}-${ARCH}.pbi" 
    4286         mark1="${PBI_CREATE_OUTDIR}/.pbimark1.$$" 
    4287         mark2="${PBI_CREATE_OUTDIR}/.pbimark2.$$" 
    4288  
    4289         echo " 
    4290 ${PBI_SS_ICON}" >$mark1 
    4291         echo " 
    4292 ${PBI_SS_ARCHIVE}" >$mark2 
     4332 
     4333        DEVICES=${USRDEVICE} 
     4334 
     4335        echo "Filling the uncompressed fs with zeros to compress better" 
     4336        echo "Don't worry if you see a 'filesystem full' message here" 
     4337        zerofile=$(env TMPDIR=${PBI_STAGEDIR} mktemp -t zero) 
     4338        dd if=/dev/zero of=${zerofile} >/dev/null 2>/dev/null 
     4339        rm ${zerofile} 
     4340 
     4341        umount_md_devices ${DEVICES} 
    42934342 
    42944343        # DO IT, DO IT NOW!!! 
    4295         cat ${PBI_HEADER_ARCHIVE} $mark1 ${icon} $mark2 ${PBI_CREATE_ARCHIVE} > ${outfile}       
     4344        echo -n "Compressing ${UFSFILE}..." 
     4345        rc_halt "mkuzip -v -s 65536 -o ${outfile} ${UFSFILE}" 
     4346 
     4347        UFSSIZE=$(ls -l ${UFSFILE} | awk '{print $5}') 
     4348        UZIPSIZE=$(ls -l ${outfile} | awk '{print $5}') 
     4349 
     4350        PERCENT=$(awk -v ufs=${UFSSIZE} -v uzip=${UZIPSIZE} 'BEGIN{print (100 - (100 * (uzip/ufs)));}') 
     4351        rm -f ${UFSFILE} 
     4352        echo " ${PERCENT}% saved" 
     4353 
    42964354        sha256 -q ${outfile} > ${outfile}.sha256 
    42974355 
    42984356        echo "Created PBI: ${outfile}" 
    4299  
    4300         rm $mark1 
    4301         rm $mark2 
    4302         rm ${PBI_HEADER_ARCHIVE} 
    4303         rm ${PBI_CREATE_ARCHIVE} 
    43044357} 
    43054358 
     
    66576710                        mv ${PBI_CHROOTDIR}/pbiout/*.pbi ${PBI_CREATE_OUTDIR}/  
    66586711                        mv ${PBI_CHROOTDIR}/pbiout/*.sha256 ${PBI_CREATE_OUTDIR}/ 
     6712                else 
     6713                        echo "Error: pbi_makeport_chroot: returned non-0 status!" 
    66596714                fi 
    66606715 
Note: See TracChangeset for help on using the changeset viewer.