用作安裝後處理的 script 又更完整了一點。我還不會包 .deb ,等學會了以後再把 script 擴充成自動把 .tar.gz 的內容作成 .deb 。
茲列於後:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
用來取代 Intel Compiler 在 Debian 上手動安裝時,
<INSTALLDIR>/bin 目錄內各指令稿內的安裝目錄位置。
$Id: icinstconv.py,v 1.1 2005/06/22 09:41:48 yungyuc Exp $
"""
class parameters:
"""
處理指令行引數。
"""
########################################################################
#
def __init__(self):
self.process()
def process(self):
"""
目前沒有任何要處理的引數。
"""
from optparse import OptionParser, OptionGroup
op = OptionParser(
usage = "usage: %prog <dir>",
version = "%prog, $Revision: 1.1 $"
)
self.op = op
(self.options, self.args) = self.op.parse_args()
params = parameters()
#
########################################################################
########################################################################
# 給 Intel C Compiler 用的取代資訊
ORIGTAG = "<INSTALLDIR>"
#
########################################################################
def subs(old, new, fn):
"""
執行取代工作的函式
old: 被取代字串
new: 新取代字串
fn: 工作的目標檔名
"""
########################################################################
#
import re
# 讀取來源資料
f = open( fn, 'r' );
orig = f.read();
f.close()
# 執行取代
replaced = re.sub( old, new, orig )
# 把取代後的整筆資料寫回檔案
f = open( fn, 'w' )
f.write( replaced )
f.close()
#
########################################################################
def main():
"""
主函式。
"""
########################################################################
#
import sys
import os
from popen2 import popen2
if len(params.args) < 1:
print "請指定要處理的目錄。"
print ""
params.op.print_help()
sys.exit(0)
# 找出應處理的檔案 (名)
so, si = popen2( 'file %s' % os.path.join(params.args[0], '*') )
scripts = []
for line in so.readlines():
tokens = line.split(':')
fn, des = tokens[:2]
if des.find('text') != -1:
scripts.append(fn)
# 對這些檔案作字串取代
for script in scripts:
subs(ORIGTAG, os.getcwd(), script)
print script, "processed"
#
########################################################################
if __name__ == '__main__':
main()
Posted by yungyuc
at 17:45,
0 comment,
0 trackback.
Navigate
- Previous: sarge 和 Fedore Core 3 的 stack maximum 預設得不一樣 @2005/06/22
- Next: Plone Shell @2005/06/22
Add a trackback
Please send trackback to: http://blog.seety.org/everydaywork/2005/6/22/363/trackback/.
Add a comment

