改进lablin的解压函数Unpack()

发布于 2022-09-18 11:26:38 字数 3866 浏览 11 评论 0

本帖最后由 CaoFuAng 于 2010-03-04 13:05 编辑

很多包解压解压后的名字跟包名不一致,需要分别对这些包进行重命名才能进入安装,而不同的包解压后的名字没有规律,因此需要对每个包分别进行不同的处理,这样做很麻烦,在分析lablin的安装脚本时,想到一个简单的方法:在bulid目录下新建一个临时的空目录,然后把包解压到里面,此时临时目录里只有一个子目录,无论子目录的名字是什么,我们总可以用ls命令得到子目录的名字,然后再把子目录移动到build目录下同时命名为我们想要的包名。以下是我的代码,有不足之处敬请高手们多多指教
Unpack()
{
        local pkg="${1}"
        local upkg=""

        cd ${BUILD_PATH}/${2}

        echo -n "Extracting \"${pkg}\" ."

#        if test -d ${pkg}
#        then
#                echo "pkg ${pkg} is exists skiping ..."
#                cd ${pkg} || exit 1
#                return 0
#        fi

        if [ -z "${2}" ]; then
                echo "target dir NOT specified!"
                exit 1
        fi

        echo -n "."

        if test -d .__temp__
        then
                rm -rf .__temp__/*
        else
                rm -rf .__temp__
                mkdir .__temp__
        fi

        if test -f ${SRC_PATH}/${pkg}.tar.bz2; then
                tar jxf ${SRC_PATH}/${pkg}.tar.bz2 -C .__temp__ || exit 1
        elif test -f ${SRC_PATH}/${pkg}.tar.gz; then
                tar zxf ${SRC_PATH}/${pkg}.tar.gz -C .__temp__ || exit 1
        else
                tar xf ${SRC_PATH}/${pkg}* -C .__temp__ || exit 1
        fi

        echo -n "."

        rm -rf ${pkg}

        mv .__temp__/* ${pkg} || exit 1

        echo -n "."

        if [ "${pkg}" = "${MWP_GLIBC}" ]
        then
                echo "Extracting pkg glibc-ports-${GLIBC_VER}"
                tar xf ${SRC_PATH}/glibc-ports-${GLIBC_VER}.tar.* -C .__temp__ || exit 1
                mv .__temp__/* ${MWP_GLIBC}/ports || exit 1
        fi

        echo  " OK."

        cd ${pkg} || exit 1

        which patch > /dev/null 2>&1 && \
        {
                for fpatch in `ls ${MW_TOP_DIR}/${2}/${pkg}/*.patch 2>/dev/null`
                do
                        patch -p1 -i ${fpatch} || exit 1
                done
        }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

自找没趣 2022-09-25 11:26:38

great! 不过请先用git生成patch,然后以附件形式重发一遍

找个人就嫁了吧 2022-09-25 11:26:38

patch如下:

Saygoodbye 2022-09-25 11:26:38

很好!不过有两个地方需要改

1、下面这部分代码可以再简化一下:
        if test -d .__temp__
        then
                rm -rf .__temp__/*
        else
                rm -rf .__temp__
                mkdir .__temp__
        fi

2、glibc-ports-${GLIBC_VER}解压部分代码应保持原样。特定软件包,而且名字固定

段念尘 2022-09-25 11:26:38

回复 4# conke

多谢指教,代码已经改好了,下面的是新的patch

圈圈圆圆圈圈 2022-09-25 11:26:38

applied

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文