Erfaringer med build og installation af Ding2
For ding-udviklere er det spændende at bygge og installere Ding2 kodebasen og de fleste har sikkert allerede gjort det. Jeg gik selv i gang for et par dage siden og løb ind i nogle bump undervejs, som jeg vil dele med jer andre. Da Ding2 er under udvikling er det jeg skriver sikkert forældet om ganske kort tid og jeg hæfter ikke for at min vejlededning virker.
Build af DING2
Jeg forkede ding2 på Github og lavede følgende ændring i ding2.make.
Derefter lavede jeg build'et på en Ubuntu-box, der kører PHP 5.3 og Drush 4.5 og Drush_make 2.3 præcis som vejledningen foreskriver. Jeg oplevde at ding2-make scriptet ikke fungerer med Drush 5. Jeg prøvede også at bygge på PHP 5.2 og det virkede heller ikke.
Inden man går i gang, skal man sikre sig, at man kan bruge git-protokollen. Git-protokollen virker ofte ikke bag coorporate firewalls og det er altså strengt nødvendigt at det virker for at kunne bygge ding2. Afprøv fra en command line at du rent faktisk er i stand til at klone et vilkårligt repo fra Github vha. git-protokollen.
Installation
Der står i ding2-modulerne at de afhænger af PHP 5.2.4, så jeg flyttede den færdigbyggede installationsprofil over på en anden Ubuntu-box der kører PHP 5.2.10. Det er lidt tricky når alle nyere Linux distributioner kommer med PHP 5.3, men der er en del vejledninger derude der hjælper på vej i forhold til at nedgradere.
Jeg har ikke kunnet få den grafiske installer til at fungere og har installeret via drush site-install. En drilsk finesse er at ding2 installationsprofilen pt. ikke virker med nyeste Drupal-core version. Seneste version der virker er Drupal 7.10.
Kommentarer
God opsummering
Tak for en god opsummering af dine erfaringer, Agnete ! Pt. er mange af dine observationer stadig relevante.
Hvis du synes dokumentationen af installationsprocessen på GitHub kunne forbedres, så kan du jo foreslå en opdateringen ved at trykke "Edit this file". Dine forslag vil så blive oprettet som et pull request, så det kan også være en meget nem og ufarlig måde at komme mere ind på livet af det arbejdsflow.
To rettelser
Tak for kommenatren, Kasper :-) Jeg vil prøve at foreslå nogle tilføjelser til installationsvejledningen på Github.
1. Nu kan jeg få build af ding2 til at fungere på PHP 5.2. Jeg har nok bare set spøgelser her.
2. Det er ikke længere nødvendigt at forke ding2 og ændre ding2.make. Nu virker det bare!
Jeg kan bekræfte Agnetes
Jeg kan bekræfte Agnetes oplevelse. Jeg fik lavet build som kunne installeres. Mit miljø er windows, og jeg kører virtual machine (se http://drupal.org/project/quickstart). Setup hos mig er dermed Ubuntu Linux, PHP 5.3 og drush 4.4.
I kan med fordel smide et
I kan med fordel smide et var_dump ind i scriptet (og evt. logge til en fil, så det ikke flyder i terminalen), og se hvor det måtte gå galt under et deploy.
Er der andre der oplever problemer med at ding_library sluger over 1GB memory under installation?
Drupal 7.10
Jeg oplevede med drupal 7.12 at scriptet passerede 1GB ram forbrug og stadig ikke kunne komme i mål.
Da jeg istedet benyttede Drupal 7.10 kørte det glat.
Jeg har endnu ikke testet med 7.14
Ding_library virker ikke på Drupal > 7.10
Ding_library er et modul som indeholder undermodulet ding_library_menu, som ændrer på menustrukturen i Drupal. Fra Drupal 7.12 fungerer ding_library_menu ikke længere, da ding_library_menu_menu_alter() – hook_menu_alter() – bliver kaldt flere gange under installationen i en løkke, hvilket giver et stort RAM-forbrug indtil PHP detekterer løkken og fejler.
Der er i Drupal 7.12 sket en ændring af menu-modulet, men dette skulle ikke påvirke eksekveringen, så der skabes en løkke—rekursive kald til ding_library_menu_menu_alter(). Jeg har dog ikke haft tid til nærmere efterforskning, og vil heller ikke få det, så mit bud på en løsning vil at detektere anden gang ding_library_menu_menu_alter() bliver kaldt og så gøre noget andet såsom blot at returnere.
Det optimale vil selvfølgelig være at finde den ændring fra Drupal 7.10 til 7.12, som skaber denne løkke, og så rette ding_library_menu herefter.
Indtil der er fundet en fungerende løsning vil der ikke kunne opgraderes til versioner højere end Drupal 7.10.
Jeg tror det er linje 2408 i
Jeg tror det er linje 2408 i drupal 7.10's menu.inc, der forhindrer rekursion igennem funktionerne ding_library_menu_menu_alter -> _ding_libary_menu_rebuild -> menu_link_get_preferred -> menu_get_item -> menu_rebuild -> menu_router_build -> drupal_alter -> ding_library_menu_menu_alter ...
En løsning kunne måske være at undgå brug af menu_link_get_preferred, eller som du siger, forhindre genudførsel af ding_library_menu_menu_alter via:
if ($been_here = &drupal_static(__FUNCTION__, FALSE)) return;
$been_here = true;
Man kunne også overveje at
Man kunne også overveje at fjerne det som dependency, idet ikke alle biblioteker ønsker denne ekstra menu - også lade det være en option at aktivere.
Har også oplevet problemer...
Jeg har også oplevet problemer med 7.12, fik dog problemet løst ved at oprette et nyt ding2-7.12 platform i Aegir hosting systemet og fik migrerede 7.10 til 7.12.
Har også oplevet problemer...
Jeg har også oplevet problemer med 7.12, fik dog problemet løst ved at oprette et nyt ding2-7.12 platform i Aegir hosting systemet og fik migrerede 7.10 til 7.12.