Главная | Actual Topics | Обратная связь | Guest Book | В избранное | Сделать домашней
 System & Utilities
 Unix News
 OS Emulator
Каталог статей
Все статьи

Биллу Гейтсу тоже предлагают избавиться ...
Вымогательство в борьбе со спамом

July, 2018
Какой из этих ОС Вы отдаете большее предпочтение?

Mac OS
Windows XP
Windows 2003
Что такое ОС? :)

Другие опросы

Всего голосов: 326
Комментарии: 0

Архив Новостей
 July 2018 (6)
 June 2018 (13)
 May 2018 (10)
 April 2018 (14)
 March 2018 (11)
 February 2018 (13)
 January 2018 (13)
 December 2017 (14)
 November 2017 (15)
 October 2017 (19)
 September 2017 (18)
 August 2017 (13)
 February 2017 (14)
 January 2017 (19)
 December 2016 (16)
 November 2016 (16)
 October 2016 (21)
 September 2016 (18)
 August 2016 (16)
 July 2016 (16)
 June 2016 (20)
 May 2016 (18)
 April 2016 (15)
 March 2016 (22)
 February 2016 (17)
 January 2016 (15)
 December 2015 (15)
 November 2015 (22)
 October 2015 (20)
 September 2015 (17)
 August 2015 (25)
 July 2015 (20)
 June 2015 (23)
 May 2015 (21)
 April 2015 (17)
 March 2015 (19)
 February 2015 (9)
 January 2015 (23)
 December 2014 (9)
 November 2014 (13)
 October 2014 (12)
 September 2014 (18)
 August 2014 (20)
 July 2014 (10)
 June 2014 (12)
 May 2014 (12)
 April 2014 (10)
 March 2014 (22)
 February 2014 (10)
 January 2014 (8)
 December 2013 (26)
 November 2013 (53)
 October 2013 (40)
 September 2013 (48)
 August 2013 (63)
 July 2013 (56)
 June 2013 (52)
 May 2013 (49)
 April 2013 (67)
 March 2013 (74)
 February 2013 (63)
 January 2013 (62)
 December 2012 (62)
 November 2012 (66)
 October 2012 (68)
 September 2012 (48)
 August 2012 (75)
 July 2012 (60)
 June 2012 (71)
 May 2012 (69)
 April 2012 (85)
 March 2012 (86)
 February 2012 (90)
 January 2012 (81)
 December 2011 (103)
 November 2011 (118)
 October 2011 (74)
 September 2011 (2)
 June 2011 (110)
 May 2011 (118)
 April 2011 (111)
 March 2011 (112)
 February 2011 (101)
 January 2011 (119)
 December 2010 (117)
 November 2010 (118)
 October 2010 (131)
 September 2010 (117)
 August 2010 (226)
 July 2010 (351)
 June 2010 (305)
 May 2010 (319)
 April 2010 (343)
 March 2010 (329)
 February 2010 (311)
 January 2010 (312)
 December 2009 (266)
 November 2009 (156)
 July 2009 (101)
 June 2009 (279)
 May 2009 (365)
 April 2009 (348)
 March 2009 (347)
 February 2009 (323)
 January 2009 (318)
 December 2008 (237)
 November 2008 (155)
 October 2008 (334)
 September 2008 (310)
 August 2008 (343)
 July 2008 (362)
 June 2008 (322)
 May 2008 (501)
 April 2008 (1276)
 March 2008 (1658)
 February 2008 (250)
 January 2008 (6)
 November 2007 (1)
 September 2007 (1)
 June 2007 (1)
 May 2007 (1)
 March 2007 (1)
 January 2007 (2)
 December 2006 (1)
 October 2006 (2)
 September 2006 (1)
 August 2006 (2)

debian/rake: Ruby DH Sequencing?

System & Utilities

In my previous post I looked at the possibility of using rake, a Ruby build tool, instead of make to write debian/rules files. While that turned out to not be entirely impossible as far as the core dpkg-* utilities used to build Debian packages are concerned, wiring it up with the debhelper ‘dh’ command sequencer appears unfortunately impossible without changes to dh itself.

Clearly the solution here is to write our own sequencer in Ruby! To do that we will first have to understand what a sequencer does though.

In the post about using rake for debian/rules I already briefly outlined what the Debian package build process looks like and that it is, for the most part, driven by a tool called dpkg-buildpackage. The rules file itself is mostly just a harness receiving commands from dpkg-buildpackage and forwarding them to the dh sequencer.

We already looked at the most trivial of rules files previously and did not spend time on looking into how this works. But since we want to implement our own version of dh it probably is time to have a closer look.

#!/usr/bin/make -f

dh $@

If one does not know make-syntax very well that piece of code is probably not very descriptive.

Perhaps it would be best to look at what it does, and then infer how it does it. So, let us find out what exactly dpkg-buildpackage does with debian/rules by using a no-op rules to inspect what is happening here.

#!/usr/bin/make -f

@echo TARGET $@

Prints the following when we try to build a package with this debian/rules file:

fakeroot debian/rules clean
TARGET clean
debian/rules build
TARGET build
fakeroot debian/rules binary
TARGET binary

At this point I will go ahead and mention that % is a pattern rule (target) that matches anything. Each make file is composed of targets, each target represents a build step, as it were. One uses make by calling one or more targets. Since writing generic targets over and over again would get annoying quickly, make has this pattern system where you can define a target that is kind of like a regular expression to apply to multiple different inputs. The most generic version of such a target is %, it will be used for everything and the kitchen sink (as long as there is no more conrecte target that would match anyway).

If the % target is run for every possible target dpkg-buildpackage might call then clearly dh, and to that extent our Ruby version of dh, will have to support at least clean, build and binary as target commands. Namely if I run ‘rake -f debian/rules clean’ it should clean up the source. Trivial enough to implement in rake:

#!/usr/bin/rake -f

task :clean do |t|

task :build do |t|

task :binary do |t|

Lovely. That clearly does not do anything though. What is missing is the command sequencing bit of the command sequencer. In the previous post, I mentioned that debhelper is a collection of tools that help with building a package. There are many of those, they all are called dh_somethingsomething and they need to be called in a somewhat set order for them to do their thing. dh does exactly that. It runs the numerous dh_ tools in sequence to build a package.

We will have to implement the sequence as well if we want a sequencer written in Ruby. So, after a bit of digging in the code here are the default sequences. At this point it ought to be noted that build and binary targets in fact are legacy targets dpkg-buildpackage will call for compatibility reasons and the dh sequences are layed out in the more concrete new targets.

Now that we know the sequences, it is only a game of implementing the sequences and perhaps thinking of a way to conveniently allow overrides. The version I came up with when I worked on this originally (which is really just a quick hack and not the smoothest way to implement the sequencer) leads to code like this:

#!/usr/bin/rake -f

require_relative 'sequencer'

override :dh_strip do
sh 'dh_strip'

In conclusion. It is possible to write debian/rules files using rake instead of make as the dpkg-* tools are largely independent of the actual implementation language. We can even use the debhelper utils so long as we reimplement the sequencer bit.


If you are interested in a more comprehensive re-implementation of dh, the Debian-KDE/Kubuntu team is actually using a pure make sequencer.


Разместил: Planet KDE | Дата: 08.05.2015 | Прочитано: 604 | Раздел: System & Utilities   

Рейтинг статьи

Средняя оценка: 0.00/0Средняя оценка: 0Всего голосов:0

Хорошо Нормально Пойдёт Плохо

Смотрите также связанные темы

28.01.2009 Вышел KDE-4.2
27 января 2009 г. сообщество KDE представило релиз KDE4. Кодовое имя — "The Answer" (a.k.a KDE 4.2.0) — Свободный Десктоп, готовый для конечного пользователя. Улучшения в интерфейсе Plasma позволяют упростить организацию рабочего места. Новыми возможностями Plasma можно назвать представление рабочего стола в виде просмотрщика файлов (как в KDE 3.5), неперекрываемость апплетов Plasma заставокой, возможности по группировке задач и инновационную систему уведомлений. Упрощение конфигурации менеджера окон KWin. Расширение возможностей представления окон. Различные виды переключения и пре...
10.01.2013 Запущен VM Depot — репозиторий образов виртуальных машин на Linux для сообщества облачной платформы Windows Azure
Вчера состоялся официальный запуск портала VM Depot, который представляет собой репозиторий образов виртуальных машин на базе открытых ОС (в первую очередь Linux), готовых для развертывания в облаке Windows Azure.VM Depot — это проект для сообщества Windows Azure, запущенный командой Microsoft Open Technologies, Inc, ответственной за открытые технологии внутри компании. Ожидается, что контент портала, сконфигурированные для разных задач виртуальные машины, будут создаваться и публиковаться силами разработчиков и ИТ-специалистов. [lor-cut] Сегодня на старте портала вы можете найти уже более 20 ...
25.09.2010 Lucas Nussbaum: в Debian с Ruby все нормально
Lucas Nussbaum в своем блоге развенчал несколько мифов о статусе Ruby в популярных дистрибутивах Debian и Ubuntu. Данная статья призвана покончить с призывами пользователям дистрибутивов Ubuntu и Debian устанавливать Ruby из исходников.
30.04.2008 Sun хочет включить OpenJDK в состав Debian и openSUSE
CNews со ссылкой на британское издание The Register сообщает, что компания Sun Microsystems начала переговоры с разработчиками Linux-дистрибутивов Debian и openSUSE о включении среды OpenJDK в следующие версии этих Linux-систем...
08.12.2015 Релиз интегрированной среды разработки Eclipse Che
Eclipse Che построен на базе облачных технологий, интерфейс может быть реализован как с использованием традиционных компонентов, так и с помощью web-технологий. Сервер написан на Java 8 и может запускаться на любых ОС, поддерживаемых этой платформой. Достаточно запустить скрипт, и на локальном порту 8080 будет доступна среда разработки (http://localhost:8080).Название связано с инициатором разработки — украинской компанией Codenvy, и является сокращением от города Черкассы.Исходный код доступен под лицензией EPL 1.0.Реализованы плагины для множества языков (С/C++, Go, Java, Python, ...
22.02.2016 Iceweasel в Debian переименуют в Firefox с позволения Mozilla
Из баг-трекера проекта Debian стало известно о решении переименовать Iceweasel в оригинальное название веб-браузера — Firefox. Iceweasel — по сути форк, но по факту больше специальная сборка Firefox, созданная разработчиками Debian под новым «брендом» для следования стандартам этого дистрибутива, которые нарушались требованиями Mozilla к использованию торгового знака «Firefox». Основным разработчиком Iceweasel является Майк Хомми (Mike Hommey), который «по совместительству» входит в десятку наиболее…
24.10.2016 Netrunner Core 16.09 'Avalon' Debian-based KDE Linux distro now available for download
The gift and curse of desktop Linux-based operating systems is the ability to change the desktop environment. On one hand, having the choice to pick your favorite user interface, such as Unity, GNOME, or KDE Plasma, can be a huge positive.
03.02.2017 Директором GNOME Foundation стал Нил Макговерн, бывший лидер Debian
1 февраля некоммерческая организация GNOME Foundation назвала своего нового директора — им стал Нил Макговерн (Neil McGovern), который известен в сообществе свободного программного обеспечения по работе в Collabora и недавнему лидерству в проекте Debian. Нил проживает в Великобритании и начнёт свою работу на новом посту 15 февраля. В его послужном списке: технический руководитель разработки в компании Collabora, менеджер нескольких релизов Debian GNU/Linux…
06.11.2017 Ext2Fsd 0.69
Обновился драйвер Ext2/Ext3/Ext4 для ОС Microsoft. Основное изменение - исправление проблемы в предыдущей версии, из-за которой разрушались Ext4 разделы в 64-битном режиме при использовании с последними релизами ОС Ubuntu и Debian.Исправление: разрушение суперблоков Ext4 в режиме 64-битИсправление: опасная реализация состояния гонки восстановления заголовка буфераИсправление: зависания при записи кешированных данных из-за BCB блокировкии другие мелкие исправления  ext2, ext3, ext4, microsoft, windows
19.01.2018 Google отказывается от Ubuntu в пользу Debian в качестве рабочего окружения для своих инженеров
Инженеры компании Google перешли с Ubuntu на Debian в качестве ОС для своих рабочих машин.Ранее в течение нескольких лет компания использовала Goobuntu, кастомизированную версию Ubuntu. Теперь же она переходит на базирующуюся на Debian Testing сборку gLinux.Google была подписчиком Ubuntu Advantage Program, но при этом не вносила вклад в Ubuntu. После перехода на Debian планируется, что Google станет активным участником проекта и будет участвовать в разработке и тестировании Debian.Как считает Chris Merriman из издания The Inquirer, уход такого крупного коммерческого клиента будет большой потер...
Нет комментариев. Почему бы Вам не оставить свой?
Вы не можете отправить комментарий анонимно, пожалуйста зарегистрируйтесь.
Google Search


Топ Новостей
1: Linux distros aren\'t updating WebKit, making web browsers and email clients vulnerable
Просмотров - 4986

2: Akonadi/KMail issues on Tumbleweed?
Просмотров - 627

3: Netrunner Desktop 16.09 "Avalon" Linux OS Is Out with Kernel 4.7, KDE Plasma 5.7
Просмотров - 593

4: KDE\'s Kirigami 2.0 Framework for Convergent UIs Enters Beta with New Features
Просмотров - 581

5: KDevelop 5.0.2 released for Windows and Linux
Просмотров - 575

6: HIG about Simple vs. Advanced Settings
Просмотров - 570

7: Interview with Esfenodon
Просмотров - 548

8: 3.0 Pre-alpha 3 is out!
Просмотров - 510

9: Multi-screen woes in Plasma 5.7
Просмотров - 503

10: Embrace Open Source culture: the 5 common transformations.
Просмотров - 496

11: GSoC Update 1: The Beginning
Просмотров - 485

12: Fedora and KDE/spin\'s treatment - Discussion
Просмотров - 479

13: [TORRENT] chakra-2016.02-ian-x86_64.iso
Просмотров - 479

14: Qt SCXML and State Chart Support in Qt Creator
Просмотров - 460

15: Interview with Neotheta
Просмотров - 452

Google 120X240

Главная | Actual Topics | Статьи | Обратная связь | Guest Book
Генерация: 1.533 сек. и 13 запросов к базе данных за 1.485 сек.
Powered by SLAED CMS © 2005-2007 SLAED. All rights reserved.