Packaging:D

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Compiler options)
Line 50: Line 50:
 
-w ''enable warnings''<BR>
 
-w ''enable warnings''<BR>
 
-g ''generate debug information''<BR>
 
-g ''generate debug information''<BR>
 +
 +
== SPEC template ==
 +
here an template for D package with static libraries
 +
<pre>
 +
Name:
 +
Version:
 +
Release:        1%{?dist}
 +
Summary:        Development/Libraries
 +
 +
 +
Group:
 +
License:
 +
URL:
 +
Source0:
 +
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 +
 +
BuildRequires: ldc
 +
Requires:      tango
 +
 +
%description
 +
 +
%package devel
 +
Provides:      %{name}-static =  %{version}-%{release}
 +
Summary:        Support for developing D application
 +
Group:          Development/Libraries
 +
 +
%prep
 +
%setup -q
 +
 +
 +
%build
 +
%configure
 +
make %{?_smp_mflags}
 +
 +
 +
%install
 +
rm -rf %{buildroot}
 +
make install DESTDIR=%{buildroot}
 +
 +
 +
%clean
 +
rm -rf %{buildroot}
 +
 +
 +
%files devel
 +
%defattr(-,root,root,-)
 +
%doc README.txt LICENSE.txt
 +
%{_d_includedir}/%{name}
 +
%{_libdir}/%{name}/<static-libraries.a>
 +
%changelog
 +
 +
</pre>
  
 
[[Category:Packaging guidelines]]
 
[[Category:Packaging guidelines]]

Revision as of 13:54, 28 July 2010

Revision: 0.1
Last Revised: Wednesday Jul 28, 2010

Contents

Packaging Tips

File Locations

Libraries

D packages must install assemblies to %{_libdir} rather than /usr/lib or %{_datadir}.

Header

D package must install header file like .d or .di to %{_d_includedir}/%{name}

Libraries

At this time in D programming only OS X support shared lirbraries. So wait this feature or help ldc project. Feel free.
For build static librarie in D you need use ar and ranlib tools. ldc compiler support GNU strip.
short example from makefile:

DC=ldc
HD=-Hd $(IMPORT_DEST)
DFLAGS_REQ=-c -I ../DerelictUtil
AL_SRC= \
    derelict/openal/al.d \
    derelict/openal/alfuncs.d \
    derelict/openal/altypes.d   
    
PACKAGE_PATH=derelict/openal

all : DerelictAL

$(LIB_PRE)DerelictAL.$(LIB_EXT) :
	$(DC) $(DFLAGS) $(DFLAGS_REQ) $(AL_SRC) $(HD)/$(PACKAGE_PATH)
	$(AR) rcs $@ $^
	$(RANLIB) $@
	$(CP) $@ $(LIB_DEST)
	$(RM) $@

Macros

All D package need ldc for build and macro file is in ldc package, every package must have ldc in BuildRequire

Include directories

%{_d_includedir} need be used for devel file
%{_d_includedir} define /usr/include/d/ directory

Compiler options

%{_d_optflags} need be used for ldc options
%{_d_optflags} define options -release -w -g
-release disables asserts, invariants, contracts and boundscheck
-w enable warnings
-g generate debug information

SPEC template

here an template for D package with static libraries

Name:
Version:
Release:        1%{?dist}
Summary:        Development/Libraries


Group:
License:
URL:
Source0:
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: ldc
Requires:      tango

%description

%package devel
Provides:       %{name}-static =  %{version}-%{release}
Summary:        Support for developing D application
Group:          Development/Libraries

%prep
%setup -q


%build
%configure
make %{?_smp_mflags}


%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}


%clean
rm -rf %{buildroot}


%files devel
%defattr(-,root,root,-)
%doc README.txt LICENSE.txt
%{_d_includedir}/%{name}
%{_libdir}/%{name}/<static-libraries.a>
%changelog