Diff for /wikisrc/pkgsrc/intro_to_packaging.mdwn between versions 1.3 and 1.4

version 1.3, 2014/07/08 14:44:38 version 1.4, 2014/07/08 14:52:13
Line 92  long ago in pkgsrc-wip Line 92  long ago in pkgsrc-wip
   
 Makefile:  Makefile:
                   
 {% highlight make %}  [[!format make """
 # [[!paste id=rcsid1]][[!paste id=rcsid2]]  # [[!paste id=rcsid1]][[!paste id=rcsid2]]
   
 PKGNAME=      osxinfo-0.1  PKGNAME=      osxinfo-0.1
Line 113  WRKSRC= ${WRKDIR}/osxinfo-${GHCOMMIT} Line 113  WRKSRC= ${WRKDIR}/osxinfo-${GHCOMMIT}
   
 .include "../../databases/sqlite3/buildlink3.mk"  .include "../../databases/sqlite3/buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"  .include "../../mk/bsd.pkg.mk"
 {% endhighlight %}  """]]
   
 DESCR:  DESCR:
                   
Line 200  these targets, like Line 200  these targets, like
 The framework uses an `mk.conf` file, usually found in /etc. Here's  The framework uses an `mk.conf` file, usually found in /etc. Here's
 how mine looks:  how mine looks:
   
 {% highlight make %}  [[!format make """
 # Tue Oct 15 21:21:46 CEST 2013  # Tue Oct 15 21:21:46 CEST 2013
   
 .ifdef BSD_PKG_MK          # begin pkgsrc settings  .ifdef BSD_PKG_MK          # begin pkgsrc settings
Line 232  PKG_DEVELOPER=             yes Line 232  PKG_DEVELOPER=             yes
 SIGN_PACKAGES=             gpg  SIGN_PACKAGES=             gpg
 PKG_DEFAULT_OPTIONS+=      -pulseaudio -x264 -imlib2-amd64 -dconf  PKG_DEFAULT_OPTIONS+=      -pulseaudio -x264 -imlib2-amd64 -dconf
 .endif                     # end pkgsrc settings  .endif                     # end pkgsrc settings
 {% endhighlight %}  """]]
   
 - I use `DISTDIR`, `PACKAGES`, `WRKOBJDIR` to move distfiles,  - I use `DISTDIR`, `PACKAGES`, `WRKOBJDIR` to move distfiles,
   packages and source files somewhere else to keep my pkgsrc tree    packages and source files somewhere else to keep my pkgsrc tree
Line 316  on the program's homepage. Line 316  on the program's homepage.
 Here's how they look like at the moment:  Here's how they look like at the moment:
                   
 Makefile:  Makefile:
 {% highlight make %}  [[!format make """
 # [[!paste id=rcsid1]][[!paste id=rcsid2]]  # [[!paste id=rcsid1]][[!paste id=rcsid2]]
   
 DISTNAME=       2bwm-0.1  DISTNAME=       2bwm-0.1
Line 329  COMMENT=        Fast floating WM written Line 329  COMMENT=        Fast floating WM written
 LICENSE=        isc  LICENSE=        isc
   
 .include "../../mk/bsd.pkg.mk"  .include "../../mk/bsd.pkg.mk"
 {% endhighlight %}  """]]
   
 distinfo:  distinfo:
   
Line 399  in our Makefile. Line 399  in our Makefile.
 Clean, build again, and add more dependencies until it passes the  Clean, build again, and add more dependencies until it passes the
 build stage. Here's how my Makefile ends up looking like:  build stage. Here's how my Makefile ends up looking like:
   
 {% highlight make %}  [[!format make """
 # [[!paste id=rcsid1]][[!paste id=rcsid2]]  # [[!paste id=rcsid1]][[!paste id=rcsid2]]
   
 DISTNAME=       2bwm-0.1  DISTNAME=       2bwm-0.1
Line 416  LICENSE=        isc Line 416  LICENSE=        isc
 .include "../../x11/xcb-util-keysyms/buildlink3.mk"  .include "../../x11/xcb-util-keysyms/buildlink3.mk"
 .include "../../x11/xcb-util/buildlink3.mk"  .include "../../x11/xcb-util/buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"  .include "../../mk/bsd.pkg.mk"
 {% endhighlight %}  """]]
   
   
 #### install phase  #### install phase
Line 456  how 2bwm installs: Line 456  how 2bwm installs:
   
 From 2bwm's Makefile:  From 2bwm's Makefile:
   
 {% highlight make %}  [[!format make """
 install: $(TARGETS)  install: $(TARGETS)
         test -d $(DESTDIR)$(PREFIX)/bin || mkdir -p $(DESTDIR)$(PREFIX)/bin          test -d $(DESTDIR)$(PREFIX)/bin || mkdir -p $(DESTDIR)$(PREFIX)/bin
         install -pm 755 2bwm $(DESTDIR)$(PREFIX)/bin          install -pm 755 2bwm $(DESTDIR)$(PREFIX)/bin
Line 464  install: $(TARGETS) Line 464  install: $(TARGETS)
         test -d $(DESTDIR)$(MANPREFIX)/man1 || mkdir -p $(DESTDIR)$(MANPREFIX)/man1          test -d $(DESTDIR)$(MANPREFIX)/man1 || mkdir -p $(DESTDIR)$(MANPREFIX)/man1
         install -pm 644 2bwm.man $(DESTDIR)$(MANPREFIX)/man1/2bwm.1          install -pm 644 2bwm.man $(DESTDIR)$(MANPREFIX)/man1/2bwm.1
         install -pm 644 hidden.man $(DESTDIR)$(MANPREFIX)/man1/hidden.1          install -pm 644 hidden.man $(DESTDIR)$(MANPREFIX)/man1/hidden.1
 {% endhighlight %}  """]]
   
 This looks fine since it installs in a `DESTDIR`/`PREFIX` but it sets  This looks fine since it installs in a `DESTDIR`/`PREFIX` but it sets
   
Line 554  You should be able to fix the prefix err Line 554  You should be able to fix the prefix err
 the patching explained above thanks to the sed substitution framework.  the patching explained above thanks to the sed substitution framework.
 Here's how it looks like in my port Makefile:  Here's how it looks like in my port Makefile:
   
 {% highlight make %}  [[!format make """
 SUBST_CLASSES+=         makefile  SUBST_CLASSES+=         makefile
 SUBST_STAGE.makefile=   pre-build  SUBST_STAGE.makefile=   pre-build
 SUBST_MESSAGE.makefile= Fixing makefile  SUBST_MESSAGE.makefile= Fixing makefile
 SUBST_FILES.makefile=   Makefile  SUBST_FILES.makefile=   Makefile
 SUBST_SED.makefile=     -e 's,/usr/local,${PREFIX},g'  SUBST_SED.makefile=     -e 's,/usr/local,${PREFIX},g'
 SUBST_SED.makefile+=    -e 's,share/man,${PKGMANDIR},g'  SUBST_SED.makefile+=    -e 's,share/man,${PKGMANDIR},g'
 {% endhighlight %}  """]]
   
 As you can see, you can do multiple commands on multiple files, it  As you can see, you can do multiple commands on multiple files, it
 is very useful for very small fixes like this.  is very useful for very small fixes like this.
Line 617  You can also send me an email or talk to Line 617  You can also send me an email or talk to
 You can create port options with the `options.mk` file, like for `wm/dwm`  You can create port options with the `options.mk` file, like for `wm/dwm`
   
                   
 {% highlight make %}  [[!format make """
 # [[!paste id=rcsid1]][[!paste id=rcsid2]]  # [[!paste id=rcsid1]][[!paste id=rcsid2]]
   
 PKG_OPTIONS_VAR=                        PKG_OPTIONS.dwm  PKG_OPTIONS_VAR=                        PKG_OPTIONS.dwm
Line 642  SUBST_FILES.options=    config.mk Line 642  SUBST_FILES.options=    config.mk
 SUBST_SED.options+=     -e '/^XINERAMA/d'  SUBST_SED.options+=     -e '/^XINERAMA/d'
 .  include "../../x11/libX11/buildlink3.mk"  .  include "../../x11/libX11/buildlink3.mk"
 .endif  .endif
 {% endhighlight %}  """]]
   
 This file should be included in the Makefile:  This file should be included in the Makefile:
   
Line 682  on a FreeBSD server with a bootstrapped  Line 682  on a FreeBSD server with a bootstrapped 
   
 I use this `zsh` function to :  I use this `zsh` function to :
   
 {% highlight bash %}  [[!format make """
 add () {  add () {
         # upload the package to remote server          # upload the package to remote server
         scp $1 yrmt@saveosx.org:/usr/local/www/saveosx/packages/Darwin/2013Q4/x86_64/All/ 2> /dev/null          scp $1 yrmt@saveosx.org:/usr/local/www/saveosx/packages/Darwin/2013Q4/x86_64/All/ 2> /dev/null
Line 695  add () { Line 695  add () {
         # pkgin update          # pkgin update
         sudo pkgin update          sudo pkgin update
 }  }
 {% endhighlight %}  """]]
   
 - upload a package  - upload a package
 - update the package summary, which is an archive containing  - update the package summary, which is an archive containing
Line 735  add () { Line 735  add () {
 And this shell alias to upload all my built packages, but I still  And this shell alias to upload all my built packages, but I still
 need to run `add()` mentionned above to update the pkg_summary  need to run `add()` mentionned above to update the pkg_summary
   
 {% highlight bash %}  [[!format bash """
 up='rsync -avhz --progress /pkgsrc/packages/ root@saveosx.org:/usr/local/www/saveosx/packages/Darwin/2013Q4/x86_64/'  up='rsync -avhz --progress /pkgsrc/packages/ root@saveosx.org:/usr/local/www/saveosx/packages/Darwin/2013Q4/x86_64/'
 {% endhighlight %}  """]]
   
 Then you should be able to set the url in repositories.conf to use  Then you should be able to set the url in repositories.conf to use
 your packages with pkgin. You can also install them directly with  your packages with pkgin. You can also install them directly with
Line 767  earlier like this: Line 767  earlier like this:
   
 pkgsrc supports fetching archives from specific git commits on  pkgsrc supports fetching archives from specific git commits on
 GitHub like this:  GitHub like this:
 {% highlight make %}  [[!format make """
 PKGNAME=           2bwm-0.1  PKGNAME=           2bwm-0.1
 CATEGORIES=        wm  CATEGORIES=        wm
 GHCOMMIT=          52a097ca644eb571b22a135951c945fcca57a25c  GHCOMMIT=          52a097ca644eb571b22a135951c945fcca57a25c
Line 775  DISTNAME=          ${GHCOMMIT} Line 775  DISTNAME=          ${GHCOMMIT}
 MASTER_SITES=      https://github.com/venam/2bwm/archive/  MASTER_SITES=      https://github.com/venam/2bwm/archive/
 DIST_SUBDIR=       2bwm  DIST_SUBDIR=       2bwm
 WRKSRC=            ${WRKDIR}/2bwm-${GHCOMMIT}  WRKSRC=            ${WRKDIR}/2bwm-${GHCOMMIT}
 {% endhighlight %}  """]]
   
 You can then easily update the git commit and the distinfo with it  You can then easily update the git commit and the distinfo with it
 to update the program.  to update the program.
Line 786  You can do all Makefile operations direc Line 786  You can do all Makefile operations direc
 like this:  like this:
   
   
 {% highlight make %}  [[!format make """
 post-extract:  post-extract:
         ${CHMOD} a-x ${WRKSRC}/elementary/apps/48/internet-mail.svg          ${CHMOD} a-x ${WRKSRC}/elementary/apps/48/internet-mail.svg
   
 do-install:  do-install:
         ${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/icons          ${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/icons
         cd ${WRKSRC} && pax -rw -pe . ${DESTDIR}${PREFIX}/share/icons/          cd ${WRKSRC} && pax -rw -pe . ${DESTDIR}${PREFIX}/share/icons/
 {% endhighlight %}  """]]
   
 To install, but you can also build programs from the Makefile. This  To install, but you can also build programs from the Makefile. This
 is what qt4-sqlite3 uses:  is what qt4-sqlite3 uses:
   
 {% highlight make %}  [[!format make """
 do-build:  do-build:
         cd ${WRKSRC}/src/tools/bootstrap && env ${MAKE_ENV} ${GMAKE}          cd ${WRKSRC}/src/tools/bootstrap && env ${MAKE_ENV} ${GMAKE}
         cd ${WRKSRC}/src/tools/moc && env ${MAKE_ENV} ${GMAKE}          cd ${WRKSRC}/src/tools/moc && env ${MAKE_ENV} ${GMAKE}
         cd ${WRKSRC}/src/plugins/sqldrivers/sqlite && env ${MAKE_ENV} ${GMAKE}          cd ${WRKSRC}/src/plugins/sqldrivers/sqlite && env ${MAKE_ENV} ${GMAKE}
 {% endhighlight %}  """]]
   
   
 You can install the following type of files:  You can install the following type of files:

Removed from v.1.3  
changed lines
  Added in v.1.4


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb