ABSTRACT:

  Daniel Robbins is best known as the creator of Gentoo Linux and author of many IBM developerWorks articles about Linux. Daniel currently serves as Benevolent Dictator for Life (BDFL) of Funtoo Linux. Funtoo Linux is a Gentoo-based distribution and continuation of Daniel's original Gentoo vision.


Section 3

Operation logic of the original version of Portage(a package manager used by Gentoo,Funtoo,etc.)


ebuild.conf: 

1 # /etc/ebuild.conf:set system-wide ebuild options in this file
2 # MAKEOPTS are options passed to make
3 MAKEOPTS="-j2"

package.ebuild:

1 #this ebuild file overrides the default user_compile()
2 P=e2fsprogs-1.18
3 A=${P}.tar.gz
4 user_compile() {
5   ./configure --enable-elf-shlibs
6 make
7 }  #e2fsprogs.ebuild

ebuild:

 1 #!/usr/bin/env bash
2 if [ $# -ne 2 ]
3 then
4   echo "Please specify ebuild file and unpack, compile or all"
5 exit 1
6 fi
7 source /etc/ebuild.conf
8 if [ -z "$DISTDIR" ]
9 then
10 # set DISTDIR to /usr/src/distfiles if not already set
11   DISTDIR=/usr/src/distfiles
12 fi
13 export DISTDIR
14 ebuild_unpack() {
15   #make sure we're in the right directory
16   cd ${ORIGDIR}
17 if [ -d ${WORKDIR} ]
18 then
19   rm -rf ${WORKDIR}
20 fi
21 mkdir ${WORKDIR}
22 cd ${WORKDIR}
23 if [ ! -e ${DISTDIR}/${A} ]
24 then
25   echo "${DISTDIR}/${A} does not exist. Please download first."
26 exit 1
27 fi
28 tar xzf ${DISTDIR}/${A}
29 echo "Unpacked ${DISTDIR}/${A}."
30 #source is now correctly unpacked
31 }
32 user_compile()
33 {
34 #we're already in ${SRCDIR}
35 if [ -e configure ]
36 then
37 #run configure script if it exists
38   ./configure --prefix=/usr
39 fi
40   #run make
41   make $MAKEOPTS MAKE="make $MAKEOPTS"
42 }
43 ebuild_compile() {
44 if [ ! -d "${SRCDIR}" ]
45 then
46   echo "${SRCDIR} does not exist -- please unpack first."
47 exit 1
48 fi
49 #make sure we're in the right directory
50 cd ${SRCDIR}
51 user_compile
52 }
53 export ORIGDIR=`pwd`
54 export WORKDIR=${ORIGDIR}/work
55 if [ -e "$1" ]
56 then
57   source $1
58 else
59   echo "Ebuild file $1 not found."
60 exit 1
61 fi
62 export SRCDIR=${WORKDIR}/${P}
63 case "${2}" in
64   unpack)
65     ebuild_unpack ;;
66   compile)
67     ebuild_compile ;;
68   all)
69     ebuild_unpack ebuild_compile ;;
70   *)
71     echo "Please specify unpack, compile or all as the second arg"
72     exit 1 ;;
73 esac

REFERENCES:

  • http://www.funtoo.org/Bash_by_Example,_Part_1
  • http://www.funtoo.org/Bash_by_Example,_Part_2
  • http://www.funtoo.org/Bash_by_Example,_Part_3
  • http://www.jb51.net/article/51342.htm

『BASH』——Learn BashScript from Daniel Robbins——[003]的更多相关文章

  1. 『BASH』——Learn BashScript from Daniel Robbins——[001-002]

    ABSTRACT: Daniel Robbins is best known as the creator of Gentoo Linux and author of many IBM develop ...

  2. 『BASH』——文件权限批量恢复脚本——「Permission Revovery」

    一.恢复指定程序包所有文件的权限: #!/bin/bash #Assume that you have mounted a correct orignal-system on /mnt read -p ...

  3. 『BASH』——Hadex's brief analysis of "Lookahead and Lookbehind Zero-Length Assertions"

    /*为节省时间,本文以汉文撰写*/ -前言- 深入学习正则表达式,可以很好的提高思维逻辑的缜密性:又因正则应用于几乎所有高级编程语言,其重要性不言而喻,是江湖人士必备的内功心法. 正则表达式概要(ob ...

  4. 『AngularJS』$location 服务

    项目中关于 $location的用法 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用.改变在地址栏中的URL会作用到$loc ...

  5. [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装

    [原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...

  6. JS 中通过对象关联实现『继承』

    JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初 ...

  7. 『摄影欣赏』16幅 Romantic 风格照片欣赏【组图】

    今天,我们将继续分享人类情感的系列文章.爱是人类最重要的感觉,也可能是各种形式的艺术(电影,音乐,书,画等)最常表达的主题 .这里有40个最美丽的爱的照片,将激励和给你一个全新的视觉角度为这种情绪.我 ...

  8. 『开源』Slithice 2013 服务器集群 设计和源码

    相关介绍文章: <『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布> <『集群』001 Slithice 服务器集群 概述> <『集群』002 Sli ...

  9. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

随机推荐

  1. 吉首大学校赛 I 滑稽树上滑稽果 (Lucas + 莫队)

    链接:https://ac.nowcoder.com/acm/contest/925/I来源:牛客网 题目描述 n个不同的滑稽果中,每个滑稽果可取可不取,从所有方案数中选取一种,求选取的方案中滑稽果个 ...

  2. centos 安装 ImageMagick

    ImageMagick很好用,shell下可以批量对图片做处理,很赞!~ 编译安装 wget http://www.imagemagick.org/download/ImageMagick.tar.g ...

  3. git回退单个文件

    git原理 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD. gi ...

  4. 关于提BUG的一点思考以及工作中总结的规范

    在测试的工作中,提BUG是日常工作. 以前自己为了省事,省时,仅仅是截图,在图片上注明一下问题,就放到BUG库中了. 现在发现这样会造成开发的时间的浪费,增加了沟通成本. 对于BUG,当发现了异常时, ...

  5. js获取url中的中文参数出现乱码

    解决方法 function getQueryString(key){ var reg = new RegExp("(^|&)"+key+"=([^&]*) ...

  6. ArcGis基础——Excel表格插入ArcMap布局视图,记录显示不全的替代解决方法

    前几天帮朋友处理了这样一个问题 Excel有200余行记录,插入到ArcMap布局视图,只能显示100行左右. 解决思路 ArcMap要素类的属性表可以插入到布局视图,可否把Excel挂接到要素类的属 ...

  7. python png与jpg的相互转换

    python将PNG格式的图片转化成为jpg """ 先来说一下jpg图片和png图片的区别 jpg格式:是有损图片压缩类型,可用最少的磁盘空间得到较好的图像质量 png ...

  8. 第一天:powershell外部命令

    首先我们应该怎样打开powershell呢?win+R,之后是一个运行窗口,在里面输入“powerhsell".按回车键,就可以打开powershell命令窗口了.当然也有其他方法打开,比如 ...

  9. python编程学习day03

    1.文件操作 (1)打开文件 f = open ("文件名称",mode='' ",encoding="utf-8") mode=操作方式 encod ...

  10. Servlet - Servlet相关

    1. 概念 Servlet是指任何实现了Servlet接口的类, Servlet运行于支持Java的应用服务器中, Servlet可以响应任何类型的请求, 但大多数情况下, Servlet只用来扩展基 ...