rules.lua 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. function formatter(fmt, ...)
  2. local args, order = {...}, {}
  3. fmt = fmt:gsub('%%(%d+)%$', function(i)
  4. table.insert(order, args[tonumber(i)])
  5. return '%'
  6. end)
  7. return string.format(fmt, table.unpack(order))
  8. end
  9. function file_content(filename)
  10. local f = assert(io.open(filename, "r"))
  11. local t = f:read('*all')
  12. f:close()
  13. return t
  14. end
  15. helper={}
  16. helper.scripts={
  17. strip=[===[
  18. PKG=%s
  19. STRIP_KARALISTE=%s
  20. pushd $PWD &>/dev/zero
  21. cd $PKG
  22. find . -type f -printf "%%P\n" | while read FILE; do
  23. if [ ! -z $STRIP_KARALISTE ];then
  24. kara=`echo "$STRIP_KARALISTE" | awk -v FILE="$FILE" '$1 ~ FILE {print $1}'`
  25. fi
  26. if [ -z $kara ];then
  27. case $(file -b "$FILE") in
  28. *ELF*executable*not\ stripped)
  29. strip --strip-all "$FILE"
  30. echo "$FILE +"
  31. ;;
  32. *ELF*shared\ object*not\ stripped)
  33. strip --strip-unneeded "$FILE"
  34. echo "$FILE +"
  35. ;;
  36. current\ ar\ archive)
  37. strip --strip-debug "$FILE"
  38. echo "$FILE +"
  39. esac
  40. else
  41. echo "$FILE -"
  42. fi
  43. done
  44. popd &>/dev/zero
  45. ]===],
  46. delete_files=[===[
  47. PKG=%s
  48. [ -z $PKG ] && exit 1
  49. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  50. pushd $PWD &>/dev/zero
  51. echo "istenmeyen dosya/dizinlerin silinmesi işlemi"
  52. cd $PKG
  53. # share/info/dir.gz
  54. infodirgz=$(find . -type f -printf "%%P\n" | grep share/info/dir.gz)
  55. [ ! -z $infodirgz ] && rm -rvf $infodirgz
  56. [ -d usr/share/doc ] && rm -rvf usr/share/doc
  57. [ -d usr/share/gtk-doc ] && rm -rvf usr/share/gtk-doc
  58. # todo!!!
  59. # INFO_SIL=1 ayarı değerlendirilecek
  60. [ -d usr/share/info ] && rm -rvf usr/share/info
  61. # todo!!!
  62. # LIBTOOL_SIL=1 ayarı değerlendirilecek
  63. # .la files deleting
  64. [ -d usr/lib ] && find usr/lib -name "*.la" ! -path "usr/lib/ImageMagick*" -exec rm -fv {} \;
  65. # perl gereksizleri
  66. if [ -d usr/lib/perl5 ];then
  67. find $PKG -iname 'TODO*' -or \
  68. -iname 'Change*' -or \
  69. -iname 'README*' -or \
  70. -name '*.bs' -or \
  71. -name .packlist -or \
  72. -name perllocal.pod | xargs rm -v
  73. fi
  74. # sbin altındakileri bin altına taşıma
  75. if [ -d $PKG/usr/sbin ] && [ ! -l $PKG/usr/sbin ];then
  76. mv -v $PKG/usr/sbin/* $PKG/usr/bin
  77. rm -rvf $PKG/usr/sbin
  78. fi
  79. if [ -d $PKG/sbin ] && [ ! -l $PKG/sbin ];then
  80. mv -v $PKG/sbin/* $PKG/usr/bin
  81. rm -rvf $PKG/sbin
  82. fi
  83. if [ -d $PKG/bin ] && [ ! -l $PKG/bin ];then
  84. mv -v $PKG/bin/* $PKG/usr/bin
  85. rm -rvf $PKG/bin
  86. fi
  87. if [ -d $PKG/lib ] && [ ! -l $PKG/lib ];then
  88. cp -rvf $PKG/lib/* $PKG/usr/lib/
  89. rm -rvf $PKG/lib
  90. fi
  91. # boş dizin sil
  92. [ -d usr/share ] && [ ! "$(ls -A usr/share)" ] && rm -rvf usr/share
  93. # systemd dizin sil
  94. [ -d usr/lib/systemd ] && rm -rvf usr/lib/systemd
  95. # var/run run dizini sistemle çakışıyor
  96. [ -d var/run ] && rm -rvf var/run
  97. [ -d run ] && rm -rvf run
  98. popd &>/dev/zero
  99. ]===],
  100. copy_scripts=[===[
  101. TALIMAT_DIZIN=%s
  102. [ -z $TALIMAT_DIZIN ] && exit 1
  103. PKG=%s
  104. META=%s
  105. [ -z $PKG ] && exit 1
  106. pushd $PWD &>/dev/zero
  107. echo "kosuk kopyalama"
  108. yeniad=""
  109. for _kosuk in kurkos.sh koskur.sh silkos.sh kossil.sh;do
  110. if [ -f ${TALIMAT_DIZIN}/${_kosuk} ];then
  111. yeniad=`printf ${_kosuk} | cut -d'.' -f1`
  112. cp -fv ${TALIMAT_DIZIN}/${_kosuk} $PKG/${META}/."${yeniad}"
  113. echo "${_kosuk} pakete eklendi."
  114. fi
  115. done
  116. # yururluk dosya kopyalama
  117. yururluk_dosya="/tmp/$(basename ${TALIMAT_DIZIN}).yur"
  118. [ -f ${yururluk_dosya} ] && cp ${yururluk_dosya} $PKG/${META}/
  119. popd &>/dev/zero
  120. ]===],
  121. libdepends=[===[
  122. PKG=%s
  123. META=%s
  124. if [ ! -d $PKG ];then
  125. echo "paketleme dizini: $PKG bulunamadı!"
  126. exit 1
  127. fi
  128. echo "libgerek analizi"
  129. templg=`mktemp`
  130. rm -f ${PKG}/libgerekler
  131. for libso in `find ${PKG} -name *.so -type f`;do
  132. LC_ALL=C objdump -x $libso | grep NEEDED | awk '{print $2}' >> $templg
  133. done
  134. for libso in `find ${PKG} -name *.so.* -type f`;do
  135. LC_ALL=C objdump -x $libso | grep NEEDED | awk '{print $2}' >> $templg
  136. done
  137. # sadece elf ikililerin dinamiklerini tespit etmek için
  138. for exec in `find $PKG -executable -type f | xargs -I {} file {} | grep ELF | cut -d':' -f1`;do
  139. LC_ALL=C objdump -x $exec | grep NEEDED | awk '{print $2}' >> $templg
  140. echo "$exec +"
  141. done
  142. awk '!/./ || !seen[$0]++' $templg > ${PKG}/${META}/libgerekler
  143. rm -f $templg
  144. cat ${PKG}/${META}/libgerekler | sort > $PWD/$isim.libgerekler
  145. ]===],
  146. pkglibs=[===[
  147. echo "pktlib analizi"
  148. temppl=`mktemp`
  149. rm -f ${PKG}/pktlibler
  150. for libso in `find $PKG -name *.so* -type f`;do
  151. # paket içerik so dosya isminin yazılması
  152. echo "`basename $libso`" >> $temppl
  153. echo "$libso +"
  154. done
  155. for libso in `find $PKG -name *.so* -type l`;do
  156. # paket içerik so dosya isminin yazılması
  157. echo "`basename $libso`" >> $temppl
  158. echo "$libso +"
  159. done
  160. # mükerrer kayıtların elenmesi.
  161. awk '!/./ || !seen[$0]++' $temppl > ${PKG}/${META}/pktlibler
  162. rm -f $temppl
  163. cat ${PKG}/${META}/pktlibler | sort > $PWD/$isim.pktlibler
  164. ]===],
  165. compress_manpages=[===[
  166. PKG=%s
  167. [ ! -d $PKG ] && hata_olustu "paketleme dizini: $PKG bulunamadı!"
  168. pushd $PWD &>/dev/zero
  169. cd $PKG
  170. echo "manpages(arşivleme) işlemi"
  171. find . -type f -path "*/share/man*/*" | while read FILE; do
  172. if [ "$FILE" = "${FILE%%.gz}" ]; then
  173. gzip -9 "$FILE"
  174. fi
  175. done
  176. find . -type l -path "*/share/man*/*" | while read FILE; do
  177. TARGET=`readlink -n "$FILE"`
  178. TARGET="${TARGET##*/}"
  179. TARGET="${TARGET%%.gz}.gz"
  180. rm -f "$FILE"
  181. FILE="${FILE%%.gz}.gz"
  182. DIR=`dirname "$FILE"`
  183. if [ -e "$DIR/$TARGET" ]; then
  184. ln -sf "$TARGET" "$FILE"
  185. fi
  186. done
  187. find . -type f -path "*/share/info/*" | while read FILE; do
  188. if [ "$FILE" = "${FILE%%.gz}" ]; then
  189. gzip -9 "$FILE"
  190. fi
  191. done
  192. find . -type l -path "*/share/info/*" | while read FILE; do
  193. TARGET=`readlink -n "$FILE"`
  194. TARGET="${TARGET##*/}"
  195. TARGET="${TARGET%%.gz}.gz"
  196. rm -f "$FILE"
  197. FILE="${FILE%%.gz}.gz"
  198. DIR=`dirname "$FILE"`
  199. if [ -e "$DIR/$TARGET" ]; then
  200. ln -sf "$TARGET" "$FILE"
  201. fi
  202. done
  203. popd &>/dev/zero
  204. ]===],
  205. meta_info=[===[
  206. PKG=%s
  207. META=%s
  208. boyut=%s
  209. thash=%s
  210. USTBILGI=".ustbilgi"
  211. mimari=`uname -m`
  212. derzaman=`date +%%s`
  213. rm -f ${PKG}/${META}/${USTBILGI}
  214. # meta bilgilerin oluşturulması
  215. cat <<EOF > ${PKG}/${META}/${USTBILGI}
  216. isim=$isim
  217. surum=$surum
  218. devir=$devir
  219. tanim=$tanim
  220. url=$url
  221. paketci=$paketci
  222. derzaman=$derzaman
  223. mimari=$mimari
  224. grup=$grup
  225. boyut=$boyut
  226. thash=$thash
  227. EOF
  228. echo "paket üstbilgileri ${PKG}/${USTBILGI} dosyasına yazıldı."
  229. ]===],
  230. content_info=[===[
  231. PKG=%s
  232. BSDTAR=$(which bsdtar)
  233. if [ ! -d $PKG ];then
  234. echo "paketleme dizini: $PKG bulunamadı!"
  235. exit 1
  236. fi
  237. pushd $PWD &>/dev/zero
  238. cd $PKG
  239. ICBILGI=".icbilgi"
  240. rm -f ${ICBILGI}
  241. # yöntem 1
  242. #LANG=C mtree -c -K sha256digest > ${ICBILGI}.k
  243. # yöntem 2
  244. LANG=C \
  245. $BSDTAR --preserve-permissions --format=mtree \
  246. --options='!all,use-set,type,uid,gid,mode,time,size,sha256,link' \
  247. -czf - * ${META} > ${ICBILGI}
  248. popd &>/dev/zero
  249. echo "paket içbilgileri ${PKG}/${ICBILGI} dosyasına yazıldı."
  250. ]===],
  251. generate_package=[===[
  252. PKG=%s
  253. META=%s
  254. BSDTAR=$(which bsdtar)
  255. SUFFIX="mps.lz"
  256. if [ ! -d $PKG ];then
  257. echo "paketleme dizini: $PKG bulunamadı!"
  258. exit 1
  259. fi
  260. urpkt="$PWD/${isim}#${surum}-${devir}"
  261. ICBILGI=".icbilgi"
  262. pushd $PWD &>/dev/zero
  263. cd $PKG
  264. set -x
  265. LANG=C \
  266. $BSDTAR --preserve-permissions \
  267. -cf ${urpkt}.mps * ${META} ${ICBILGI}
  268. rm -f ${urpkt}.kur
  269. #xz -4 --threads=0 ${urpkt}
  270. set +x
  271. #mv ${urpkt}.xz ${urpkt}.mps
  272. lzip -9 ${urpkt}.mps
  273. mv ${urpkt}.mps.lz ${urpkt}.kur
  274. echo "Paket arşivi: ${urpkt}.kur +"
  275. echo "\n"
  276. if [ -z ${urpkt} ];then
  277. echo "mps paketi tanımlı değil!"
  278. exit 1
  279. fi
  280. if [ ! -f ${urpkt}.kur ];then
  281. echo "mps paketi bulunamadı!"
  282. exit 1
  283. fi
  284. echo "paket arşiv bilgisi"
  285. pakboyut=`du -sb ${urpkt}.kur | awk '{print $1}'`
  286. if [ "$pakboyut" -lt "2000" ]; then
  287. echo "${urpkt}.kur.bilgi -"
  288. rm -f ${urpkt}
  289. echo "paket oluşturmada hata, yetersiz boyut. Pakur aşamasını kontrol ediniz!!!"
  290. exit 1
  291. else
  292. # paket arşiv boyut hesaplama
  293. kurboyut=`du -sb ${PKG}| awk '{print $1}'`
  294. pakhash=`sha256sum ${urpkt}.kur | awk '{print $1}'`
  295. mimari=`uname -m`
  296. echo "$isim $surum $devir $mimari $pakboyut $kurboyut $pakhash" > "${urpkt}.kur.bilgi"
  297. echo "${urpkt}.kur.bilgi +"
  298. fi
  299. #mv ${urpkt}.kur.bilgi ${urpkt}.kur.bilgi
  300. popd &>/dev/zero
  301. ]===],
  302. wget=[===[
  303. kaynak=%s
  304. indirilen=%s
  305. wget_genel_param=" --progress=bar:force"
  306. wget_sertifika_ayar=""
  307. indirme_iptal=0
  308. [ ! -f /etc/ssl/certs/ca-certificates.crt ] && wget_sertifika_ayar="--no-check-certificate"
  309. if [ -z $kaynak ];then
  310. echo "kaynak parametresi eksik"
  311. exit 1
  312. fi
  313. if [ -z $indirilen ];then
  314. echo "indirilen parametresi eksik"
  315. exit 1
  316. fi
  317. # kaynak var ise
  318. if [ -f ${indirilen} ];then
  319. if [ ! -s ${indirilen} ];then
  320. echo "boş kaynak dosyası"
  321. rm -rfv ${indirilen}
  322. # eğer linkte bir hata varsa sürekli döngüye girebilir, hata atıyoruz.
  323. exit 1
  324. else
  325. echo "${indirilen} Dosya zaten mevcut"
  326. indirme_iptal=1
  327. fi
  328. fi
  329. # kaynak dosyası yoksa indirilecek
  330. if [ $indirme_iptal -eq 0 ];then
  331. kismi_indirilen="${indirilen}.partial"
  332. indirme_param="${wget_sertifika_ayar} --passive-ftp --no-directories --tries=3 -O $indirilen --output-document=$kismi_indirilen ${wget_genel_param}"
  333. [ -f "$kismi_indirilen" ] && kismi_indirme="-c"
  334. komut="wget ${kismi_indirme} ${indirme_param} $kaynak"
  335. hata=1
  336. if [ $hata != 0 ]; then
  337. while true; do
  338. LC_ALL=C wget ${kismi_indirme} ${indirme_param} $kaynak
  339. hata=$?
  340. if [ $hata != 0 ] && [ "$kismi_indirme" ]; then
  341. echo "Kısmi indirme hata oluştu,tekrar başlatılıyor"
  342. rm -f "$kismi_indirilen"
  343. kismi_indirme=""
  344. else
  345. break
  346. fi
  347. done
  348. fi
  349. if [ $hata != 0 ]; then
  350. echo "İndiriliyor '$kaynak' başarısız."
  351. exit 1
  352. fi
  353. mv -f "${kismi_indirilen}" "${indirilen}"
  354. fi
  355. ]===],
  356. }
  357. -- Rules of Talimat
  358. rules={
  359. dirs={
  360. -- don't forget last slash
  361. src = "/tmp/work/src/",
  362. pkg = "/tmp/work/pkg/",
  363. pkg_meta= ".meta",
  364. archive = "/sources/",
  365. },
  366. export={
  367. me = function(key,default,val) if val ~=nil then return 'export '..key..'="'..val..'"' else return 'export '..key..'="'..default..'"' end end,
  368. talimat=function (pmeta)
  369. exports={}
  370. for key,val in pairs(pmeta) do
  371. table.insert(exports,("export "..key.."="..'"'..val..'"'))
  372. end
  373. return exports
  374. end,
  375. dirs=function ()
  376. exports={}
  377. table.insert(exports,("export ".."PKG".."="..'"'..rules.dirs.pkg..'"'))
  378. table.insert(exports,("export ".."SRC".."="..'"'..rules.dirs.src..'"'))
  379. table.insert(exports,("export ".."META".."="..'"'..rules.dirs.pkg_meta..'"'))
  380. table.insert(exports,("export ".."KAYNAK_DIZIN".."="..'"'..rules.dirs.archive..'"'))
  381. return exports
  382. end,
  383. source_aliases=[===[
  384. KERNEL_SITE="https://www.kernel.org/pub/linux/"
  385. GNU_SITE="https://ftp.gnu.org/gnu/"
  386. GNOME_SITE="https://download.gnome.org/sources"
  387. PYPI_SITE="https://files.pythonhosted.org/packages/source"
  388. XFCE4_SITE="https://archive.xfce.org/src"
  389. CPAN_SITE="https://www.cpan.org/modules/by-module"
  390. SOURCEFORGE_SITE="https://downloads.sourceforge.net/sourceforge"
  391. FREEDESKTOP_SITE="https://www.freedesktop.org/software/"
  392. DEBIAN_SITE="http://ftp.debian.org/debian/pool/"
  393. KDE_SITE="https://download.kde.org/stable/"
  394. XORG_SITE="https://www.x.org/releases/individual"
  395. ]===],
  396. },
  397. make_dirs={
  398. src = function() return "rm -rf "..rules.dirs.src..";mkdir -pv "..rules.dirs.src end,
  399. pkg = function() return "rm -rf "..rules.dirs.pkg..";mkdir -pv "..rules.dirs.pkg end,
  400. pkg_meta= function() return "mkdir -pv "..rules.dirs.pkg..rules.dirs.pkg_meta end,
  401. archive = function() return "mkdir -pv "..rules.dirs.archive end,
  402. },
  403. package={
  404. archive="$isim-$surum"
  405. },
  406. source={
  407. gz = function(t,v) return v.."/"..t.paket.isim.."-"..t.paket.surum..".tar.gz" end,
  408. xz = function(t,v) return v.."/"..t.paket.isim.."-"..t.paket.surum..".tar.xz" end,
  409. bz2 = function(t,v) return v.."/"..t.paket.isim.."-"..t.paket.surum..".tar.bz2" end,
  410. tgz = function(t,v) return v.."/"..t.paket.isim.."-"..t.paket.surum..".tgz" end,
  411. github = function(t,v) return "https://github.com/"..v.."/archive/v"..t.paket.surum..".tar.gz::"..t.paket.isim.."-"..t.paket.surum..".tar.gz" end
  412. },
  413. fetch={
  414. --url = function(f) return rules.wget.bin..rules.wget.params..f.address.." -O "..f.store end,
  415. url = function(f) return helper.scripts.wget:format(f.address,f.store) end,
  416. git = function(f)
  417. return ("([ -d %s ] && (cd %s;git pull) || git clone %s %s ) && cp -r %s %s")
  418. :format(f.store,f.store,f.address,f.store,f.store,rules.dirs.src)
  419. end,
  420. svn = function(f)
  421. return ("([ -d %s ] && (cd %s;svn up) || svn co %s %s ) && cp -r %s %s")
  422. :format(f.store,f.store,f.address,f.store,f.store,rules.dirs.src)
  423. end,
  424. --file = function(f) return "cp -f "..f.address.." "..rules.dirs.src..f.store end,
  425. dir = function(f) return "cp -frv "..f.address.." "..f.store end,
  426. file = function(f) return "cp -fv "..f.address.." "..f.store end,
  427. check = function(f) return ("[ -f %s ] && exit 0"):format(f.store) end,
  428. },
  429. hash={
  430. sha256 = function(file,hash) return ('set -x;echo "%s %s" | sha256sum --check'):format(hash,file) end,
  431. sha512 = function(file,hash) return ('set -x;echo "%s %s" | sha512sum --check'):format(hash,file) end,
  432. },
  433. extract={
  434. bsdtar = function(dir,archive) return ("set -x;bsdtar -p -o -C %s -xf %s"):format(dir,archive) end,
  435. },
  436. build_type={
  437. gnu = "./configure ${CONF_OPT} ${EXT_OPT} && make ${MAKEJOBS}",
  438. cmake = "mkdir -p build;cd build;cmake ${CMAKE_OPT} ${EXT_OPT} ../ && make ${MAKEJOBS}",
  439. py3 = "python3 setup.py build",
  440. py2 = "python2 setup.py build",
  441. perl = "perl Makefile.PL INSTALLDIRS=vendor && make",
  442. meson = "[ -z $ARCHIVE_DIR ] && ARCHIVE_DIR=$isim-$surum ; cd $SRC && milis-meson $ARCHIVE_DIR build ${EXT_OPT}",
  443. ninja = "mkdir -p build && ninja -C build",
  444. waf = "python3 waf configure --prefix=/usr ${EXT_OPT} && python3 waf build",
  445. qmake = "qmake-qt5 CONFIG+=release PREFIX=/usr ${EXT_OPT} && make ${MAKEJOBS}",
  446. },
  447. build_env={
  448. carch = function(v) return rules.export.me("CARCH","x86_64",v) end,
  449. chost = function(v) return rules.export.me("CHOST","x86_64-pc-linux-gnu",v) end,
  450. cppflags = function(v) return rules.export.me("CPPFLAGS","-D_FORTIFY_SOURCE=2",v) end,
  451. cflags = function(v) return rules.export.me("CFLAGS","-march=x86-64 -mtune=generic -O2 -pipe -fno-plt",v) end,
  452. cxxflags = function(v) return rules.export.me("CXXFLAGS","-march=x86-64 -mtune=generic -O2 -pipe -fno-plt",v) end,
  453. ldflags = function(v) return rules.export.me("LDFLAGS","-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now",v) end,
  454. jobs = function(v) if v == nil then return rules.export.me("MAKEJOBS","-j$((`nproc`+1))",nil)
  455. else return rules.export.me("MAKEJOBS","-j$((`nproc`+1))","-j"..tostring(v)) end
  456. end,
  457. confopt = function(v) return rules.export.me("CONF_OPT","--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --bindir=/usr/bin --sbindir=/usr/bin --sysconfdir=/etc --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --localstatedir=/var --disable-static",v) end,
  458. cmakeopt = function(v) return rules.export.me("CMAKE_OPT"," -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib ",v) end,
  459. },
  460. build={
  461. cd = function(t,v) return rules.change.dir(rules.dir.src..v) end,
  462. tip = function(t,v) return rules.build_type[v] end,
  463. betik = function(t,v) return v end,
  464. dosya = function(t,v) return "set -e \n"..file_content(t.dir.."/"..v).."set +e \n" end,
  465. ekconf= function(t,v) return rules.export.me("EXT_OPT",nil,v) end,
  466. yama = function(t,v) return "patch -Np1 -i $SRC/"..v end,
  467. yama0 = function(t,v) return "patch -Np0 -i $SRC/"..v end,
  468. bayrak= function(t,v) if v == "yok" or v == "0" then return "unset CPPFLAGS;unset CFLAGS;unset CXXFLAGS;unset LDFLAGS" end
  469. end,
  470. },
  471. install_type={
  472. gnu = "make DESTDIR=$PKG install $EXT_OPT",
  473. cmake = "cd build;make DESTDIR=$PKG install",
  474. py3 = "python3 setup.py install --root=${PKG} --optimize=1 --skip-build $EXT_OPT",
  475. py2 = "python2 setup.py install --root=${PKG} --optimize=1 --skip-build $EXT_OPT",
  476. ninja = "DESTDIR=$PKG ninja -C build install",
  477. meson = "cd $SRC && DESTDIR=$PKG ninja -C build install",
  478. waf = "python3 waf install --destdir=$PKG",
  479. qmake = [===[make INSTALL_ROOT=${PKG} install && [ -d $PKG/usr/lib ] \
  480. && find $PKG/usr/lib -type f -name '*.prl' -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;]===],
  481. },
  482. install={
  483. cd = function(t,v) return rules.change.dir(rules.dir.src..v) end,
  484. tip = function(t,v) return rules.install_type[v] end,
  485. betik = function(t,v) return v end,
  486. dosya = function(t,v) return "set -e \n"..file_content(t.dir.."/"..v).."set +e \n" end,
  487. strip = function(t,v) if v == "yok" or v == "0" then rules.strip.status=false end; end,
  488. nostrip = function(t,v) rules.strip.blacklist=v end,
  489. servis = function(t,v) return ("cd /usr/aylinux/ayarlar/servisler\nmake DESTDIR=$PKG kur-%s\ncd -"):format(v) end,
  490. },
  491. strip={
  492. status = true,
  493. blacklist = '""',
  494. files = function(pkg,blacklist) return helper.scripts.strip:format(pkg,blacklist) end,
  495. },
  496. compress={
  497. man=function(pkg) return helper.scripts.compress_manpages:format(pkg) end,
  498. },
  499. delete={
  500. -- it will just files=
  501. files_un=function(path) return helper.scripts.delete_files:format(path) end,
  502. files=function(path,pattern,ignore) return
  503. "find "..path..' -name "'..pattern..'" ! -path "'..ignore..'" -type f -exec rm -rfv {} + &>/dev/null' end,
  504. dir=function(path) return "rm -rf "..path end,
  505. },
  506. copy={
  507. -- it will just files=
  508. scripts=function(talimatdir,pkg,meta) return helper.scripts.copy_scripts:format(talimatdir,pkg,meta) end,
  509. },
  510. generate={
  511. meta_info=function(pkg,meta,size,thash) return helper.scripts.meta_info:format(pkg,meta,size,thash) end,
  512. content_info=function(pkg) return helper.scripts.content_info:format(pkg) end,
  513. package=function(pkg,meta) return helper.scripts.generate_package:format(pkg,meta) end,
  514. },
  515. calculate={
  516. size=function(path) return "`du -sb "..path.."| awk '{print $1}'`" end,
  517. },
  518. find={
  519. libdepends=function(pkg,meta) return helper.scripts.libdepends:format(pkg,meta) end,
  520. -- if they call one by one so pass parameters
  521. pkglibs=function() return helper.scripts.pkglibs end,
  522. },
  523. change={
  524. dir = function(dir)
  525. local changedir="[ -d %s ] && cd %s"
  526. if dir then return changedir:format(dir,dir) end
  527. end,
  528. }
  529. }-- end of rules
  530. return rules;