mpsd-helper.sh 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639
  1. #!/bin/sh
  2. # mpsd için yardımcı işlevler
  3. export TOP_PID=$$
  4. hata_olustu(){
  5. if [ ! -z "$1" ];then
  6. echo "$1"
  7. kill -9 $TOP_PID
  8. exit 1
  9. fi
  10. }
  11. BSDTAR="bsdtar"
  12. bsdtar --version | grep "3.3"
  13. [ $? -eq 0 ] && BSDTAR="bsdtar --acls --xattrs"
  14. G_=${DERLEME_ISYER}/tmp/globals/
  15. get_var(){
  16. [ -f ${G_}$1 ] && printf `cat ${G_}$1` || printf "-"
  17. }
  18. set_var(){
  19. [ -z $1 ] && hata_olustu "variable param not exists"
  20. [ -z $2 ] && hata_olustu "value param not exists"
  21. printf "$2" > ${G_}$1
  22. }
  23. _delete_work_dir() {
  24. if [ -z ${DERLEME_ISYER} ];then
  25. echo "DERLEME_ISYER tanımlı değil!"
  26. exit 1
  27. elif [ "x${DERLEME_ISYER}" == "x/" ];then
  28. echo "DERLEME_ISYER / olamaz!"
  29. exit 1
  30. else
  31. rm -rf ${DERLEME_ISYER}
  32. fi
  33. }
  34. _prepare_work_dir(){
  35. umask 022
  36. _delete_work_dir
  37. mkdir -p $SRC $PKG $PKG/${META} ${G_}
  38. }
  39. libgerek_bul(){
  40. # todo!!! ldd ile tüm gereklerin buldurulup libgerekler dosyasının
  41. # tek gezmede gerek tespitinin yapılması sağlanabilir mi araştıralacak.
  42. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  43. echo "libgerek analizi"
  44. local templg=`mktemp`
  45. rm -f ${PKG}/libgerekler
  46. for libso in `find $PKG -name *.so -type f`;do
  47. LC_ALL=C objdump -x $libso | grep NEEDED | awk '{print $2}' >> $templg
  48. done
  49. #for exec in `find $PKG -executable -type f`;do
  50. # sadece elf ikililerin dinamiklerini tespit etmek için
  51. for exec in `find $PKG -executable -type f | xargs -I {} file {} | grep ELF | cut -d':' -f1`;do
  52. LC_ALL=C objdump -x $exec | grep NEEDED | awk '{print $2}' >> $templg
  53. echo "$exec +"
  54. done
  55. awk '!/./ || !seen[$0]++' $templg > ${PKG}/${META}/libgerekler
  56. rm -f $templg
  57. cp -v ${PKG}/${META}/libgerekler $PWD/$isim.libgerekler
  58. }
  59. pktlib_bul(){
  60. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  61. echo "pktlib analizi"
  62. local temppl=`mktemp`
  63. rm -f ${PKG}/pktlibler
  64. for libso in `find $PKG -name *.so* -type f`;do
  65. # paket içerik so dosya isminin yazılması
  66. echo "`basename $libso`" >> $temppl
  67. echo "$libso +"
  68. done
  69. for libso in `find $PKG -name *.so* -type l`;do
  70. # paket içerik so dosya isminin yazılması
  71. echo "`basename $libso`" >> $temppl
  72. echo "$libso +"
  73. done
  74. # mükerrer kayıtların elenmesi.
  75. awk '!/./ || !seen[$0]++' $temppl > ${PKG}/${META}/pktlibler
  76. rm -f $temppl
  77. cp -v ${PKG}/${META}/pktlibler $PWD/$isim.pktlibler
  78. }
  79. compress_manpages() {
  80. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  81. local FILE DIR TARGET
  82. pushd $PWD &>/dev/zero
  83. cd $PKG
  84. echo "manpages(arşivleme) işlemi"
  85. find . -type f -path "*/share/man*/*" | while read FILE; do
  86. if [ "$FILE" = "${FILE%%.gz}" ]; then
  87. gzip -9 "$FILE"
  88. fi
  89. done
  90. find . -type l -path "*/share/man*/*" | while read FILE; do
  91. TARGET=`readlink -n "$FILE"`
  92. TARGET="${TARGET##*/}"
  93. TARGET="${TARGET%%.gz}.gz"
  94. rm -f "$FILE"
  95. FILE="${FILE%%.gz}.gz"
  96. DIR=`dirname "$FILE"`
  97. if [ -e "$DIR/$TARGET" ]; then
  98. ln -sf "$TARGET" "$FILE"
  99. fi
  100. done
  101. find . -type f -path "*/share/info/*" | while read FILE; do
  102. if [ "$FILE" = "${FILE%%.gz}" ]; then
  103. gzip -9 "$FILE"
  104. fi
  105. done
  106. find . -type l -path "*/share/info/*" | while read FILE; do
  107. TARGET=`readlink -n "$FILE"`
  108. TARGET="${TARGET##*/}"
  109. TARGET="${TARGET%%.gz}.gz"
  110. rm -f "$FILE"
  111. FILE="${FILE%%.gz}.gz"
  112. DIR=`dirname "$FILE"`
  113. if [ -e "$DIR/$TARGET" ]; then
  114. ln -sf "$TARGET" "$FILE"
  115. fi
  116. done
  117. popd &>/dev/zero
  118. }
  119. delete_non_req_files() {
  120. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  121. pushd $PWD &>/dev/zero
  122. echo "istenmeyen dosya/dizinlerin silinmesi işlemi"
  123. cd $PKG
  124. # share/info/dir.gz
  125. local infodirgz=$(find . -type f -printf "%P\n" | grep share/info/dir.gz)
  126. [ ! -z $infodirgz ] && rm -rvf $infodirgz
  127. # todo!!!
  128. # DOC_SIL=1 ayarı değerlendirilecek
  129. [ -d usr/share/doc ] && rm -rvf usr/share/doc
  130. [ -d usr/share/gtk-doc ] && rm -rvf usr/share/gtk-doc
  131. # todo!!!
  132. # INFO_SIL=1 ayarı değerlendirilecek
  133. [ -d usr/share/info ] && rm -rvf usr/share/info
  134. # todo!!!
  135. # LIBTOOL_SIL=1 ayarı değerlendirilecek
  136. # .la files deleting
  137. [ -d usr/lib ] && find usr/lib -name "*.la" ! -path "usr/lib/ImageMagick*" -exec rm -fv {} \;
  138. # perl gereksizleri
  139. if [ -d usr/lib/perl5 ];then
  140. find $PKG -iname 'TODO*' -or \
  141. -iname 'Change*' -or \
  142. -iname 'README*' -or \
  143. -name '*.bs' -or \
  144. -name .packlist -or \
  145. -name perllocal.pod | xargs rm -v
  146. fi
  147. # sbin altındakileri bin altına taşıma
  148. if [ -d $PKG/usr/sbin ] && [ ! -l $PKG/usr/sbin ];then
  149. mv -v $PKG/usr/sbin/* $PKG/usr/bin
  150. rm -rvf $PKG/usr/sbin
  151. fi
  152. if [ -d $PKG/sbin ] && [ ! -l $PKG/sbin ];then
  153. mv -v $PKG/sbin/* $PKG/usr/bin
  154. rm -rvf $PKG/sbin
  155. fi
  156. if [ -d $PKG/bin ] && [ ! -l $PKG/bin ];then
  157. mv -v $PKG/bin/* $PKG/usr/bin
  158. rm -rvf $PKG/bin
  159. fi
  160. if [ -d $PKG/lib ] && [ ! -l $PKG/lib ];then
  161. cp -rvf $PKG/lib/* $PKG/usr/lib/
  162. rm -rvf $PKG/lib
  163. fi
  164. # boş dizin sil
  165. if [ -d usr/share ];then
  166. [ ! "$(ls -A usr/share)" ] && rm -rvf usr/share
  167. fi
  168. ###
  169. # systemd dizin sil
  170. if [ -d usr/lib/systemd ];then
  171. rm -rvf usr/lib/systemd
  172. fi
  173. # var/run run dizini sistemle çakışıyor
  174. if [ -d var/run ];then
  175. rm -rvf var/run
  176. fi
  177. if [ -d run ];then
  178. rm -rvf run
  179. fi
  180. echo "-----------------------------------"
  181. popd &>/dev/zero
  182. }
  183. strip_files() {
  184. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  185. local _strip_kl=`get_var "STRIP_KARALISTE"`
  186. if [ -f $PKG/.nostrip ];then
  187. echo "strip yok"
  188. STRIP="0"
  189. fi
  190. [ "${_strip_kl}" != "-" ] && STRIP_KARALISTE=${_strip_kl}
  191. if [ "$STRIP" = "1" ];then
  192. echo "strip(kırpma) işlemi"
  193. local FILE kara
  194. kara=""
  195. # strip_karaliste kontrol edilecek, listedeki dosyalar pas geçilecek
  196. # karaliste: "a b c" şeklinde gelmektedir.
  197. pushd $PWD &>/dev/zero
  198. cd $PKG
  199. find . -type f -printf "%P\n" | while read FILE; do
  200. if [ ! -z $STRIP_KARALISTE ];then
  201. kara=`echo "$STRIP_KARALISTE" | awk -v FILE="$FILE" '$1 ~ FILE {print $1}'`
  202. fi
  203. if [ -z $kara ];then
  204. case $(file -b "$FILE") in
  205. *ELF*executable*not\ stripped)
  206. strip --strip-all "$FILE"
  207. echo "$FILE +"
  208. ;;
  209. *ELF*shared\ object*not\ stripped)
  210. strip --strip-unneeded "$FILE"
  211. echo "$FILE +"
  212. ;;
  213. current\ ar\ archive)
  214. strip --strip-debug "$FILE"
  215. echo "$FILE +"
  216. esac
  217. else
  218. echo "$FILE -"
  219. fi
  220. done
  221. popd &>/dev/zero
  222. else
  223. echo "strip(kırpma) işlemi iptal edildi"
  224. fi
  225. }
  226. kosuk_kopyala(){
  227. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  228. pushd $PWD &>/dev/zero
  229. echo "kosuk kopyalama"
  230. local yeniad=""
  231. for _kosuk in kurkos.sh koskur.sh silkos.sh kossil.sh;do
  232. if [ -f ${TALIMAT_DIZIN}/${_kosuk} ];then
  233. yeniad=`printf ${_kosuk} | cut -d'.' -f1`
  234. cp -fv ${TALIMAT_DIZIN}/${_kosuk} $PKG/${META}/."${yeniad}"
  235. echo "${_kosuk} pakete eklendi."
  236. fi
  237. done
  238. popd &>/dev/zero
  239. echo "-----------------------------------"
  240. }
  241. paket_arsiv_bilgi_uret(){
  242. [ -z $1 ] && hata_olustu "mps paketi tanımlı değil!"
  243. [ ! -f $1 ] && hata_olustu "mps paketi bulunamadı!"
  244. echo "paket arşiv bilgisi"
  245. local pkt=$1
  246. local pakboyut=`boyut_hesapla $pkt`
  247. # paket boyutu kontrol edilerek paketin içeriği kontrol edilir
  248. # bir diğer yöntem de içinde dolu dizin barındırıyor mu ona bakılacak.
  249. # derleme aşamaları başarı mesajı üretebilir. her işlev kendisinden önceki başarı mesajını kontrol edebilir.
  250. if [ "$pakboyut" -lt "2000" ]; then
  251. echo "${urpkt}.mps.lz.bilgi -"
  252. rm -f $pkt
  253. hata_olustu "paket oluşturmada hata, yetersiz boyut. Pakur aşamasını kontrol ediniz!!!"
  254. else
  255. # paket arşiv boyut hesaplama
  256. local kurboyut=`boyut_hesapla $PKG`
  257. local pakhash=`sha256sum $pkt | awk '{print $1}'`
  258. local mimari=`uname -m`
  259. echo "$isim $surum $devir $mimari $pakboyut $kurboyut $pakhash" > "${pkt}.bilgi"
  260. echo "${urpkt}.mps.lz.bilgi +"
  261. fi
  262. echo "-----------------------------------"
  263. }
  264. paket_ustbilgi_uret(){
  265. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  266. local derzaman=`date +%s`
  267. local mimari=`uname -m`
  268. local boyut=`boyut_hesapla $PKG`
  269. libgerek_bul
  270. pktlib_bul
  271. rm -f ${META}/${USTBILGI}
  272. # meta bilgilerin oluşturulması
  273. cat <<EOF > ${PKG}/${META}/${USTBILGI}
  274. isim=$isim
  275. surum=$surum
  276. devir=$devir
  277. tanim=$tanim
  278. url=$url
  279. paketci=$paketci
  280. derzaman=$derzaman
  281. mimari=$mimari
  282. grup=$grup
  283. boyut=$boyut
  284. thash=$thash
  285. EOF
  286. echo "paket üstbilgileri ${PKG}/${USTBILGI} dosyasına yazıldı."
  287. }
  288. paket_icerik_bilgi_uret(){
  289. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  290. pushd $PWD &>/dev/zero
  291. cd $PKG
  292. rm -f ${ICBILGI}
  293. # yöntem 1
  294. #LANG=C mtree -c -K sha256digest > ${ICBILGI}.k
  295. # yöntem 2
  296. LANG=C \
  297. $BSDTAR --preserve-permissions --format=mtree \
  298. --options='!all,use-set,type,uid,gid,mode,time,size,sha256,link' \
  299. -czf - * ${META} > ${ICBILGI}
  300. popd &>/dev/zero
  301. echo "paket içbilgileri ${PKG}/${ICBILGI} dosyasına yazıldı."
  302. }
  303. paket_arsivle(){
  304. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  305. local urpkt="${PAKETLEME_DIZIN}/${isim}#${surum}-${devir}-$(uname -m)"
  306. echo "paket arşivi"
  307. pushd $PWD &>/dev/zero
  308. cd $PKG
  309. set -x
  310. LANG=C \
  311. $BSDTAR --preserve-permissions \
  312. -cf ${urpkt}.mps * ${META} ${ICBILGI}
  313. rm -f ${urpkt}.mps.lz
  314. #xz -4 --threads=0 ${urpkt}
  315. set +x
  316. #mv ${urpkt}.xz ${urpkt}.mps
  317. lzip -9 ${urpkt}.mps
  318. popd &>/dev/zero
  319. echo "paket arşivi: ${urpkt}.mps.lz +"
  320. echo "-------------------------------"
  321. paket_arsiv_bilgi_uret "${urpkt}.mps.lz"
  322. }
  323. _generate_package(){
  324. # paket üretimden önce PKG/ altına atılmış dosya kontrolü
  325. cd $PKG
  326. if [ "`ls|wc -l`" == "0" ]; then
  327. hata_olustu "Boş paketleme dizini!!!"
  328. fi
  329. cd -
  330. echo "PAKET OLUŞTURMA = ${isim}#${surum}-${devir}"
  331. echo "---------"
  332. time_start
  333. echo "======================================================="
  334. strip_files
  335. compress_manpages
  336. delete_non_req_files
  337. kosuk_kopyala
  338. paket_ustbilgi_uret
  339. paket_icerik_bilgi_uret
  340. paket_arsivle
  341. # paket sorunlu ise workdir silinmeyecek!!!!
  342. # echo "todo: paket sorunlu ise workdir silinmeyecek!!!!"
  343. _delete_work_dir
  344. # [ "$G_x" != "/x" ] && rm -rf G_
  345. echo "======================================================="
  346. time_finish
  347. echo "======================================================="
  348. }
  349. indir_git(){
  350. # girdi: git_kaynak_adres, klon_ismi//git://adresdeki dosya, klon konumu//$KAYNAKLAR_DEPO
  351. local _branch konum
  352. _branch=""
  353. [ ! -z $1 ] && local _gitadres=$1 || hata_olustu "git adresi tanımlı değil"
  354. [ ! -z $2 ] && local _isim=$2 || ad="`echo ${_gitadres} | sed 's|^.*://.*/||g'`"
  355. [ ! -z $3 ] && local konum=$3 || konum=${KAYNAKLAR_DEPO}
  356. #branch kontrolü
  357. _branch=`echo "${_gitadres}" |sed 's/#branch=/\n/g' | sed -n 2p`
  358. if [ ! -z ${_branch} ];then
  359. _gitadres=`echo "${_gitadres}" |sed 's/#branch=/\n/g' | sed -n 1p`
  360. _branch="-b ${_branch}"
  361. fi
  362. if [ ! -d ${konum}/${_isim} ];then
  363. git clone ${_branch} ${_gitadres} ${konum}/${_isim}
  364. else
  365. cd ${konum}/${_isim}
  366. git pull
  367. cd -
  368. fi
  369. cp -r ${konum}/${_isim} $SRC/
  370. }
  371. indir_wget(){
  372. # girdi: kaynak_adres, kayıt ismi//adresdeki dosya, kayıt konumu//$KAYNAKLAR_DEPO
  373. # ack: girdilere göre dosya wget ile önce .partial olarak iner başarılı tamamlanırsa
  374. # partial normal kayıt ismine aktarılır yoksa partial dosya üzerinden kısmi indirme devam eder.
  375. local hata
  376. local wget_sertifika_ayar=""
  377. [ ! -f /etc/ssl/certs/ca-certificates.crt ] && wget_sertifika_ayar="--no-check-certificate"
  378. [ ! -z $1 ] && local kaynak=$1 || hata_olustu "kaynak param eksik"
  379. [ ! -z $2 ] && local ad=$2 || ad="`echo $kaynak | sed 's|^.*://.*/||g'`"
  380. [ ! -z $3 ] && local konum=$3 || konum=${KAYNAKLAR_DEPO}
  381. local indirilen=${konum}/${ad}
  382. if [ -f ${konum}/${ad} ];then
  383. if [ ! -s ${konum}/${ad} ];then
  384. echo "boş kaynak dosyası"
  385. rm -rfv ${konum}/${ad}
  386. # eğer linkte bir hata varsa sürekli döngüye girebilir, hata atıyoruz.
  387. return 1
  388. else
  389. echo "${konum}/${ad} Dosya zaten mevcut"
  390. return
  391. fi
  392. fi
  393. # kaynak dosyası yoksa indirilecek
  394. # wget indirme aracnın kontrolü
  395. komut_kontrol wget
  396. local kismi_indirilen="${indirilen}.partial"
  397. local indirme_param="${wget_sertifika_ayar} --passive-ftp --no-directories \
  398. --tries=3 $wget_retry \
  399. -O $indirilen \
  400. --output-document=$kismi_indirilen \
  401. ${WGET_GENEL_PARAM}"
  402. if [ -f "$kismi_indirilen" ];then
  403. echo "Kısmi indirme var,tamamlanmaya çalışılacak"
  404. kismi_indirme="-c"
  405. fi
  406. komut="wget ${kismi_indirme} ${indirme_param} $kaynak"
  407. #echo $komut
  408. hata=1
  409. if [ $hata != 0 ]; then
  410. while true; do
  411. wget ${kismi_indirme} ${indirme_param} $kaynak
  412. hata=$?
  413. if [ $hata != 0 ] && [ "$kismi_indirme" ]; then
  414. echo "Kısmi indirme hata oluştu,tekrar başlatılıyor"
  415. rm -f "$kismi_indirilen"
  416. kismi_indirme=""
  417. else
  418. break
  419. fi
  420. done
  421. fi
  422. if [ $hata != 0 ]; then
  423. echo "İndiriliyor '$adres' başarısız."
  424. hata_olustu "indirilirken hata oluştu"
  425. fi
  426. mv -f "${kismi_indirilen}" "${indirilen}"
  427. }
  428. _disari_cikar() {
  429. # girdi: kaynak_dosya, çıkarma_yeri
  430. # todo!!! gz(tarsız) uzantılı kaynaklara extract işlevi eklenecek
  431. local _arsiv _yer komut
  432. [ $1 ] && _arsiv=$1 || hata_olustu "_arsiv_gerekli"
  433. [ $2 ] && _yer=$2 || hata_olustu "_konum_gerekli"
  434. if [ ${TAR} = "tar" ];then
  435. komut_kontrol tar
  436. echo "gnu tar ile dışarı çıkarılacak"
  437. komut="tar xf ${_arsiv} -C ${_yer}"
  438. elif [ `basename ${TAR}` = "bsdtar" ];then
  439. komut_kontrol bsdtar
  440. komut="${TAR} -p -o -C ${_yer} -xf ${_arsiv}"
  441. else
  442. echo "farklı sıkıştırma aracı!!!"
  443. exit 1
  444. fi
  445. echo ${komut}
  446. ${komut}
  447. }
  448. kaynak_cikar() {
  449. # girdi: arsiv_listesi. kaynakların kayıt adlarının bulunduğu liste
  450. local arsiv_dosya
  451. local komut
  452. [ ! -z $1 ] && local arsiv_dosya=$1 || arsiv_dosya=${SRC}/arsiv.list
  453. [ ! -f ${arsiv_dosya} ] && return 1 # hata_olustu "arşiv liste dosyası bulunamadı!"
  454. for dosya in `cat ${arsiv_dosya}`; do
  455. unset komut
  456. case $dosya in
  457. *.tar|*.tar.gz|*.tar.Z|*.tgz|*.lz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm)
  458. if [ ! "$CIKARMA_ATLA" -eq 1 ];then
  459. _disari_cikar ${KAYNAKLAR_DEPO}/$dosya $SRC
  460. else
  461. komut="cp ${KAYNAKLAR_DEPO}/$dosya $SRC"
  462. fi ;;
  463. *)
  464. if [ -f ${TALIMAT_DIZIN}/${dosya} ];then
  465. komut="cp ${TALIMAT_DIZIN}/$dosya $SRC"
  466. elif [ -f ${KAYNAKLAR_DEPO}/${dosya} ];then
  467. komut="cp ${KAYNAKLAR_DEPO}/$dosya $SRC"
  468. elif [ -d ${KAYNAKLAR_DEPO}/${dosya} ];then
  469. komut="cp -r ${KAYNAKLAR_DEPO}/$dosya $SRC"
  470. else
  471. hata_olustu "${dosya} dosya bulunamadı!"
  472. fi ;;
  473. esac
  474. if [ ! -z "$komut" ];then
  475. #echo "$komut"
  476. ${komut}
  477. fi
  478. done
  479. }
  480. boyut_hesapla(){
  481. local dizin
  482. local boyut
  483. [ -z $1 ] && hata_olustu "boyut hesaplama için dizin ismi gerekli" || dizin=$1
  484. [ ! -s $dizin ] && hata_olustu "ilgili dizin boş veya tanımsız"
  485. boyut=`du -sb ${dizin} | awk '{print $1}'`
  486. printf $boyut
  487. }
  488. time_start(){
  489. echo "started: `date +%x\ %H:%M:%S`"
  490. }
  491. time_finish(){
  492. echo "finished: `date +%x\ %H:%M:%S`"
  493. }
  494. komut_kontrol() {
  495. [ -z $1 ] && hata_olustu "kontrol edilecek komut parametresi gerekli!"
  496. command -v $1 > /dev/null 2>&1
  497. [ ! $? -eq 0 ] && hata_olustu "$1 komutu gerekli"
  498. }
  499. # MODS
  500. # mod tanımlanırsa aşağıdaki fonksiyonlar işletilecek
  501. # yoksa rutin derleme adımları işletilir.
  502. only_download_sources(){
  503. _prepare_work_dir;
  504. _download_copy;
  505. _hash_check
  506. }
  507. only_extract(){
  508. _prepare_work_dir;
  509. _download_copy;
  510. _hash_check;
  511. _extract
  512. }
  513. only_build(){
  514. _prepare_work_dir;
  515. _download_copy;
  516. _hash_check;
  517. _extract;
  518. #_install_bdeps;
  519. _build
  520. }
  521. re_build(){
  522. _build
  523. }
  524. re_generate(){
  525. _install;
  526. _generate_package
  527. }
  528. display_usage(){
  529. echo "valid parameters:"
  530. echo
  531. echo " --download Only download sources"
  532. echo " --extract download and extract sources"
  533. echo " --build only build package"
  534. echo " --generate generate package"
  535. echo
  536. echo "or just go without parameters, it builds routine steps"
  537. }
  538. run(){
  539. # BUILD ROUTINE
  540. #====================================================
  541. arg="$1"
  542. if [ -z $arg ] ; then
  543. # DEFAULT BUILD STEPS
  544. #==========================================
  545. rm -f ${BUILD_LOG}
  546. rm -f ${INSTALL_LOG}
  547. rm -f ${_LOG}
  548. _prepare_work_dir 2>&1 | tee ${_LOG}
  549. _download_copy 2>&1 | tee -a ${_LOG}
  550. _hash_check 2>&1 | tee -a ${_LOG}
  551. _extract 2>&1 | tee -a ${_LOG}
  552. #_install_bdeps 2>&1 | tee -a ${_LOG}
  553. _build 2>&1 | tee ${BUILD_LOG}
  554. _install 2>&1 | tee ${INSTALL_LOG}
  555. _generate_package 2>&1 | tee -a ${_LOG}
  556. #==========================================
  557. else
  558. case $arg in
  559. --download)
  560. only_download_sources
  561. ;;
  562. --extract)
  563. only_extract
  564. ;;
  565. --build)
  566. only_build
  567. ;;
  568. --rebuild)
  569. re_build
  570. ;;
  571. --generate)
  572. re_generate
  573. ;;
  574. *)
  575. echo "invalid parameter: ${arg}"
  576. display_usage
  577. exit 1
  578. ;;
  579. esac
  580. fi
  581. #====================================================
  582. }