Irc-Unix.net

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

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

September, 2017
ПнВтСрЧтПтСбВс
123
45678910
11121314151617
18192021222324
252627282930
Опросы
Какой из этих ОС Вы отдаете большее предпочтение?

QNX
FreeBSD
Linux(any)
Solaris
Mac OS
Windows XP
Windows 2003
Что такое ОС? :)


Результаты
Другие опросы

Всего голосов: 325
Комментарии: 0
Ссылки

Архив Новостей
 September 2017 (13)
 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 (634)
 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|
end

task :build do |t|
end

task :binary do |t|
end

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
puts 'CALLED DH STRIP'
sh 'dh_strip'
end

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.

mission-accomplished

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 | Прочитано: 420 | Раздел: 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…
07.05.2008 textproc/ruby-htree - 0.7
Update to 0.7. PR: ports/123235 Submitted by: TAKATSU Tomonari <tota@rtfm.jp>
28.02.2008 mail/thunderbird - 2.0.0.9_2
- Add "--with-default-mozilla-five-home=${PREFIX}/lib/${MOZILLA}" to fix other applications in the runtime. Some applications required to have set MOZILLA_FIVE_HOME or/and LD_LIBRARY_PATH to make it works in the runtime. Now, it's no longer need to set these variables, which this flag takes care of it. The MOZILLA_FIVE_HOME still works with this flag if someone need to use different one. I have learned about this flag from RPM, Debian, Gentoo ebuild and other packages. - Add two extensions, auth[1] and transformiix[2]. Have been tested in MC CVS since Dec. PR: ports/117734 [1] Subm...
Нет комментариев. Почему бы Вам не оставить свой?
Вы не можете отправить комментарий анонимно, пожалуйста зарегистрируйтесь.
Google Search
Google

Web irc-unix.net

Топ Новостей
1: KDE Community announces fully open source Plasma Mobile
Hot NEWS!
Просмотров - 547


2: Using Digikam and ownCloud to share family pictures
Просмотров - 517

3: Apply agile methodologies to upstream development environments.... if you can.
Просмотров - 492

4: KWallet5 can be auto-unlocked during login again
Просмотров - 479

5: Interview with Laura
Просмотров - 454

6: Use ownCloud provided Packages, then VM, then Zip, no distro packages.
Просмотров - 451

7: Plasma Components on Android: Accelerating Subsurface Mobile Development
Просмотров - 441

8: VMware Workstation 11 and kwin - hangs and hiccups (solved?)
Просмотров - 420

9: debian/rake: Ruby DH Sequencing?
Просмотров - 420

10: Plasma 5 Powers KaOS Productivity
Просмотров - 410

11: KWrite on Mac – Application Bundle
Просмотров - 404

12: One year old: Document Liberation Project
Просмотров - 385

13: FOSDEM Desktops DevRoom 2016 Call for Participation
Просмотров - 383

14: New Year Calligra Words Sprint
Просмотров - 380

15: digiKam 5.0.0-beta2 is released
Просмотров - 378

Google 120X240
Ссылки

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