երէկ տառապել եմ դեբիանի փաքաջինգի հետ։ եւ ջենքինս բիլդերի։
ուզում էի photolightmeter֊ը աւելացնել maemo-leste֊ի ռեպօներ։ ահաւոր երկար տեւեց։
ամենաբարդ խնդիրն էր, որի վրայ լռուել էի՝ բիլդ լինում էր ինձ մօտ, բիլդ լինում էր իրենց վմ֊ի մէջ, բայց չէր լինում նման վմ֊ի մէջ ջենքինսում։ որն արդէն երեք պլատֆորմի համար շինում ա՝ amd64, armhf, arm64։ ծրագիրս գրուած ա պասկալով, օգտագործում էի lazbuild այն կազմարկելու համար։
ուրեմն, սէնց փախած սխալ էր տալիս՝
Fatal: (10022) Can’t find unit FastHTMLParser used by Clipbrd
ուրեմն էս lazbuild֊ը չգիտեմ ինչի չէր հաւանում եղած քոմփայլ արած .o ու .ppu նիշքերը որ գալիս են իր հետ՝ LCL գրադարանի մաս են, կամ նրանք, որ ստանդարտ ֆրիպասկալի մաս են, ու ուզում էր կրկին կազմարկել ելատեքստից։
իսկ դէ փաթեր չէր գտնում։
տեղակայեցի fpc-source-3.0.4 ու դրա մէջ գտայ այդ fasthtmlparser.pas֊ը։ արդէն շինում էի ոչ թէ lazbuild֊ով այլ հէնց fpc֊ն կանչելով ու երկար երկար փաթեր տալով ամէն մի գրադարանի։
տուեցի՝ սա՝ -Fu/usr/share/fpcsrc/3.0.4/packages/chm/src/ — ոնց որ պէտք ա հէնց առանց բացատ աւելացնել -Fu արգումենտին
էլի չի գտնում։ վերջը դրա վերեւի դիրեկտորիայում գտայ ինչ֊որ fpmake.pp
root@devuan:/usr/lib/x86_64-linux-gnu/fpc/3.0.4# ls /usr/share/fpcsrc/3.0.4/packages/chm/
Makefile.fpc fpmake.pp src
root@devuan:/usr/lib/x86_64-linux-gnu/fpc/3.0.4#
ու յիշեցի որ ինչ֊որ fpmake կայ, որը փաքաջներ ա սարքում, ու այդ ուղին տուեցի նաեւ քոմփայլերին։ եւ այո, ստացուեց։ կազմարկուեց։
ապա միակ խնդիրը որ մնացել էր՝ ռեսուրս կոմպայլերը՝ fpres֊ը չէր գտնում։ որովհետեւ ես fpc֊ն կանչել եմ լրիւ ուղղով՝ /usr/bin/fpc, իսկ այ որտեղ ա fpres֊ը չէր գտնում։ չգիտեմ, գուցէ makefile֊իս մէջ պէտք ա ինչ֊որ աւելի յստակ PATH֊ը export անէի, բայց fpc֊ն յատուկ արգումենտ ունէր իր ուզած բինարնիկները գտնելու համար՝ -FD, այսպիսով աւելացրի՝ -FD/usr/bin ու յէյյյ, եղաւ քոմփայլը։
էդ ամենակարեւորն էր։
յետոյ պարզուեց որ armhf մեքենայի վրայ մէկ ա կազմարկումը չի անցնում։ ու չգիտես ինչի էնտեղ fpc֊ն աւելի շատ բան ա ուզում կազմարկի ու չի գտնում։ երեւի դեբիանի armhf սբորկան մի քիչ այլ ձեւ էր, չնայած նոյն վերսիաներն էին ծրագրերի, ու նա ուզում էր աւելի շատ լիբ ինքը շինել, քան արդէն ստացել էր։ ու օկ, էդ արդէն բարդ չէր՝ պոչը բռնել էի։ ինչը ասում էր որ չի գտնում, գտնում էի lcl֊ի կամ fpc֊ի ելատեքստերի մէջ՝ տալիս էի իրան։ armhf բիլդն էլ եղաւ։
էդ պահերին մտածել էի որ arm64 բիլդը իզուր տապալուում ա ու պէտք ա ինչ֊որ ձեւ նշել որ չշինի դրա համար, զի fpc-3.0.2֊ը չունի դեռ arm64֊ի սափորտ։ fpc-3.2֊ն ունի, բայց էդ debian beowulf֊ի մէջ այն չկայ։ ու մտածել էի՝ դէ մինչեւ դեբիանը չթարմանայ ու մաեմոն չօգտագործի նոր դեբիան՝ դէ չի լինի։
բայց ինչ֊որ ձեւ սխալ էի սահմանափակում որ պլատֆորմների համար շինի, ու վերջը թողեցի՝ any, ու չեմ հասկանում ոնց՝ arm64֊ի համար էլ բիլդը լրիւ նորմալ անցնում ա։
հա, էս բիլդերի հետ մի խնդիր էլ կար։ fpc֊ի համար գրադարանների ուղիներում կայ x86_64-linux ու կայ arm-linux որը armhf֊ի վրայ ա։ ու ես makefile֊ի մէջ ջոկում էի որն ա ճարտարապետութիւնը՝
ARCH = $(shell arch)
arch քոմանդլայն հրամանը կանչելով։ ու արդէն այդ ստացած $ARCH֊ը տեղադրում էի fpc֊ի ուղիների մէջ։ վերջում ստացած ուղին սէնց սարսափելի տեսք ունէր՝
PARAMS = -MObjFPC -Scgi -Cg -O1 -g -Xg -XX -l -vewnhibq -FD/usr/bin -Fi/usr/lib/lazarus/2.0.0/lcl/nonwin32 -Fu/usr/lib/lazarus/2.0.0/lcl/nonwin32 -Fi/usr/lib/lazarus/2.0.0/lcl/forms -Fu/usr/lib/lazarus/2.0.0/lcl/forms -Fi/usr/lib/lazarus/2.0.0/lcl/interfaces/gtk2 -Fu/usr/lib/lazarus/2.0.0/lcl/interfaces/gtk2 -Fi/usr/lib/lazarus/2.0.0/lcl/widgetset -Fu/usr/lib/lazarus/2.0.0/lcl/widgetset -Fi/usr/lib/lazarus/2.0.0/lcl -Fu/usr/lib/lazarus/2.0.0/lcl -Fi/usr/lib/lazarus/2.0.0 -Fu/usr/lib/lazarus/2.0.0 -Fi/usr/lib/lazarus/2.0.0/lcl/include -Fu/usr/lib/lazarus/2.0.0/lcl/include -Fi/usr/share/fpcsrc/3.0.4/packages/chm -Fu/usr/share/fpcsrc/3.0.4/packages/chm -Fi/usr/share/fpcsrc/3.0.4/packages/chm/src -Fu/usr/share/fpcsrc/3.0.4/packages/chm/src -Filib/$(ARCH)-linux -Fu/usr/lib/lazarus/2.0.0/lcl/units/$(ARCH)-linux/gtk2 -Fu/usr/lib/lazarus/2.0.0/lcl/units/$(ARCH)-linux -Fu/usr/lib/lazarus/2.0.0/components/lazutils/lib/$(ARCH)-linux -Fu/usr/lib/lazarus/2.0.0/packager/units/$(ARCH)-linux -Fu. -Fulib/x86_64-linux/ -FE. -o./project1 -dLCL -dLCLgtk
սա արդէն armhf֊ի աւելացումներով։ x86_64֊ի վրայ դեբիանի կազմարկիչն աւելի քիչ բան էր ուզում գտնել։
հա, ու arch հրամանը որ ինթելի վրայ տալիս էր՝ x86_64
, armhf համակարգում վերադարձնում էր՝ armv71
։
ապա ստիպուած եղայ կեղտոտ հաք անել՝
ARCH = $(shell arch)
ifeq ($(ARCH),armv7l)
ARCH = arm
endif
օկ, սէնց կազմարկուեց։ ու օհ անակնկալ, նաեւ կազմարկուեց arm64 համակարգում։ գտաւ որ կարծես aarch64 ա ճարտարապետութիւնը ու fpc֊ի ուղիներում էլ ամէնը գտաւ ու կազմարկեց։
էսպէս։
բայց կարեւոր ասածս այլ ա։ սէնց բաներ չեն պահանջում լինել յանճար։ ու լիքը բան չի պահանջում։ ես սրա վրայ նստած էի մօտ 12 ժամ։ ու ամէն անգամ, ամէն պահի վարկած ունէի՝ թէ էլ ո՞նց փորձել։ օրինակ նախորդ գրառման խնդրի հետ՝ թեմայի մէջ չէի ու վարկած չունէի։ իսկ սա՝ ամէն անգամ մի նոր բան էի փորձում։ ու մենք ունենք գործ տարբեր մարդկանց սարքած տարբեր ծրագրակազմերի հետ, տուեալ դէպքում՝ fpc, lazarus, jenkins, debian, ու պէտք ա մօտաւորապէս պատկերացնելով որն ա սխալ գնում բզբզալ մինչեւ ստացուի։ սա հէնց էն not science, trying ձեւն ա։ ու պարզապէս պէտք ա փորձել ու փորձելը երկար ա։ ու խելքը կապ չունի շատ։ համբերատարութիւն ա պէտք։
#տեքնոլոգիաներ #մաեմո #մաեմօ #համբերատարութիւն #փորձ #դեբիան #լինուքս #կազմարկում #ծրագրակազմ