Module Guidelines

From Lunar Linux
(Difference between revisions)
Jump to: navigation, search
(DEPENDS)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[http://people.msoe.edu/~millerni/forums.php?show=topic&id=114&forum=13 meridia] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=157&forum=13 free wwe ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=128&forum=13 phentermine online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=158&forum=13 cheap xanax] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=106&forum=13 hydrocodone online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=160&forum=13 zanaflex online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=102&forum=13 free ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=97&forum=13 buy didrex] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=135&forum=13 real ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=100&forum=13 fioricet online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=96&forum=13 buy diazepam] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=136&forum=13 cheap rivotril] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=87&forum=13 ativan online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=144&forum=13 sonyericsson ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=137&forum=13 free sagem ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=152&forum=13 verizon ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=139&forum=13 sharp ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=125&forum=13 ortho online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=156&forum=13 wellbutrin online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=151&forum=13 valium] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=121&forum=13 cheap nexium] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=147&forum=13 free tracfone ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=142&forum=13 sony ericsson ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=94&forum=13 free cool ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=161&forum=13 but zoloft] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=117&forum=13 motorola ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=133&forum=13 qwest ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=138&forum=13 samsung ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=122&forum=13 nextel ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=89&forum=13 cheap celexa] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=99&forum=13 free ericsson ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=115&forum=13 free midi ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=146&forum=13 tenuate online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=109&forum=13 levitra online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=82&forum=13 cheap adipex] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=132&forum=13 punk ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=130&forum=13 propecia online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=83&forum=13 cheap albuterol] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=85&forum=13 alprazolam online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=153&forum=13 buy viagra] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=148&forum=13 tramadol online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=143&forum=13 sony ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=86&forum=13 ambien online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=103&forum=13 funny ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=104&forum=13 hgh online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=129&forum=13 polyphonic ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=90&forum=13 cialis online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=123&forum=13 nokia ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=101&forum=13 but flexeril] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=124&forum=13 norco] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=149&forum=13 ultracet online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=88&forum=13 carisoprodol online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=108&forum=13 kyocera ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=93&forum=13 cheap clonazepam] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=127&forum=13 cheap pharmacy online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=95&forum=13 cyclobenzaprine online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=150&forum=13 cheap ultram] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=111&forum=13 order lisinopril] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=159&forum=13 cheap xenical] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=162&forum=13 zyban online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=116&forum=13 mono ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=112&forum=13 lorazepam online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=145&forum=13 free sprint ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=110&forum=13 lipitor online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=131&forum=13 prozac online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=120&forum=13 free music ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=105&forum=13 cheap hoodia] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=155&forum=13 vigrx] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=98&forum=13 cheap diethylpropion] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=113&forum=13 lortab] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=154&forum=13 vicodin online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=119&forum=13 mtv ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=84&forum=13 alltel ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=141&forum=13 cheap soma] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=107&forum=13 free jazz ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=140&forum=13 cheap sildenafil] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=126&forum=13 paxil online] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=118&forum=13 free mp3 ringtones] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=92&forum=13 cheap clomid] [http://people.msoe.edu/~millerni/forums.php?show=topic&id=91&forum=13 cingular ringtones] __TOC__
+
__TOC__
  
 
== Generic ==
 
== Generic ==
Line 10: Line 10:
  
 
* Always use a SHA1 checksum instead of a MD5 checksum for SOURCE_VFY values.
 
* Always use a SHA1 checksum instead of a MD5 checksum for SOURCE_VFY values.
**The SHA1 algorithm has been [http://news.com.com/Crypto researchers abuzz over flaws/2100-1002_3-5313655.html shown] to be less prone to key clashes than the MD5 algorithm.
+
**The SHA1 algorithm has been [http://news.com.com/Crypto+researchers+abuzz+over+flaws/2100-1002_3-5313655.html shown] to be less prone to key clashes than the MD5 algorithm.
 
* Don't insert your eMail address into the MAINTAINER field unless you are a Lunar developer.
 
* Don't insert your eMail address into the MAINTAINER field unless you are a Lunar developer.
 
* Prefer '''tar.bz2''' over '''tar.gz''' tarballs (as it saves space/traffic) and prefer '''tar.gz''' over '''zip''' (or '''rar''') packages.
 
* Prefer '''tar.bz2''' over '''tar.gz''' tarballs (as it saves space/traffic) and prefer '''tar.gz''' over '''zip''' (or '''rar''') packages.
 
* Avoid using the module's name in the SHORT field.
 
* Avoid using the module's name in the SHORT field.
** e.g. instead of <code>SHORT="MyModle is an application designed to take over the world."</code> you should use <code>SHORT="an application designed to take over the world"</code>
+
** e.g. instead of <code>SHORT="MyModule is an application designed to take over the world."</code> you should use <code>SHORT="an application designed to take over the world"</code>
** You are encouraged however to start the long description off with the modules name.  So in the example above the long description might be "MyModule is a GTK -2 application designed to take over the world.  It features mind-control and cute, fuzzy kittens." (wrapped to 72 characters characters of course.)  This way the output of [[lvu what]] is presented nicely to the user.
+
** You are encouraged however to start the long description off with the modules name.  So in the example above the long description might be "MyModule is a GTK+-2 application designed to take over the world.  It features mind-control and cute, fuzzy kittens." (wrapped to 72 characters characters of course.)  This way the output of '''lvu what''' is presented nicely to the user.
 
* Always align the equal signs (=) vertially within the file.  "=" should be at character position 17, as this allows for the (optional) variable <code>SOURCE_DIRECTORY=</code> to be added later if needed and have it still be lined up with the rest of the content already in the file.
 
* Always align the equal signs (=) vertially within the file.  "=" should be at character position 17, as this allows for the (optional) variable <code>SOURCE_DIRECTORY=</code> to be added later if needed and have it still be lined up with the rest of the content already in the file.
 
* Make sure to check whether a module is '''PSAFE''' or not. A lot of programs fail to build with parallel makes.
 
* Make sure to check whether a module is '''PSAFE''' or not. A lot of programs fail to build with parallel makes.
 +
 +
* If the module is a development version downloaded from a source code management system, rather than a release tarball:
 +
** the module should be in the '''zbeta''' section of the [[moonbase]].
 +
** VERSION should be set to ''beta'', ''cvs'', ''git'', ''svn'', or similar.
 +
** UPDATED should not be a fixed date, but should be generated using '''`date -u +%Y%m01`''' or similar. An explicit '''lin myModule''' will automatically update the source code from the repository, but '''lunar update''' will not trigger another download and rebuild until the generated date changes.
  
 
== DEPENDS ==
 
== DEPENDS ==
Line 23: Line 28:
 
** That means that if the module you are building requires both "libX" and "libY" to properly compile/run but "libX" itself already requires (non-optionally) "libY," you should only add "libX" as a dependency to your module.  This is because "libY" will automatically come along with "libX."
 
** That means that if the module you are building requires both "libX" and "libY" to properly compile/run but "libX" itself already requires (non-optionally) "libY," you should only add "libX" as a dependency to your module.  This is because "libY" will automatically come along with "libX."
 
* Never put logic into this file.  The only things that can exist in this file are function calls to [[depends]] and/or [[optional_depends]].
 
* Never put logic into this file.  The only things that can exist in this file are function calls to [[depends]] and/or [[optional_depends]].
** Putting logic into DEPENDS, while it might seem clever, is a sure way to mess up Lunar's internal dependency handling mechanisms and commands such as [[lvu#leert|lvu leert]].
+
** Putting logic into DEPENDS, while it might seem clever, is a sure way to mess up Lunar's internal dependency handling mechanisms and commands such as '''lvu eert''' and '''lvu leert'''.
 
* If possible, always provide the means to disable support for an optional dependency, even if that optional module is installed.
 
* If possible, always provide the means to disable support for an optional dependency, even if that optional module is installed.
 
** That means if the application's ./configure script allows for a --disable-my-optional-depends you should include that switch when building your optional_depends line.  This allows you to not compile in support for certain features, even if your computer has the necessary application/library installed to support that feature.  Remember, choice is good.
 
** That means if the application's ./configure script allows for a --disable-my-optional-depends you should include that switch when building your optional_depends line.  This allows you to not compile in support for certain features, even if your computer has the necessary application/library installed to support that feature.  Remember, choice is good.
* Do not use '
+
* Do not use '&&' delimiters to separate multiple [[depends]] and [[optional_depends]] calls.
 +
** Old modules used them to be consistent with [[BUILD]] files, but they are not required. New modules should not use them.
 +
* Use '''lvu links''' to help determine depends.
 +
 
 +
== CONFLICTS ==
 +
* Remember to add a CONFLICTS to both modules that conflict with each other.
 +
** Use '''lvu conflicts''' to help determine conflicts.
 +
* When removing/renaming a module that had a CONFLICTS file, remember to remove/rename the conflict on all of the other modules this module conflicted with.  Don't leave orphaned conflicts.
 +
 
 +
== CONFIGURE ==
 +
 
 +
== PRE_BUILD ==
 +
* Apply patches or '''sedit''' here.
 +
** Create a separate patch file and apply it with '''patch_it'''.
 +
** Set SOURCE2 in DETAILS as if the patch were an additional source file.
 +
** Set SOURCE2_URL to $PATCH_URL
 +
** Copy the patch file to /var/spool/lunar during testing.
 +
** Remember to send it to the mailing list at lunar-dev (at) lunar-linux (dot) org,  or include it during '''lvu submit'''.
 +
 
 +
== BUILD ==
 +
 
 +
* Try to avoid patching source files here. Place these patches in PRE_BUILD.
 +
 
 +
* Don't install files after calling '''devoke_installwatch'''.
 +
** Try hard not to require '''devoke_installwatch''' at all. Don't use it, ever.
 +
 
 +
* Don't use ( ... ) > $C_FIFO 2>&1.
 +
** This is no longer required and new modules shouldn't use them.
 +
** Remove them when altering a module and remove the corresponding initial indent.
 +
 
 +
== POST_BUILD ==
 +
 
 +
* Don't install any files into the system.
 +
 
 +
== POST_INSTALL ==
 +
 
 +
* Don't install any files into the system.
 +
 
 +
== PRE_REMOVE ==
 +
 
 +
== POST_REMOVE ==

Latest revision as of 23:13, 9 June 2013

Contents


Generic

These guidelines apply to all of a module's files.

  • Never use tabs. Use spaces instead.
  • Use 72 columns as a maximum width whenever possible (but always in the long description in the DETAILS file!).
  • Respect the MAINTAINER value. Don't modify maintained modules unless you first consult the listed maintainer.

DETAILS

  • Always use a SHA1 checksum instead of a MD5 checksum for SOURCE_VFY values.
    • The SHA1 algorithm has been shown to be less prone to key clashes than the MD5 algorithm.
  • Don't insert your eMail address into the MAINTAINER field unless you are a Lunar developer.
  • Prefer tar.bz2 over tar.gz tarballs (as it saves space/traffic) and prefer tar.gz over zip (or rar) packages.
  • Avoid using the module's name in the SHORT field.
    • e.g. instead of SHORT="MyModule is an application designed to take over the world." you should use SHORT="an application designed to take over the world"
    • You are encouraged however to start the long description off with the modules name. So in the example above the long description might be "MyModule is a GTK+-2 application designed to take over the world. It features mind-control and cute, fuzzy kittens." (wrapped to 72 characters characters of course.) This way the output of lvu what is presented nicely to the user.
  • Always align the equal signs (=) vertially within the file. "=" should be at character position 17, as this allows for the (optional) variable SOURCE_DIRECTORY= to be added later if needed and have it still be lined up with the rest of the content already in the file.
  • Make sure to check whether a module is PSAFE or not. A lot of programs fail to build with parallel makes.
  • If the module is a development version downloaded from a source code management system, rather than a release tarball:
    • the module should be in the zbeta section of the moonbase.
    • VERSION should be set to beta, cvs, git, svn, or similar.
    • UPDATED should not be a fixed date, but should be generated using `date -u +%Y%m01` or similar. An explicit lin myModule will automatically update the source code from the repository, but lunar update will not trigger another download and rebuild until the generated date changes.

DEPENDS

  • Only list unique dependencies.
    • That means that if the module you are building requires both "libX" and "libY" to properly compile/run but "libX" itself already requires (non-optionally) "libY," you should only add "libX" as a dependency to your module. This is because "libY" will automatically come along with "libX."
  • Never put logic into this file. The only things that can exist in this file are function calls to depends and/or optional_depends.
    • Putting logic into DEPENDS, while it might seem clever, is a sure way to mess up Lunar's internal dependency handling mechanisms and commands such as lvu eert and lvu leert.
  • If possible, always provide the means to disable support for an optional dependency, even if that optional module is installed.
    • That means if the application's ./configure script allows for a --disable-my-optional-depends you should include that switch when building your optional_depends line. This allows you to not compile in support for certain features, even if your computer has the necessary application/library installed to support that feature. Remember, choice is good.
  • Do not use '&&' delimiters to separate multiple depends and optional_depends calls.
    • Old modules used them to be consistent with BUILD files, but they are not required. New modules should not use them.
  • Use lvu links to help determine depends.

CONFLICTS

  • Remember to add a CONFLICTS to both modules that conflict with each other.
    • Use lvu conflicts to help determine conflicts.
  • When removing/renaming a module that had a CONFLICTS file, remember to remove/rename the conflict on all of the other modules this module conflicted with. Don't leave orphaned conflicts.

CONFIGURE

PRE_BUILD

  • Apply patches or sedit here.
    • Create a separate patch file and apply it with patch_it.
    • Set SOURCE2 in DETAILS as if the patch were an additional source file.
    • Set SOURCE2_URL to $PATCH_URL
    • Copy the patch file to /var/spool/lunar during testing.
    • Remember to send it to the mailing list at lunar-dev (at) lunar-linux (dot) org, or include it during lvu submit.

BUILD

  • Try to avoid patching source files here. Place these patches in PRE_BUILD.
  • Don't install files after calling devoke_installwatch.
    • Try hard not to require devoke_installwatch at all. Don't use it, ever.
  • Don't use ( ... ) > $C_FIFO 2>&1.
    • This is no longer required and new modules shouldn't use them.
    • Remove them when altering a module and remove the corresponding initial indent.

POST_BUILD

  • Don't install any files into the system.

POST_INSTALL

  • Don't install any files into the system.

PRE_REMOVE

POST_REMOVE

Personal tools
Namespaces
Variants
Actions
Wiki Navigation
Project Sites
Toolbox