Титла: как се прави 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. 
 
  |  
 
 
 
 
  
					
  
					
				 |