LINUX.ORG.RU

Сообщения grem

 

Удаление -march=native из CFLAGS

Для унификации сборки пакетов и обновлений хочется удалить на физическом компе из CFLAGS параметр -march=native. Насколько безопасно для работоспособности системы будет смешивать пакеты со старыми настройками и новыми? Чую, что не должно поломаться, но всё равно неуютно.:)

В данный момент у меня в make.conf такие настройки:

CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"

В виртуалке (переносимая на разные компы) для тестов такие настройки:

CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"

Окружение и список пакетов в них примерно одинаковый, поэтому из виртуалки можно притащить бинарные архивы и распаковать в систему (и потом один раз собирать, а не 2). Или можно не торопясь потихоньку заменять? Тем более, что мне могут поставлять сборки с теми же настройками системы, как в виртуалке. CHOST прописан одинаковый.

 , ,

grem ()

Git сервер. Разграничение прав доступа на директории.

Как обычно осуществляется разграничение прав доступа к репозитория git, когда некоторым авторизованным пользователям нужно запретить доступ даже на чтение из определённых каталогов?

Можно ли это сделать, например, в gitolite? Всё что нашёл о нём, что можно выставлять права доступа на чтение группе пользователей на ветки.

Или единственное решение в этом случае использование hooks, когда существуют два репозитория и из второго для группы с ограничениями автоматически пушатся изменения в основной и обратно?

Возможно, подобная настройка реализуется в gitlab, но хотелось бы что-то «полегче».

Какие ещё бесплатные git серверы для разворачивания в своей сети сейчас ещё популярны? Можно ли подобное реализовать в Kallithea?

 , , ,

grem ()

git sign-off

Может кто-нибудь ещё проверить, воспроизводится ли «баг» (или опции всё же разделяться должны всегда?)

Дано (возможно, что не так критично, что данные разнесены):

  • глобальный конфиг git с указанной почтой и gpg-подписью;
  • локальный конфиг в одной из реп с указанным именем.

Создаём коммит командой git commit -Ss или ребейзим ранее созданный коммит командой git commit --amend -Ss и видим, что строка Signed-off-by: имя фамилия <email> не добавляется в текст коммита.

Если выполнять команды как git commit -S -s или git commit --amend -S -s, то указанная строка появляется в тексте коммита.

Это для git-2.21. Для более новых (2.23 вышел, кстати) не проверял.

 

grem ()

Рутгер Хауэр

Я видел такое, во что вы, люди, просто не поверите. Штурмовые корабли в огне на подступах к Ориону. Я смотрел, как Си-лучи мерцают во тьме близ врат Тангейзера. Все эти мгновения исчезнут во времени, как слёзы под дождём. Пора умирать.

 

grem ()

Двойное условие в скрипте bash

Допустим, я хочу проверить вывод какой-то команды на принимаемые значения, но делать что-то только в случае, если условия не выполняются. То есть мне нужно «успешно» завершить работу функции, если выполненная в ней команда вернула «0» или «2». Следующий код не работает (даже если ret = 0 или 2, то вываливает ошибку):

...
ret=$?

if [ "$ret" != "0" ] || [ "$ret" != "2" ]; then
   echo "FAIL"
fi

При использовании круглых скобок вроде отрабатывает, но ругается, что не найдена команда «0» или «2».

Или нужно обязательно городить такое:

...
ret=$?

if [ "$ret" != "0" ]; then
    :
elif [ "$ret" != "2" ]; then
    :
else
    echo "FAIL"
fi

?

 

grem ()

Gentoo: cтабилизация профиля amd64 17.1

ВАЖНО!
Перед переключением на профиль amd64 17.1 внимательно прочтите новость и выполните приведённые там инструкции

Сам переход на новый профиль связан с удалением симлинков /usr/lib и /lib.

Все пользователи gentoo и так знают, что подобные новости распространяются средствами portage (eselect news), но вдруг кто сразу решит переключить, не глядя.

 

grem ()

Gentoo и ccache

Кто-нибудь может поделиться настройками для использования ccache в portage? Как ни пытаюсь настроить использование (для определённого пакета), на этапе установки всё равно пытается создать /root/.ccache или что-то записать туда и вываливается с ошибкой.

Ещё зачем-то создаёт каталог /var/tmp/portage/.ccache со своим конфигом при этом

 , ,

grem ()

Использование NAS и Datasets

Правильно ли я понимаю, что в отличии от OpenMediaVault (да и обвязки от QNAP, например), где создаются обычные каталоги, размер каждого из которых ограничен доступным местом, FreeNAS и NAS4Free оперируют только так называемыми Datasets, которые всегда фиксированного размера после создания?

И правильно ли я понял, что в отличии от NAS4Free, использование одного устройства для системы и хранения не предполагается? Или это всё же возможно после последующей манипуляции с разделами, как в случае с OMV? OMV при установке забирает себе весь диск, но после с помощью gparted и последующей правки uuid для swap, можно исправить ситуацию.

Только создалось впечатление, что gparted не очень то дружит с zfs, поэтому подобные манипуляции там с ним проблематичны.

 , ,

grem ()

Gentoo python_target_python3_6

Что случилось с профилями? Только вчера обновлялся и дефолтным стал python3_6, сегодня мне обратно предлагают пересобрать всё с python3_5? Я могу, конечно, вручную прописать новый, но чего он у них туда сюда вдруг скачет?

 , ,

grem ()

Подсветка синтаксиса Fortran

Добавьте, пожалуйста, подсветку синтаксиса языка Fortran в теге [code]. Используемый highlight.js его поддерживает посредством alias «fortran».

maxcom

 , ,

grem ()

Fortran 2003: user-defined io в GCC

Как известно, в GCC-7.1.0 появилась поддержка «user-defined io» стандарта Fortran 2003. На сайте Intel есть несколько примеров. С большинством из которых всё понятно и они даже собираются gfortran-7.3.0 и работают.

Проблема наблюдается с третьим примером:

! PROGRAM: udio_nml_read_write.f90
!
! This program tests NAMELIST READ and WRITE.  In the WRITE subroutine, there
! are FORMATTED WRITES as well as NAMELIST WRITES.
!
MODULE UDIO
  TYPE MYDT
     INTEGER F1
     INTEGER F2
   CONTAINS
     PROCEDURE :: MYSUBROUTINE
     GENERIC :: READ (FORMATTED) => MYSUBROUTINE
  END TYPE MYDT

  INTERFACE WRITE (FORMATTED)
     MODULE PROCEDURE :: WRITESUBROUTINE
  END INTERFACE
CONTAINS

  SUBROUTINE WRITESUBROUTINE (DTV, UNIT, IOTYPE, V_LIST, IOSTAT, IOMSG)
    CLASS (MYDT),       INTENT(IN)      :: DTV
    INTEGER*4,          INTENT(IN)      :: UNIT
    CHARACTER (LEN=*),  INTENT(IN)      :: IOTYPE
    INTEGER,            INTENT(IN)      :: V_LIST(:)
    INTEGER*4,          INTENT(OUT)     :: IOSTAT
    CHARACTER (LEN=*),  INTENT(INOUT)   :: IOMSG
 
    INTEGER I, J
    NAMELIST /SUBRT_NML/ I, J
 
    I=DTV%F1
    J=DTV%F2
 
    WRITE (UNIT, '(A,2I5.2)', IOSTAT=IOSTAT) IOTYPE, DTV%F1, DTV%F2
    WRITE (UNIT, NML=SUBRT_NML)
  END SUBROUTINE WRITESUBROUTINE
 
SUBROUTINE MYSUBROUTINE (DTV, UNIT, IOTYPE, V_LIST, IOSTAT, IOMSG)
    CLASS (MYDT),       INTENT(INOUT)   :: DTV
    INTEGER*4,          INTENT(IN)      :: UNIT
    CHARACTER (LEN=*),  INTENT(IN)      :: IOTYPE
    INTEGER,            INTENT(IN)      :: V_LIST(:)
    INTEGER*4,          INTENT(OUT)     :: IOSTAT
    CHARACTER (LEN=*),  INTENT(INOUT)   :: IOMSG
 
! X and Y are aliases for DTV%F1 and DTV%F2 since field references
! cannot be referenced in a NAMELIST statement
 
    INTEGER X, Y
    NAMELIST /SUBRT_NML/ X, Y
 
    READ (UNIT, *) DTV%F1, DTV%F2
 
    X = DTV%F1
    Y = DTV%F2
 
    READ (UNIT, NML=SUBRT_NML, IOSTAT=IOSTAT)
  
END SUBROUTINE MYSUBROUTINE

END MODULE UDIO

PROGRAM UDIO_PROGRAM
   USE UDIO
   TYPE (MYDT) :: MYDTV
   INTEGER        :: A, B
   NAMELIST /MAIN_NML/ A, MYDTV, B

   OPEN (10, FILE='udio_nml_read_write.in')
   READ (10, NML=MAIN_NML)
   WRITE (6, NML=MAIN_NML)
   CLOSE (10)
 
END PROGRAM UDIO_PROGRAM

На вход подаётся файл «'udio_nml_read_write.in»:
&MAIN_NML
A=100
MYDTV=20 30
&SUBRT_NML
X=20
Y=30
/
/B=200
/

На выходе должно быть:
&MAIN_NML
 A       =         100,
 MYDTV=NAMELIST   20   30
&SUBRT_NML
 I       =          20,
 J       =          30
/
 /B       =         200
/

Но с gcc-7.3.0 на выходе получается
&MAIN_NML
 A=        100,
 MYDTV=NAMELIST   20   30&SUBRT_NML
 I=         20,
 J=         30,
 /
 B=          0,
 /

, либо вместо «B = 0» может быть произвольное число, то есть словно «B» осталась неинициализированной.

Если во входном файле вместо строки " /B = 200" оставить только «B = 200» и добавить в конце пустую строку, то тогда в выводе будет «B = 200».

Но интересует первоначальный вариант входного файла (если он правильный, конечно).

Есть ли кто, из тех у кого есть intel fortran compiler (2016 и новее, кажется), проверить что выводит пример в результате отработки?
И главное, как этот пример вообще работает? Пока я это не очень понимаю. То есть, например, не совсем понятно как он считывает значения «20» и «30» второй раз и куда? И куда он считывает остальной текст или там во входных данных уже какой-то стандартный «текстовый шаблон» вбит и он его подставляет? Если что-то в «текстовых строках» поменять, то во время исполнения пример упадёт. А если поменять значения «X» и «Y», то они ни на что не влияют (на вывод, то есть словно они и не нужны).

 , , ,

grem ()

Проверка существования директории средствами autotools

Никак не могу найти, есть ли возможность средствами при написании файла конфигурации для autoconf проверить существует ли в подкаталогах исходников определённая директория?

Есть макрос AC_CHECK_FILE, но из его описания

Check whether file file exists on the native system

следует, что проверять он будет в самой системе. Или это будет работать и для относительных путей,в том числе внутри sandbox?

Мне это нужно для проверки наличия директории и если она есть (может и не быть), то пропатчить лежащие внутри файлы Makefile.am (вызовом внешнего скрипта - но искать нужно не скрипт), и использовать их для сборки этого «плагина».

 , , ,

grem ()

Плагины в CodeBlocks для разработки на Fortran

В связи с тем, что в Gentoo обновили Code::Blocks до версии 17.12 и там был добавлен USE-флаг «fortran», активирующий сборку FortraProject plugin отдельно от остальных «contrib» плагинов (если этот плагин есть ещё в каком дистрибутиве linux, буду рад об этом узнать), то я хотел бы уточнить опытных разработчиков на Фортране, какие основные плагины в Code::Blocks вы используете в процессе разработки?

В первую очередь приходит мысль о SmartIndent(Fortran). Насколько актуальны в использовании остальные, например, Doxygen? Спрашиваю потому, что на основе беглого взгляда мне показалось, что наибольшая часть этих плагинов нужна для разработки на C++.

 , ,

grem ()

Переменная LINGUAS в make.conf перестала применяться

Буквально несколько часов назад выполнил eix-sync и при выводе списка пакетов для обновления portage мне сообщил, что пакеты, которые были собраны с русскоязычной локализацией будут пересобраны с флагом "-linguas_ru".

В make.conf всё так же прописано

LINGUAS="en ru ru_RU"
L10N="${LINGUAS}"

, что вроде бы должно соответсовать этой старой новости:

https://gentoo.org/support/news-items/2016-06-23-l10n-use_expand.html

и до сегодняшней ночи всё было нормально.

Pinkbyte, не подскажешь, может я новость какую пропустил и снова что-от поменяли? Как раз недавно закончил пересобирать мир с профилем 2017.0.

 ,

grem ()

Регулряное выражение для удаления номера версии.

Есть, например, такой вывод

# genlop -ln | grep dpi
     Tue Jul 18 13:38:56 2017 >>> media-fonts/font-bh-75dpi-1.0.3
     Tue Jul 18 13:42:19 2017 >>> media-fonts/font-bitstream-75dpi-1.0.3
     Tue Jul 18 13:42:53 2017 >>> media-fonts/font-adobe-100dpi-1.0.3
     Tue Jul 18 13:43:08 2017 >>> media-fonts/font-bh-lucidatypewriter-100dpi-1.0.3
     Tue Jul 18 13:43:46 2017 >>> media-fonts/font-adobe-utopia-75dpi-1.0.4
     Tue Jul 18 13:47:10 2017 >>> media-fonts/font-bitstream-100dpi-1.0.3
...

Для удаления данных о дате и номере версии в конце для пакетов отличных от шрифтов, меня вполне устраивает такое регулярное выражение

sed -e 's/^.*> //' | sed s/-[0-9].*$//g

, но в случае вышеуказанных пакетов отрезаются и нужные мне "-75dpi", "-100dpi".

Для прочих пакетов номер версии может состоять из нескольких блоков разделённых "-" и в разном формате, поэтому отрезание с конца до первого "-" не подойдёт.

Как подправить регулярку sed s/-[0-9].*$//g так, чтобы она удаляла подстроку после "-", содержащую цифры, но при этом не трогала подстроку, содержащую подстроку «dpi»?

 ,

grem ()

Вертикальная полоса прокрутки в [code] в Opera

Что-то поменяли в коде движка LOR? Почему-то в Opera (в Chrome, Firefox такого не вижу) примерно с сегодняшнего дня при отображении блока code отображается вертикальная полоса прокрутки в нём. Просто отображается, прокручивать никуда не даёт, так как блок помещается весь.

Проверял с отключёнными скриптами и дополнениями, то есть они не влияют.

 

grem ()

Кнопка «закрыть» у Opera без заголовка и границ окна в KDE5

Есть 2 системы с Gentoo и KDE5 практически идентичны и с одинаковой версией Opera (одна из низ в VirtualBox). В обоих системах для приложения Opera в свойствах окна для «приложения» настроено скрытие заголовка окна и его границ. В системе с VirtualBox при разворачивании окна браузера во весь экран в верхнем правом углу появляется мелкая кнопка «закрыть», во второй системе она не появляется.

Кто нибудь сталкивался с подобным? От чего зависит появление такой кнопки?

Перемещено leave из development

 , ,

grem ()

Расширения, которых больше не будет с выходом Firefox 57

Каких полезных расширений лишатся пользователи, с полным переходом Firefox на расширения основанные на WebExtensions и чем их можно заменить?

Из тех, что (иногда) использовал я:

P.S.
Да они издеваются!

Устали от обновления плагинов? Firefox обеспечит вашу безопасность.

 ,

grem ()

Plasma 5.11.0

Вышла 10 октября: https://www.kde.org/announcements/plasma-5.11.0.php

Из заметных новшеств - они опять изменили systemsettings и что-то там про wayland с dpi на разных мониторах.

 , , ,

grem ()

«Странное» поведение std::cout.setf (на самом деле нет)

Столкнулся с одной проблемой, но пока писал сюда, разобрался.

Сегодня запустил в Linux ранее написанную небольшую утилитку (писал в Windows с использовванием MinGW64). При это заметил, что вывод результата крайне странный: результат функции класса почему-то выводится в «hex». Сначала решил, что может чего намудрил внутри функции, но в ней число вычислялось нормально. Методом «научного» тыка выяснил, что проблема связана с std::cout.setf, так как в процессе вывода данных я, в зависимости от потребностей, меняю формат вывода.

Набросал небольшой пример, который демонстрирует проблему:

#include <iostream>

/* g++ -Wall -std=c++11 ./main.cpp  */

int main() {

    double test_d = -0.0010532140082682021;

    std::cout.setf(std::ios::scientific);
    std::cout << "test_d = " << test_d << std::endl;
    
    std::cout.setf(std::ios::fixed);
    std::cout << "test_d = " << test_d << std::endl;

return 0;
}

Можно и без -std=c++11, результат вывода тот же:

test_d = -1.053214e-03
test_d = -0x1.1417fee28283fp-10

вместо второго числа ожидается -0.001053.

Ну так вот, как оказалось, просто переключиться на fixed формат недостаточно, так как scientific при это не отключается, а в сочетании с ним, результат будет выводиться в HEX (http://en.cppreference.com/w/cpp/io/ios_base/setf):

scientific - generate floating point types using scientific notation, 
or hex notation if combined with fixed: see std::scientific

то есть перед вызовом std::cout.setf(std::ios::fixed) нужно сначала вызвать

std::cout.unsetf(std::ios::scientific);

Осталось понять, почему в MinGW64 (не помню какой версии), работает иначе.

 ,

grem ()

RSS подписка на новые темы