Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 09, 2004, 19:48
Знаете ли лесен начин как да си създам tgz пакет? Трудното е да наслагам файловете в една директория (напр. /tmp/usr/ вместо /usr/). Не става с Примерен код | ./configure --prefix=/tmp/usr |
защото програмата после ще си търси файловете не където трябва...
Питам, защото искам да си направя Live-CD на малък диск, а не искам да ми заема място gcc и компания.
В мoента съм си направил Live-CD на голям диск: vslive.hit.bg
Титла: как се прави Slackware tgz пакет ?
Публикувано от: soulcollector в Feb 09, 2004, 19:59
Това е стандартния за Slackware начин, но за съжаление не винаги работи. $ configure --prefix=/usr $ make # make install prefix=/tmp/usr По-добре използвай checkinstall. $ configure --prefix=prefix $ make # checkinstall А специално за Live-CD на малък диск виж SLAXНа официалната страница има скрипт за създаване на Live-CD
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 09, 2004, 20:11
Цитат (soulcollector @ Фев. 09 2004,20:59) | Това е стандартния за Slackware начин, но за съжаление не винаги работи. $ configure --prefix=/usr $ make # make install prefix=/tmp/usr
По-добре използвай checkinstall. $ configure --prefix=prefix $ make # checkinstall
А специално за Live-CD на малък диск виж SLAX На официалната страница има скрипт за създаване на Live-CD |
Благодаря, ще пробвам с checkinstall Само, че не ми стана ясно защо не винаги работи стандартния начин Знам за SLAX, той ползва скриптовете Linux-Live. Използвам скриптовете на Slackware-Live, SLAX, Knoppix :-)
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 09, 2004, 20:17
Какво значи това: Цитат | NOTE TO SLACKWARE 8.0 USERS:
Slackware 8.0 ships with a statically linked "ln", so any symlinks your installation process creates won't be detected and won't be included in your package. The way to fix this is to substitute your static "ln" for a dynamically linked one, like this one from a Slackware 7.1 installation.
|
не ми е ясно най-вече "statically linked "ln"". Това, че /usr/bin/ln е символна връзка към /bin/ln ли е проблема? Май не е това....
Титла: как се прави Slackware tgz пакет ?
Публикувано от: mironcho в Feb 09, 2004, 20:21
Checkinstall е най-доброто. Иначе можеш да ползваш makepkg, обаче при компилацията не задавай:
configure --prefix=prefix
ами после след компилация напиши:
make prefix=/tmp/usr install
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 09, 2004, 21:12
Цитат (mironcho @ Фев. 09 2004,21:21) | Checkinstall е най-доброто. Иначе можеш да ползваш makepkg, обаче при компилацията не задавай:
configure --prefix=prefix
ами после след компилация напиши:
make prefix=/tmp/usr install |
Ако при инсталацията не задам
Примерен код | configure --prefix=/usr |
това ще е еквивалентно на
Примерен код | configure --prefix=/usr/local |
и след като инсталирам програмата, тя ще си търси файловете не на /usr/share/programdata (където искам), а на /usr/local/share/programdata (където няма да има нищо).
Нали така? Или аз нещо не съм разбрал?
Титла: как се прави Slackware tgz пакет ?
Публикувано от: soulcollector в Feb 10, 2004, 21:41
Правилно си разбрал prefix-a от ./configure трябва да е същия като на make install Защо make install prefix=some_prefix не става винаги незнам, но ми се е случвало да не работи. Виж linuxpackages HOWTOs - Package HOWTOPackage Tools(макар че може да си ги чел)
Титла: как се прави Slackware tgz пакет ?
Публикувано от: mironcho в Feb 10, 2004, 22:33
Цитат (soulcollector @ Фев. 10 2004,22:41) | Защо make install prefix=some_prefix не става винаги незнам, но ми се е случвало да не работи. |
За приложенията за които не действа, може да се ползва и:
make install DESTDIR=/some_path
срещал съм и ROOT да се използва вместо DESTDIR.
Титла: как се прави Slackware tgz пакет ?
Публикувано от: peio в Feb 10, 2004, 23:31
Всички пакети за Slackware 9.1 са компилирани с CFLAGS="-O2 -march=i486 -mcpu=i686" мисля, че когато се създават пакети за дистрибутиране е добра идея да се ползва същото , защото gcc оптимизира за платформата, на която се компилира и е много възможно това да създаде проблеми на други платформи.
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 12, 2004, 20:26
Цитат (peio @ Фев. 11 2004,00:31) | Всички пакети за Slackware 9.1 са компилирани с CFLAGS="-O2 -march=i486 -mcpu=i686" мисля, че когато се създават пакети за дистрибутиране е добра идея да се ползва същото , защото gcc оптимизира за платформата, на която се компилира и е много възможно това да създаде проблеми на други платформи. |
Това CFLAGS="-O2 -march=i486 -mcpu=i686" как да го задам? Може ли без да се редактира Makefile (с параметри на make или ./configure)?
гледах ./configure --help на MPlayer:
Цитат | Advanced options: --enable-mmx build with MMX support [autodetect] --enable-mmx2 build with MMX2 support (PIII, Athlon) [autodetect] --enable-3dnow build with 3DNow! support [autodetect] --enable-3dnowex build with extended 3DNow! support [autodetect] --enable-sse build with SSE support [autodetect] --enable-sse2 build with SSE2 support [autodetect] --enable-altivec build with Altivec support (PowerPC) [autodetect] --disable-fastmemcpy disable 3DNow!/SSE/MMX optimized memcpy() [enable] --enable-big-endian Force byte order to big endian [autodetect] --enable-debug[=1-3] compile debugging information into mplayer [disable] --enable-profile compile profiling information into mplayer [disable] --disable-sighandler disable sighandler for crashes [enable] --enable-i18n _experimental_ gnu gettext() support [autodetect] --enable-dynamic-plugins Enable support for dynamic a/v plugins [disable]
|
Ако задам --enable-mmx --enable-mmx2 --enable-3dnow --enable-3dnowex ще работи ли на всички процесори? Или трябва само едно да избера?
Бях пробвал да пусна MPlayer на стара машина (Pentium 166) и ми излезе съобщение за грешка, което не си спомням точно (май беше нещо за MMX).
Титла: как се прави Slackware tgz пакет ?
Публикувано от: peio в Feb 12, 2004, 21:08
Цитат | Това CFLAGS="-O2 -march=i486 -mcpu=i686" как да го задам? Може ли без да се редактира Makefile (с параметри на make или ./configure)?
|
да, точно така :
Примерен код | CFLAGS="-O2 -march=i486 -mcpu=i686" ./configure
|
всички други опции, които си изброил се отнасят за възможностите на процесора:
Примерен код | cat /proc/cpuinfo | grep ^flags
|
и затова е стойността им [autodetect] защото компилатора сам може да разбере дали той ги поддържа или не.
проблемът идва в случаи, като твоя, когато компилирания пакет трябва да се използва на друга система и тук се стига до въпроса за най-малкото общо кратно между всички платформи, които си избрал да поддържаш. примерно П. Волкердинг е решил да прави пакетите минимум за тези процесори, а човекът който прави пакетите за Dropline Gnome само за >= 686.
относно mplayer: тяхна политика е да разпростряняват сорс само и заради това, че като се компилира на дадената машина може да се изстиска максимума от нея. предполагам, че в кода се ползват множество инструкции специфични за отделните ахитектури и процесори. затова, ако би приел съвета ми е да направиш пакет, който съдържа сорса и инсталационен скрипт, който ще компилира и инсталира mplayer за системата.
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 12, 2004, 22:36
В същност очаквах CFLAGS="-O2 -march=i486 -mcpu=i686" да е след ./configure а не преди... Каква е разликата между -march и -mcpu? Аз ще правя този пакет за да го ползвам по-късно за направа на Live-CD и не е много уместно да се компилира всеки път, когато се стартира Live-CD-то. Не може ли по някакъв начин компилираната програма да е оптимизирана за всички възможни процесори? Или ще се наложи да инсталирам няколко пъти mplayer и да пиша скрипт, който проверява първо какъв е процесора и после пуска съответната версия 
Титла: как се прави Slackware tgz пакет ?
Публикувано от: peio в Feb 12, 2004, 23:15
Цитат | Каква е разликата между -march и -mcpu? |
виж man страницата на gcc , трябва да преписвам от там иначе
Цитат | Не може ли по някакъв начин компилираната програма да е оптимизирана за всички възможни процесори? |
Точно това е въпроса за най-малкото общо кратно на подържаните процесори. За Дебиан примерно този отговор е i386 , за Слак i486, за други i586 и i686. Въпрос на преценка на целева група от страна на този, който прави дистрибуцията.
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Feb 13, 2004, 14:51
Като написах Примерен код | checkinstall make install
|
ми се получи това в директорията install на пакета:
Примерен код | # # doinst.sh, auto-generated by checkinstall-1.5.3 #
echo cat /install/description
sed '/PACKAGE LOCATION/r /install/description' < "/var/log/packages/MPlayer-1.0pre3-i386-1" > description.tmp mv description.tmp "/var/log/packages/MPlayer-1.0pre3-i386-1" rm /install/description
( cd .; rm -rf 38 ) ( cd .; ln -sf -> 38 ) ( cd .; rm -rf 38 ) ( cd .; ln -sf -> 38 ) ( cd .; rm -rf 38 ) ( cd .; ln -sf -> 38 )
|
Когато пробвах така:
Примерен код | make install DESTDIR=/pack cd /pack/ makepak /mplayer.tgz
|
се получи пак нещо подобно:
Примерен код | ( cd .; rm -rf 23 ) ( cd .; ln -sf -> 23 ) ( cd .; rm -rf 23 ) ( cd .; ln -sf -> 23 ) ( cd .; rm -rf 23 ) ( cd .; ln -sf -> 23 )
|
В това не виждам никакъв смисъл... прави ми някакъв линк /- и празен файл /23
Титла: как се прави Slackware tgz пакет ?
Публикувано от: soulcollector в Feb 13, 2004, 23:16
1. make install след checkinstall излишно. Само ако програмата се инсалира с друга команда е необходимо да използваш # checkinstall command
2. По - добре използвай новата система на Slackware за описание на пакетите, т.е. # checkinstall --newslack
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в Jan 24, 2006, 00:57
Цитат (mironcho @ Фев. 10 2004,23:33) |
За приложенията за които не действа, може да се ползва и:
make install DESTDIR=/some_path
срещал съм и ROOT да се използва вместо DESTDIR. |
До момента съм срещал следните варианти на задаване на директория, където да се запишат данните:
Примерен код |
make install DESTDIR=/tmp/package make install prefix=/tmp/pacakge/usr make install PREFIX=/tmp/pacakge/usr make install ROOT=/tmp/pacakge make install install_root=/tmp/package make install INSTALL_ROOT=/tmp/package make install DSTROOT=/tmp/package make install buildroot=/tmp/package
|
А когато нито една от тези команди не работи... използвам checkinstall (после си правя пакета наново (на база съдържанието на пакета, създаден от checkinstall), но поне мога да почистя каквото се е получило при инсталацията).
Изпозвам следния примерен SlackBuild за създаване на пакети:
Примерен код | #!/bin/sh
# Внимание! Ползвайте този скрипт само, ако знаете какво правите.
# *********************************************************************** # Да не се редактират: TMP="/tmp/packagesbuild/" CWD=`pwd`
# *********************************************************************** # Променливи за редактиране:
# Името на пакета: NAME=knemo # Версия на архива с изходния код: VERSION=0.3.1 VERSION_PKG=$VERSION # Версия на кръпката, която ще се приложи върху изходния код: VERSION_patch=
# Името на архива с изходния код: NAME_src=${NAME} #NAME_src=${NAME}-src
# Името на поддиректорията, която се получава при разархивиране: NAME_extr_subdir=$NAME_src #NAME_extr_subdir=${NAME}-src #NAME_extr_subdir=някакво_съвсем_различно_име_на_директория
#Разширението на архива с изходния код: EXT="tar.bz2" #EXT="tar.gz"
ARCH=i486 BUILD=vs0
# Къде ще се инсталира: #vslive_PREFIX="/usr" # програмата не е от КДЕ vslive_PREFIX=`/opt/kde/bin/kde-config --prefix` # програмата е от КДЕ
# Пътят на директорията, която се получава при разархивиране: TMP_extr_dir=$TMP/$NAME_extr_subdir-$VERSION #TMP_extr_dir=$TMP/$NAME_extr_subdir-$VERSION.orig
# Пътят на файла с изходния код (в някои случаи името съдържа .orig след версията) FILE_src=$CWD/${NAME_src}-${VERSION}.${EXT} #FILE_src=$CWD/${NAME_src}-${VERSION}.orig.${EXT} #FILE_src=$CWD/${NAME_src}_${VERSION}.orig.${EXT}
# Временната директория, където ще се инсталира програмата: PKG=$TMP/package-$NAME
if [ "$VERSION_patch" = "" ]; then PKG_filename=$NAME-$VERSION_PKG-$ARCH-$BUILD.tgz docs_dir=$PKG/usr/doc/$NAME-$VERSION else #PKG_filename=$NAME-${VERSION}.${VERSION_patch}-$ARCH-$BUILD.tgz #docs_dir=$PKG/usr/doc/$NAME-$VERSION.${VERSION_patch} PKG_filename=$NAME-${VERSION_PKG}.${VERSION_patch}-$ARCH-$BUILD.tgz docs_dir=$PKG/usr/doc/$NAME-$VERSION_PKG.${VERSION_patch} fi
# *********************************************************************** # Подпрограми:
print_msg(){ echo "|*****************************************************************" echo "| $1" echo "|*****************************************************************" }
# *********************************************************************** if [ ! -d $TMP ]; then mkdir -p $TMP fi if [ ! -d $PKG ]; then mkdir -p $PKG fi
print_msg "Започна създаването на пакета $NAME-$VERSION-$ARCH-$BUILD.tgz"
cd $TMP
if [ ! "$?" = "0" ]; then print_msg "Грешка при влизане в директорията $TMP." exit 1 fi
#tar xzvf $CWD/$NAME-$VERSION.tar.gz #tar xzvf $CWD/$NAME-src-$VERSION.tar.gz #tar xjvf $CWD/$NAME-$VERSION.tar.bz2
print_msg "Разархивиране..."
if [ "$EXT" = "tar.bz2" ]; then tar xjvf $FILE_src if [ ! "$?" = "0" ]; then print_msg "Грешка при разархивиране на архива $FILE_src." exit 1 fi elif [ "$EXT" = "tar.gz" ]; then tar xzvf $FILE_src if [ ! "$?" = "0" ]; then print_msg "Грешка при разархивиране на архива $FILE_src." exit 1 fi else print_msg "Грешка: Неизвестен архив." exit 1 fi
cd $TMP_extr_dir
if [ "$VERSION_patch" != "" ]; then print_msg "Закърпване..." gzip -cd $CWD/${NAME_src}_${VERSION}-${VERSION_patch}.diff.gz | patch -p1 if [ ! "$?" = "0" ]; then print_msg "Грешка при прилагане на кръпката." exit 1 fi fi
print_msg "Изпълнение на ./configure..."
CFLAGS="-O2 -march=i486 -mcpu=i686" ./configure --prefix="$vslive_PREFIX"
#CFLAGS="-O2 -march=i486 -mcpu=i686" ./configure --prefix=/usr \ # --localstatedir=/var/lib \ # $ARCH-slackware-linux
if [ ! "$?" = "0" ]; then print_msg "Грешка." exit 1 fi
print_msg "Изпълнение на make..."
make
if [ ! "$?" = "0" ]; then print_msg "Грешка." exit 1 fi
print_msg "Изпълнение на make install"
# Внимание: ЗА ВСЕКИ ПАКЕТ ТРЯБВА ДА СЕ ПРОВЕРЯВА КОЙ ОТ ДОЛУПОСОЧЕНИТЕ # МЕТОДИ РАБОТИ!!! Обикновено първият метод дава резултат, когато # вторият не действа.
#make install prefix=$PKG/usr make install DESTDIR=$PKG #make install PREFIX=$PKG/usr #make install ROOT=$PKG #make install install_root=$PKG #make install INSTALL_ROOT=$PKG #make install DSTROOT=$PKG #make install buildroot=$PKG
# Внимание: Понякога инсталирането във временна директория чрез `make install` # е невъзможно! В такъв случай може да се ползва програмата # checkinstall. Тази програма следи кои файлове се инсталират от # `make install` и прави пакет от тях.
# checkinstall
if [ ! "$?" = "0" ]; then print_msg "Грешка." exit 1 fi
print_msg "Допълнителни неща..."
# Ако се инсталира ненужно голяма документация понякога е добра идея да се # изтрият някои неща: #rm -rf $PKG/usr/share/doc/ #rmdir $PKG/usr/share
# включване на кратка документация (лиценза, README-то и др.) mkdir -p $docs_dir cp Cop* ANNOUNCE* HACKING* *MAINTAINERS* DEV* FAQ* THANKS* ABOUT-NLS* AUTHORS* VERS* UPGRADE* \ KNOWNBUGS* PERMISSIONS* \ BUGS* USING* ChangeLog* CHANGELOG* COPYING* INSTALL* README* TODO* LICENSE* CREDIT* \ $docs_dir
mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc
( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null )
#gzip `find $PKG/usr/man/ -type f 2>/dev/null | grep -v ".gz$"` # Горния ред, но написан по-красиво: find $PKG/usr/man/ -type f ! -name '*.gz' -exec gzip {} \;
mv $PKG/usr/info/dir $PKG/usr/info/dir-$NAME
cd $PKG
# Примерно включване на икона в /usr/share/pixmaps: #mkdir -p $PKG/usr/share/pixmaps #cp $CWD/*.png $PKG/usr/share/pixmaps/
# Примерно включване на елемент от менюто на КДЕ: #mkdir -p $PKG/opt/kde/share/applnk/Multimedia/ #cp $CWD/*.desktop $PKG/opt/kde/share/applnk/Multimedia/
# Примерно включване на елемент от меню: #mkdir -p $PKG/usr/share/applications #cp $CWD/*.desktop $PKG/usr/share/applications/
# Примерно копиране на превод (КДЕ): #mkdir -p $PKG/opt/kde/share/locale/bg/LC_MESSAGES/ #cp $CWD/*.mo $PKG/opt/kde/share/locale/bg/LC_MESSAGES/
# Примерно копиране на превод (QT): #mkdir -p $PKG/usr/share/$NAME/locale/ #cp $CWD/*.ts $PKG/usr/share/$NAME/locale/
# Примерно копиране на превод: #mkdir -p $PKG/usr/share/locale/bg/LC_MESSAGES/ #cp $CWD/*.mo $PKG/usr/share/locale/bg/LC_MESSAGES/
mkdir -p $PKG/install cp $CWD/doinst.sh $PKG/install chmod 644 $PKG/install/doinst.sh
chown -R root.root $PKG/usr chown -R root.root $PKG/opt #chown -R root.root $PKG/usr/man #chown -R root.root $PKG/usr/share
chown root.bin $PKG/bin/* chown root.bin $PKG/sbin/* chown root.bin $PKG/usr/bin/* chown root.bin $PKG/usr/sbin/*
chmod 755 $PKG/bin chmod 755 $PKG/sbin chmod 755 $PKG/lib
chmod -R 644 $docs_dir/*
#chmod 755 `find $PKG/usr -type d 2>/dev/null` # Горния ред, но написан по-красиво: find $PKG/usr -type d -exec chmod 755 {} \;
#chown -R root.root $docs_dir #chmod 755 `find $PKG/usr/doc/ -type d 2>/dev/null`
makepkg -l y -c n $TMP/$PKG_filename
if [ ! "$?" = "0" ]; then print_msg "Грешка при изпълнение на програмата makepkg." exit 1 fi
if [ "$1" = "--cleanup" ]; then rm -rf $TMP_extr_dir rm -rf $PKG fi
|
Титла: как се прави Slackware tgz пакет ?
Публикувано от: KoIoSoS в Jan 24, 2006, 20:38
Нещо, което в някои отношения е по добро Примерен код | #!/bin/sh
#ТОЗИ СКРИПТ НЯМА ДА РАБОТИ С СОРС КАТО, pgcalc2-2.1-3.tar.gz или pgcalc2-2.1-3.tar.bz2 10% # #РЕШЕНИЕ #tar -xjvpf pgcalc2-2.1-3.tar.bz2 #mv pgcalc2-2.1-3 pgcalc2-2.1.3 #tar -cjvpf pgcalc2-2.1.3.tar.bz2 pgcalc2-2.1.3 #rm -rf pgcalc2-2.1-3.tar.bz2 #################################################################### #ТОЗИ СКРИПТ ЩЕ РАБОТИ С СОРС КАТО, pgcalc2-2.1.3.tar.gz или pgcalc2-2.1.3.tar.bz2 90% #################################################################### #проверка за INSTALL CWD=`pwd` BUILD=1 if [ -d $CWD/INSTALL ] then cd $CWD/INSTALL if [ -e *.tgz ] then PREDHODNA_VERSIA=`ls *.tgz | cut -f 5 -d "-" | cut -f 1 -d"."`; let BUILD=$PREDHODNA_VERSIA+1; else BUILD=1 fi fi cd $CWD #край на проверка за INSTALL #################################################################### #проверка за COMPILE_FLAGS if [ -e /COMPILE_FLAGS ] then echo "Пакетът ще се компилира със следните флагове за GCC";cat /COMPILE_FLAGS; ARCH=`cat /COMPILE_FLAGS | cut -f3 -d "=" | cut -f 1 -d ":"` #################################################################### #проверка се налага заради тирето #################################################################### if [ "$ARCH" = "athlon-xp" ] then ARCH="athlonxp" fi #################################################################### #край на проверка заради тирето #################################################################### else echo "Нямаме флагове за оптимизация на компилацията!!!Вижте редове 95 96 97 на този скрипт. "; echo "Да продължим ли? y = да"; read PRODULVENIE; if [ "$PRODULVENIE" = "y" ] then echo "Добре "; else echo "Не е Добре! Не натиснахте y ."; exit; fi ARCH="neoptimiziran" fi #край на проверка за COMPILE_FLAGS #################################################################### #проверка за DISTCC if [ -e /usr/bin/distcc ] then CC_COMPILATOR="distcc";CXX_COMPILATOR="distcc"; NUMARABOTI=6 else CC_COMPILATOR="gcc";CXX_COMPILATOR="g++"; NUMARABOTI=1 fi echo $CC_COMPILATOR $CXX_COMPILATOR
#край на проверка за DISTCC #################################################################### #мързеливо откриваме sorce файла и как да се разкомпресира
SOURCE_FILE=`ls *tar*` case $SOURCE_FILE in *[2]) tarcom="xjvf";razsh="bz2";PROGRAM_VERSION=`echo $SOURCE_FILE | sed 's/.tar.bz2//g' ` ;; *[z]) tarcom="xzvf";razsh="gz";PROGRAM_VERSION=`echo $SOURCE_FILE | sed 's/.tar.gz//g' ` ;; esac #карй на мързела
BROI_ZNACI_IMETO_PYRVA_CIFRA_NA_VERSIQTA=`echo $SOURCE_FILE | cut -f1 -d"." | wc -m` #################################################################### #версията на пакета $VERSION и $PROGRAM PROGRAM=`echo $SOURCE_FILE | cut -c 1-$(($BROI_ZNACI_IMETO_PYRVA_CIFRA_NA_VERSIQTA-3))` VERSION=`echo $PROGRAM_VERSION | sed 's/'$PROGRAM'//g' |cut -f2 -d "-"` #карй на версията на пакета $VERSION и $PROGRAM ####################################################################
TMP=$CWD/tmp PKG=$TMP/package-$PROGRAM #директория в която получаваме пакета INSTALL=$CWD/INSTALL rm -rf $TMP $PKG $INSTALL mkdir -p $TMP $PKG $INSTALL #################################################################### #найсе солушън да имаме CONFIGURE_OPTIONS за всеки случай if [ ! -e $CWD/CONFIGURE_OPTIONS ] then tar $tarcom $CWD/$PROGRAM-$VERSION.tar.$razsh cd $PROGRAM-$VERSION ./configure --help >> ../CONFIGURE_OPTIONS cd $CWD rm -rf $CWD/$PROGRAM-$VERSION fi #край на найсе солушън да имаме CONFIGURE_OPTIONS за всеки случай #################################################################### #в / създаваме файл COMPILE_FLAGS със съдържание. # -O2 -march=? -mtune=?: za GCC-3.4. или -O2 -march=? -mcpu=?: za GCC-3.3.* #?=i486 ,i386 ,i286,i186,i86,85.84..................;)
SLKCFLAGS=`cat /COMPILE_FLAGS | cut -f1 -d ":"`
cd $TMP tar $tarcom $CWD/$PROGRAM-$VERSION.tar.$razsh cd $PROGRAM-$VERSION chown -R root.root .
CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/man \ --infodir=/usr/info \ --localstatedir=/var/lib
make CC=$CC_COMPILATOR CXX=$CXX_COMPILATOR -j$NUMARABOTI #make install PREFIX=$PKG #make install ROOT=$PKG #make install INSTALL_ROOT=$PKG #make install DSTROOT=$PKG make install DESTDIR=$PKG
chown -R root.bin $PKG/usr/bin gzip -9 $PKG/usr/man/man?/*.? ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) cd $PKG makepkg -l y -c n $INSTALL/$PROGRAM-$VERSION-$ARCH-$BUILD.tgz #почистваме rm -rf $TMP
|

Титла: как се прави Slackware tgz пакет ?
Публикувано от: FuckMyFucker в Jan 25, 2006, 14:09
А как мога да сложа инфо на пакета?
Титла: как се прави Slackware tgz пакет ?
Публикувано от: KoIoSoS в Jan 25, 2006, 20:36
Така е по-добре.С инфо ,ако съм разбрал. Примерен код | #!/bin/sh
#ТОЗИ СКРИПТ НЯМА ДА РАБОТИ С СОРС КАТО, pgcalc2-2.1-3.tar.gz или pgcalc2-2.1-3.tar.bz2 10% # #РЕШЕНИЕ #tar -xjvpf pgcalc2-2.1-3.tar.bz2 #mv pgcalc2-2.1-3 pgcalc2-2.1.3 #tar -cjvpf pgcalc2-2.1.3.tar.bz2 pgcalc2-2.1.3 #rm -rf pgcalc2-2.1-3.tar.bz2 #################################################################### #ТОЗИ СКРИПТ ЩЕ РАБОТИ С СОРС КАТО, pgcalc2-2.1.3.tar.gz или pgcalc2-2.1.3.tar.bz2 90% ####################################################################
#проверка за INSTALL CWD=`pwd` BUILD=1 if [ -d $CWD/INSTALL ] then cd $CWD/INSTALL if [ -e *.tgz ] then PREDHODNA_VERSIA=`ls *.tgz | cut -f 5 -d "-" | cut -f 1 -d"."`; let BUILD=$PREDHODNA_VERSIA+1; else BUILD=1 fi fi cd $CWD #край на проверка за INSTALL #################################################################### #проверка за COMPILE_FLAGS if [ -e /COMPILE_FLAGS ] then echo "Пакетът ще се компилира със следните флагове за GCC";cat /COMPILE_FLAGS; ARCH=`cat /COMPILE_FLAGS | cut -f3 -d "=" | cut -f 1 -d ":"` #################################################################### #проверка се налага заради тирето #################################################################### if [ "$ARCH" = "athlon-xp" ] then ARCH="athlonxp" fi #################################################################### #край на проверка заради тирето #################################################################### else echo "Нямаме флагове за оптимизация на компилацията!!!Вижте редове 139 140 141 на този скрипт. "; echo "Да продължим ли? y = да"; read PRODULVENIE; if [ "$PRODULVENIE" = "y" ] then echo "Добре "; else echo "Не е Добре! Не натиснахте y ."; exit; fi ARCH="neoptimiziran" fi #край на проверка за COMPILE_FLAGS #################################################################### #проверка за DISTCC if [ -e /usr/bin/distcc ] then CC_COMPILATOR="distcc";CXX_COMPILATOR="distcc"; NUMARABOTI=6 else CC_COMPILATOR="gcc";CXX_COMPILATOR="g++"; NUMARABOTI=1 fi echo $CC_COMPILATOR $CXX_COMPILATOR
#край на проверка за DISTCC #################################################################### #мързеливо откриваме sorce файла и как да се разкомпресира
SOURCE_FILE=`ls *tar*` case $SOURCE_FILE in *[2]) tarcom="xjvf";razsh="bz2";PROGRAM_VERSION=`echo $SOURCE_FILE | sed 's/.tar.bz2//g' ` ;; *[z]) tarcom="xzvf";razsh="gz";PROGRAM_VERSION=`echo $SOURCE_FILE | sed 's/.tar.gz//g' ` ;; esac #карй на мързела #################################################################### BROI_ZNACI_IMETO_PYRVA_CIFRA_NA_VERSIQTA=`echo $SOURCE_FILE | cut -f1 -d"." | wc -m` KOLKO_SA_CIFRITE_SLED=`echo $SOURCE_FILE | cut -f1 -d"."|cut -f2 -d"-" | wc -m` #################################################################### #версията на пакета $VERSION и $PROGRAM PROGRAM=`echo $SOURCE_FILE | cut -c 1-$(($BROI_ZNACI_IMETO_PYRVA_CIFRA_NA_VERSIQTA-$KOLKO_SA_CIFRITE_SLED-1))` VERSION=`echo $PROGRAM_VERSION | sed 's/'$PROGRAM'//g' |cut -f2 -d "-"` #карй на версията на пакета $VERSION и $PROGRAM ####################################################################
TMP=$CWD/tmp PKG=$TMP/package-$PROGRAM #директория в която получаваме пакета INSTALL=$CWD/INSTALL rm -rf $TMP $PKG $INSTALL slack-desc mkdir -p $TMP $PKG $INSTALL #################################################################### #Добавяне на инфо #mumboto е от уважение! #файл pkginfo в curent dir.ОПИСАНИЕ на ПАКЕТА.Четем info до 11 ред. #################################################################### if [ -e $CWD/pkginfo ] then echo "# HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' on # the right side marks the last column you can put a character in. You must make # exactly 11 lines for the formatting to be correct. It's also customary to # leave one space after the ':'. |-----handy-ruler------------------------------------------------------|" >$CWD/slack-desc
i=1; BROI_LINE_pkginfo=`wc -l $CWD/pkginfo | cut -f1 -d" "`; while [ $i -le 11 ] do LINIQ=`head -n $i $CWD/pkginfo| tail -n 1`; if [ $i -le $BROI_LINE_pkginfo ] then echo "$PROGRAM: " $LINIQ >>$CWD/slack-desc else echo "$PROGRAM: " >>$CWD/slack-desc fi i=$(( $i+1)); done; mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc else echo "NO PACKAGE DESCRIPTION!!!Вижте ред 100 на този скрипт." echo "Да продължим ли? y = да"; read PRODULVENIE; if [ "$PRODULVENIE" = "y" ] then echo "Добре "; else echo " РЕД 118"; exit; fi fi #################################################################### #край на Добавяне на инфо #################################################################### #в / създаваме файл COMPILE_FLAGS със съдържание. # -O2 -march=? -mtune=?: za GCC-3.4. или -O2 -march=? -mcpu=?: za GCC-3.3.* #?=i486 ,i386 ,i286,i186,i86,85.84..................;)
SLKCFLAGS=`cat /COMPILE_FLAGS | cut -f1 -d ":"`
cd $TMP tar $tarcom $CWD/$PROGRAM-$VERSION.tar.$razsh cd $PROGRAM-$VERSION ##################################### #найсе солушън да имаме CONFIGURE_OPTIONS за всеки случай ##################################### if [ ! -e $CWD/CONFIGURE_OPTIONS ] then ./configure --help >> ../CONFIGURE_OPTIONS fi ##################################### #край на найсе солушън да имаме CONFIGURE_OPTIONS за всеки случай ##################################### chown -R root.root .
CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/man \ --infodir=/usr/info \ --localstatedir=/var/lib
make CC=$CC_COMPILATOR CXX=$CXX_COMPILATOR -j$NUMARABOTI #make install PREFIX=$PKG #make install ROOT=$PKG #make install INSTALL_ROOT=$PKG #make install DSTROOT=$PKG make install DESTDIR=$PKG
chown -R root.bin $PKG/usr/bin gzip -9 $PKG/usr/man/man?/*.? ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) cd $PKG makepkg -l y -c n $INSTALL/$PROGRAM-$VERSION-$ARCH-$BUILD.tgz #почистваме rm -rf $TMP
|

Титла: как се прави Slackware tgz пакет ?
Публикувано от: KoIoSoS в Jan 26, 2006, 11:46
грешка в скрипта Публикуван на Ян. 25 2006,21:36 ред 152 подмени с Примерен код | ./configure --help >> ../../CONFIGURE_OPTIONS
|

Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в May 07, 2006, 15:34
Новата версия на GCC започна да се оплаква: Примерен код | `-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead
|
Използвам CFLAGS="-O2 -march=i486 -mcpu=i686" (както е в Slackware).
Титла: как се прави Slackware tgz пакет ?
Публикувано от: karaman в May 07, 2006, 16:17
-mtune == -mcpu
Титла: как се прави Slackware tgz пакет ?
Публикувано от: vstoykov в May 09, 2006, 00:09
Намерих тази информация в man:gcc (загрях лентата за превъртане докато намеря тази информация...): Цитат | -mtune=cpu-type Tune to cpu-type everything applicable about the generated code, except for the ABI and the set of available instructions. The choices for cpu-type are: i386 Original Intel's i386 CPU. i486 Intel's i486 CPU. (No scheduling is implemented for this chip.) i586, pentium Intel Pentium CPU with no MMX support. pentium-mmx Intel PentiumMMX CPU based on Pentium core with MMX instruction set support. i686, pentiumpro Intel PentiumPro CPU. pentium2 Intel Pentium2 CPU based on PentiumPro core with MMX instruction set support. pentium3, pentium3m Intel Pentium3 CPU based on PentiumPro core with MMX and SSE instruction set support. pentium-m Low power version of Intel Pentium3 CPU with MMX, SSE and SSE2 instruction set support. Used by Centrino notebooks. pentium4, pentium4m Intel Pentium4 CPU with MMX, SSE and SSE2 instruction set support. prescott Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2 and SSE3 instruction set support. nocona Improved version of Intel Pentium4 CPU with 64-bit extensions, MMX, SSE, SSE2 and SSE3 instruction set support. k6 AMD K6 CPU with MMX instruction set support. k6-2, k6-3 Improved versions of AMD K6 CPU with MMX and 3dNOW! instruction set support. athlon, athlon-tbird AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE prefetch instructions support. athlon-4, athlon-xp, athlon-mp Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and full SSE instruction set support. k8, opteron, athlon64, athlon-fx AMD K8 core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.) winchip-c6 IDT Winchip C6 CPU, dealt in same way as i486 with additional MMX instruction set support. winchip2 IDT Winchip2 CPU, dealt in same way as i486 with additional MMX and 3dNOW! instruction set support. c3 Via C3 CPU with MMX and 3dNOW! instruction set support. (No scheduling is implemented for this chip.) c3-2 Via C3-2 CPU with MMX and SSE instruction set support. (No scheduling is implemented for this chip.)
While picking a specific cpu-type will schedule things appropriately for that particular chip, the compiler will not generate any code that does not run on the i386 without the -march=cpu-type option being used. -march=cpu-type Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mtune. Moreover, specifying -march=cpu-type implies -mtune=cpu-type. -mcpu=cpu-type A deprecated synonym for -mtune.
|
|